Hystrix簡介&說明

Hystrix簡介&說明

Hystrix 介紹

  • Hystrix 是用於處理延遲和容錯的開源庫
  • Hystrix 主要用於避免級聯故障,提高系統彈性
  • Hystrix 解決了由於扇出導致的“雪崩效應”
  • Hystrix 的核心是“隔離”和“熔斷機制”

扇出示意圖:

file

Hystrix 主要作用

  • 服務隔離和服務熔斷
  • 服務降級、限流和快速失敗
  • 請求合併和請求緩存
  • 自帶單體和集羣監控

Hystrix 流程

file

  • 1、構建一個 HystrixCommand 或者 HystrixObservableCommand 對象

  • 2、執行命令

    有4種方式可以執行一個Hystrix命令。

    • execute() —該方法是阻塞的,從依賴請求中接收到單個響應(或者出錯時拋出異常)。
    • queue() —從依賴請求中返回一個包含單個響應的Future對象。
    • observe()—訂閱一個從依賴請求中返回的代表響應的Observable對象。
    • toObservable()—返回一個Observable對象,只有當你訂閱它時,它纔會執行Hystrix命令併發射響應。
  • 3、響應是否被緩存

  • 4、迴路器是否打開

  • 5、線程池、隊列、信號量是否已滿

  • 6、HystrixObservableCommand.construct() 或者 HystrixCommand.run()

  • 7、計算迴路指標[Circuit Health](業務執行成功、失敗、拒絕和超時)

  • 8、獲取FallBack

Hystrix 兩種命令模式

  • HystrixCommand 或者 HystrixObservableCommand
  • Command會以隔離的形式完成 run() 方法的調用
  • ObservableCommand使用當前線程進行調用

Hystrix 配置

GroupKey

  • Hystrix 中 GroupKey 是唯一必填項
  • GroupKey 可以作爲分組監控和報警的作用
  • GroupKey 將作爲線程池的默認名稱

CommandKey

  • Hystrix 可以不填寫 CommandKey
  • 默認 Hystrix 會通過反射類名命名 CommandKey
  • 在 Setting 中加入 andCommandKey 進行命名

Hystrix 請求特性

請求緩存

  • Hystrix 支持將請求結果進行本地緩存
  • 通過實現 getCacheKey 方法來判斷是否取出緩存
  • 請求緩存要求請求必須在同一個上下文
  • 可以通過 RequestCacheEnabled 開啓請求緩存(默認開啓)

請求合併

  • Hystrix 支持將多個請求合併成一次其你去
  • Hystrix 請求合併要求兩次請求必須足夠 “近”
  • 請求合併分爲局部合併和全局合併兩種
  • Collapser 可以設置相關參數

Hystrix 隔離

Hystrix 隔離簡介

  • Hystrix 提供了信號量和線程兩種隔離手段
  • 線程隔離會在單獨的線程中執行業務邏輯
  • 信號量隔離在調用線程上執行
  • 官方推薦優先線程隔離

線程隔離

  • 應用自身完全受保護,不會受其他依賴影響
  • 有效降低接入新服務的風險
  • 依賴服務出現問題,應用自身可以快速反應問題
  • 可以通過實時刷新動態屬性減少依賴問題影響

信號量隔離

  • 信號量隔離是輕量級的隔離術
  • 無網絡開銷的情況推薦使用信號量隔離
  • 信號量是通過計數器和請求線程比對進行限流

ThreadPoolKey

  • Hystrix 可以不填寫 ThreadPoolKey
  • 默認Hystrix會使用GroupKey 命名線程池
  • 在Setting中加入andThreadOPoolKey 進行命名

Hystrix 降級處理機制

降級介紹

  • 降級是一種無奈的“選擇”,俗稱“備胎” (^)
  • Command 降級需要實現fallback方法
  • ObservableCommand 降級實現 resumeWithFallback方法

降級觸發原則

  • HystrixBadRequestException 以外的異常
  • 運行超時或熔斷器處於開啓狀態
  • 線程池或信號量已滿

快速失敗

  • Hystrix 提供了快速失敗的機制
  • 當不實現fallback 方法時會將異常拋出

Hystrix 熔斷機制

熔斷器介紹

  • 熔斷器是一種開關,用來控制流量是否執行業務邏輯
  • 熔斷器核心指標
    • 快照時間窗
    • 請求總數閾值
    • 錯誤百分比閾值

熔斷器狀態

  • 熔斷器開啓: 所有請求都會進入fallback方法
  • 熔斷器半開啓: 間歇性讓請求觸發run方法
  • 熔斷器關閉: 正常處理業務請求
  • 默認情況下熔斷器開啓5秒後進入半開啓狀態

end

如有問題,請留言或者發送郵件,感謝您的閱讀

歡迎關注博主公衆號:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章