golang--零下线时间式重启

getong · · 6783 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在Hacker News看到用Go达到Zero-downtime restarts,意思大概为零下线时间式重启,很早就知道nginx可以轻松做到平滑重启,一直都想用go来实现这样的功能。看了一下它的代码实现,所以有了这篇博文。

项目名字叫goagain,地址在:https://github.com/rcrowley/goagain。该项目是一个类库,也就是package,在go开发的程序中添加这个package就可以轻松地重启程序。

goagain会监控2个系统信号,一个为SIGTERM,接收到这个信号,程序就停止运行。另一个信号为SIGUSR2,接收到这个信号的行为是,当前进程,也就是父进程会新建一个子进程,然后把父进程的pid保存到一个名为GOAGAIN_PPID的环境变量;子进程启动的时候会检索GOAGAIN_PPID这个变量,来判断程序是否要重启,通过这个变量来关闭父进程,来达到平滑重启的效果。

goagain项目里面有一个例子,按照这个例子,我们就可以按照需求打造自己的程序。我个人测试了一下例子,能够运行,效果不错。下面是截图效果。

 

转贴请注明来自:格通


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:getong

查看原文:golang--零下线时间式重启

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6783 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传