golang--零下線時間式重啓

在Hacker News看到用Go達到Zero-downtime restarts,意思大概爲零下線時間式重啓,很早就知道nginx能夠輕鬆作到平滑重啓,一直都想用go來實現這樣的功能。看了一下它的代碼實現,因此有了這篇博文。nginx

項目名字叫goagain,地址在:https://github.com/rcrowley/goagain。該項目是一個類庫,也就是package,在go開發的程序中添加這個package就能夠輕鬆地重啓程序。git

goagain會監控2個系統信號,一個爲SIGTERM,接收到這個信號,程序就中止運行。另外一個信號爲SIGUSR2,接收到這個信號的行爲是,當前進程,也就是父進程會新建一個子進程,而後把父進程的pid保存到一個名爲GOAGAIN_PPID的環境變量;子進程啓動的時候會檢索GOAGAIN_PPID這個變量,來判斷程序是否要重啓,經過這個變量來關閉父進程,來達到平滑重啓的效果。github

goagain項目裏面有一個例子,按照這個例子,咱們就能夠按照需求打造本身的程序。我我的測試了一下例子,可以運行,效果不錯。下面是截圖效果。測試

 

轉貼請註明來自:格通spa

相關文章
相關標籤/搜索