http://www.javashuo.com/article/p-raknoeuv-q.html網絡
Hystrix遵循的設計原則:ui
- 防止任何單獨的依賴耗盡資源(線程)
- 過載當即切斷並快速失敗,防止排隊
- 儘量提供回退以保護用戶免受故障
- 使用隔離技術(例如隔板,泳道和斷路器模式)來限制任何一個依賴的影響
- 經過近實時的指標,監控和告警,確保故障被及時發現
- 經過動態修改配置屬性,確保故障及時恢復
- 防止整個依賴客戶端執行失敗,而不單單是網絡通訊
Hystrix如何實現這些設計目標?.net
- 使用命令模式將全部對外部服務(或依賴關係)的調用包裝在HystrixCommand或HystrixObservableCommand對象中,並將該對象放在單獨的線程中執行;
- 每一個依賴都維護着一個線程池(或信號量),線程池被耗盡則拒絕請求(而不是讓請求排隊)。
- 記錄請求成功,失敗,超時和線程拒絕。
- 服務錯誤百分比超過了閾值,熔斷器開關自動打開,一段時間內中止對該服務的全部請求。
- 請求失敗,被拒絕,超時或熔斷時執行降級邏輯。
- 近實時地監控指標和配置的修改。