亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang grpc 如何進行熱重啟 graceful?

golang grpc 如何進行熱重啟 graceful?

Go
LEATH 2019-02-05 20:06:50
想使用php調用golang的grpc服務進行通信,但是怕在上線后 進行程序的修改,想在不停機的情況下進行修改程序,想知道golang的grpc服務如何進行熱重啟
查看完整描述

4 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

一般后端服務會有冗余部署,前端通過 elb 中間層訪問,或者使用 consul 之類的服務注冊發現機制,串行重啟或者分批次重啟,可以做到不停服

熱重啟這種基本上沒有吧,但是可以不重啟,把把變化的項做成配置文件,熱加載配置文件是可行的


查看完整回答
反對 回復 2019-03-16
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

其實你是擔心直接重啟服務, 會有處理到一半的請求被中斷了, 導致尷尬的局面.
你要的并不是熱重啟, 而是優雅關閉.
grpc框架支持優雅關閉的.
基本原理是, 你監聽一個信號, 收到信號時調用grpc的GracefulStop接口, 這時grpc會首先關閉對外監聽的fd, 這時就不會有新的請求進來. 而已經在處理的請求則會繼續處理完, 然后再關閉服務.
在grpc關閉對外監聽的fd后的那個瞬間, 你其實可以啟動你的新程序了, 所以基本上中斷時間很短, 而原來處理著的請求并不會有問題.

查看完整回答
反對 回復 2019-03-16
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

熱重啟原理,基本就是 弄個類似runtime的全局的變量組,把平時運行時的常量、加載的東西全部掛到這個上面,然后重啟時候收到信號,對這個變量組的值,進行克隆,舊的上面關,新的上面開。該關閉重開的重開,該重新加載的加載。

查看完整回答
反對 回復 2019-03-16
  • 4 回答
  • 0 關注
  • 1213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號