Hystrix自恢復模式

服務的健康狀況 = 請求失敗數 / 請求總數.
熔斷器開關由關閉到打開的狀態轉換是通過當前服務健康狀況和設定閾值比較決定的.
- 當熔斷器開關關閉時, 請求被允許通過熔斷器. 如果當前健康狀況高於設定閾值, 開關繼續保持關閉. 如果當前健康狀況低於設定閾值, 開關則切換為打開狀態.
- 當熔斷器開關打開時, 請求被禁止通過.
- 當熔斷器開關處於打開狀態, 經過一段時間后, 熔斷器會自動進入半開狀態, 這時熔斷器只允許一個請求通過. 當該請求調用成功時, 熔斷器恢復到關閉狀態. 若該請求失敗, 熔斷器繼續保持打開狀態, 接下來的請求被禁止通過.

- 構建Hystrix的Command對象, 調用執行方法.
- Hystrix檢查當前服務的熔斷器開關是否開啟, 若開啟, 則執行降級服務getFallback方法.
- 若熔斷器開關關閉, 則Hystrix檢查當前服務的線程池是否能接收新的請求, 若超過線程池已滿, 則執行降級服務getFallback方法.
- 若線程池接受請求, 則Hystrix開始執行服務調用具體邏輯run方法.
- 若服務執行失敗, 則執行降級服務getFallback方法, 並將執行結果上報Metrics更新服務健康狀況.
- 若服務執行超時, 則執行降級服務getFallback方法, 並將執行結果上報Metrics更新服務健康狀況.
- 若服務執行成功, 返回正常結果.
- 若服務降級方法getFallback執行成功, 則返回降級結果.
- 若服務降級方法getFallback執行失敗, 則拋出異常.

熔斷器是否開啟,是通過滾筒式統計方式,統計一個窗口期內,失敗請求數所占的比例,如果低於閾值,打開熔斷器,高於則處於關閉狀態。
Hystrix就好比,一個人被毒蛇咬了一口,與其讓毒性擴散到全身,倒不如自斷手臂,至少這樣能夠繼續活下去。To be or not to be,That's a question,需要我們做出選擇,去斷舍離。hystrix,自恢復隔離模式,讓你的系統更穩定,財富收益更穩健。
轉自:https://zhuanlan.zhihu.com/p/63773699