我剛剛閱讀Hystrix指南,並試圖圍繞默認斷路器和恢復期如何操作,然後如何定製其行爲。顯然,如果電路跳閘,Hystrix將自動調用命令的getFallBack()
方法;這我瞭解。但是首先要考慮的是什麼標準?理想情況下,我想嘗試多次提供支持服務(例如,最多3次嘗試),然後再考慮服務處於離線/不健康狀態並斷開斷路器。 我怎麼能實現這一點,並在哪裏?Hystrix:定製電路斷路器和恢復邏輯
但我想如果我重寫默認斷路器,我還必須重寫任何機制處理默認恢復期。如果某後備服務下山的時候,可能有以下幾個原因之一:
- 有
- 這項服務是部署錯誤客戶端和服務器之間的網絡中斷,使得它不能返回有效的迴應客戶
- 客戶端部署與這使得它無法發送有效的請求到服務器
- 有些怪異,瞬時服務打嗝的(也許是服務做了重大的垃圾回收等) 錯誤
- 等
在大多數情況下,恢復期僅等待N秒,然後再次嘗試是不夠的。如果該服務存在缺陷,或者有人在數據中心中拉出了一些網絡電纜,我們將總是從該服務中失敗。只有在少數情況下,客戶服務機構纔會自動自我修復,而無需人爲干預。
所以我想我的下一個問題是局部的,但我想這主要是「如何自定義默認的恢復週期策略?」:「如何使用蝟當服務已關閉通知DEVOPS和需要人工干預「
優秀答案@ ahus1(+1) - 這裏只是好奇:如果目標服務再次變得健康,是否有辦法控制斷路器的重新閉合?換句話說,一個服務停機幾分鐘:希望斷路器跳閘並打開。現在,所有對該服務的調用都將導致'getFalllback'執行。但現在服務又恢復了健康。 Hystrix如何知道關閉斷路器並允許「運行」再次執行? – IAmYourFaja 2014-11-24 19:58:20
@IAmYourFaja:斷路器會在出現很多錯誤時觸發(默認情況下:一段時間內的錯誤超過50%)。之後,所有請求都將由後備處理(如果有的話)。幾秒鐘後(默認:5秒),首先將一個請求轉發到原始服務。如果這是成功的,則所有電路都會再次關閉,請求將再次轉發到原始服務。有關配置值,請參閱https://github.com/Netflix/Hystrix/wiki/Configuration。有關功能,請參閱https://github.com/Netflix/Hystrix/wiki/How-it-Works#CircuitBreaker。 – ahus1 2014-11-24 20:26:35
根據默認值,恢復檢查不會每5秒發生一次。每次調用原始服務時,在FAILURE上調用回退。任何機構都面臨這個問題? – lives 2017-01-14 07:03:31