Dubbo優雅關機原理

2022-09-05 16:57:10 字數 539 閱讀 8488

dubbo是通過jdk的shutdownhook來完成優雅停機的

所以如果使用者使用 kill -9 pid 等強制關閉命令,是不會執行優雅停機的

只有通過 kill pid時,才會執行

原理:·服務提供方

·停止時,先標記為不接收新請求,新請求過來時直接報錯,讓客戶端重試其他機器。

·然後,檢測線程池中的執行緒是否正在執行,如果有,等待所有執行緒執行完成,除非超時,則強制關閉。

·服務消費方

·停止時,不在發起新的呼叫請求,所有新的呼叫在客戶端即報錯。

·然後,檢測有沒有請求的響應還沒有返回,等待響應返回,除非超時,則強制關閉。

設定優雅停機超時時間,預設超時時間是10秒:(超時則強制關閉)

如果shutdownhook不能生效,可以自行呼叫:

protocolconfig.destroyall();

Dubbo 優雅停機

對於任何乙個線上應用,如何在服務更新部署過程中保證客戶端無感知是開發者必須要解決的問題,即從應用停止到重啟恢復服務這個階段不能影響正常的業務請求。理想條件下,在沒有請求的時候再進行更新是最安全可靠的,然而網際網路應用必須要保證可用性,因此在技術層面上優化應用更新流程來保證服務在更新時無損是必要的。傳...

Dubbo優雅停機

對於任何乙個線上應用,如何在服務更新部署過程中保證客戶端無感知是開發者必須要解決的問題,即從應用停止到重啟恢復服務這個階段不能影響正常的業務請求。理想條件下,在沒有請求的時候再進行更新是最安全可靠的,然而網際網路應用必須要保證可用性,因此在技術層面上優化應用更新流程來保證服務在更新時無損是必要的。傳...

Dubbo應用優雅停機實踐

網上相關的帖子很多,主要方法也都是加鉤子hook,這裡我對優雅停機進行了實踐 目前不管是dubbox apache的dubbo alibaba的dubbo都沒有實現真正意義上的優雅停機 截止20191231 標紅是重點,目前jar中自帶的hook並不能滿足先從註冊中心移除 再銷毀容器的順序,且啟用h...