Hystris【從無到有從有到無】簡述

1.簡介

Hystrix是由Netflix開源的一個延遲和容錯庫,用於隔離訪問遠程系統、服務或者第三方庫,防止級聯失敗,從而提升系統的可用性、容錯性與局部應用的彈性,是一個實現了超時機制和斷路器模式的工具類庫。

 

2.設計原則

  • 防止任何單獨的依賴耗盡資源(線程)
    過載立即切斷並快速失敗,防止排隊
  • 儘可能提供回退以保護用戶免受故障
  • 使用隔離技術(例如隔板,泳道和斷路器模式)來限制任何一個依賴的影響
  • 通過近實時的指標,監控和告警,確保故障被及時發現
  • 通過動態修改配置屬性,確保故障及時恢復
  • 防止整個依賴客戶端執行失敗,而不僅僅是網絡通信

 

3.工作原理

  • 使用命令模式將所有對外部服務(或依賴關係)的調用包裝在HystrixCommand或HystrixObservableCommand對象中,並將該對象放在單獨的線程中執行。
  • 每個依賴都維護着一個線程池(或信號量),線程池被耗盡則拒絕請求(而不是讓請求排隊)。
  • 記錄請求成功,失敗,超時和線程拒絕。
  • 服務錯誤百分比超過了閾值,熔斷器開關自動打開,一段時間內停止對該服務的所有請求。
  • 請求失敗,被拒絕,超時或熔斷時執行降級邏輯。
  • 近實時地監控指標和配置的修改。

【工作原理圖】

 

【參考的命令模式】

 

當使用Hystrix封裝每個基礎依賴項時,每個依賴項彼此隔離,受到延遲時發生飽和的資源的限制,幷包含回退邏輯,該邏輯決定了在依賴項中發生任何類型的故障時做出什麼響應。

 

4.項目整合

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

 

5.注意事項

  • 重要的是要記住,Hystrix命令和回退應放在同一類中,並具有相同的方法簽名(執行失敗異常的可選參數)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章