一: 问题提出
现如今大家写的netcore程序大多部署在linux平台上,而且服务程序里面可能会做各种复杂的操作,涉及到多数据源(mysql,redis,kafka)。成功部署成后台
进程之后,你以为这样就万事大吉了? 却不知当你更新代码时,暴力的kill掉这个进程导致你的业务出现数据不一致,业务流程被破坏等等问题。比如下面这段代码:
1. TestService
1 public class TestService 2 { 3 public static void Run() 4 { 5 while (true) 6 { 7 Console.WriteLine($"{DateTime.Now}: 1. 获取mysql"); 8 System.Threading.Thread.Sleep(2000); 9 Console.WriteLine($"{DateTime.Now}: 2. 获取redis"); 10 System.Threading.Thread.Sleep(2000); 11 Console.WriteLine($"{DateTime.Now}: 3. 更新monogdb"); 12 System.Threading.Thread.Sleep(2000); 13 Console.WriteLine($"{DateTime.Now}: 4. 通知kafka"); 14 System.Threading.Thread.Sleep(2000); 15 Console.WriteLine($"{DateTime.Now}: 5. 所有业务处理完毕"); 16 System.Threading.Thread.Sleep(2000); 17 } 18 } 19 }
2. Main程序
1 public static void Main(string[] args) 2 { 3 var bgtask = Task.Run(() => { TestService.Run(); }); 4 5

