天天看點

什麼是Hystrix?簡述Hystrix實作機制

1、分布式容錯架構

  • 阻止故障的連鎖反應,實作熔斷
  • 快速失敗,實作優雅降級
  • 提供實時的監控和告警

2、資源隔離:線程隔離,信号量隔離

  • 線程隔離:Hystrix會給每一個Command配置設定一個單獨的線程池,這樣在進行單個服務調用的時候,就可以在獨立的線程池裡面進行,而不會對其他線程池造成影響。
  • 信号量隔離:用戶端需向依賴服務發起請求時,首先要擷取一個信号量才能真正發起調用,由于信号量的數量有限,當并發請求量超過信号量個數時,後續的請求都會直接拒絕,進入fallback流程。信号量隔離主要是通過控制并發請求量,防止請求線程大面積阻塞,進而達到限流和防止雪崩的目的。

3、熔斷和降級:調用服務失敗後快速失敗。

  • 熔斷是為了防止異常不擴散,保證系統的穩定性。
  • 降級:編寫好調用失敗的補救邏輯,然後對服務直接停止運作,這樣這些接口就無法正常調用,但又不至于直接報錯,隻是服務水準下降。
  1. 通過HystrixCommand 或者HystrixObservableCommand 将所有的外部系統(或者稱為依賴)包裝起來,整個包裝對象是單獨運作在一個線程之中(這是典型的指令模式)。
  2. 逾時請求應該超過你定義的門檻值。
  3. 為每個依賴關系維護一個小的線程池(或信号量); 如果它變滿了,那麼依賴關系的請求将立即被拒絕,而不是排隊等待。
  4. 統計成功,失敗(由用戶端抛出的異常),逾時和線程拒絕。
  5. 打開斷路器可以在一段時間内停止對特定服務的所有請求,如果服務的錯誤百分比通過門檻值,手動或自動的關閉斷路器。
  6. 當請求被拒絕、連接配接逾時或者斷路器打開,直接執行fallback邏輯。
  7. 近乎實時監控名額和配置變化。