1. 程式人生 > >hystrix文檔翻譯之概述

hystrix文檔翻譯之概述

外部 定義 man 功能 容錯 翻譯 並且 time strong

Hystrix是什麽

  在一個大型的分布式系統中,難免有些依賴服務會失敗。hystrix通過容錯邏輯來控制不同服務間的交互。hystrix通過隔離各服務交互節點來防止連級錯誤,並且提供降級功能,最終保證系統的可靠性。

hystrix的歷史

  略

hystrix作用

  hystrix被設計來解決一下問題:

  • 通過控制調用第三方包時的延時和錯誤來提供保護。
  • 避免復雜系統的連級錯誤。
  • 對於錯誤快速失敗和恢復。
  • 當異常出現是提供降級服務。
  • 實時的監控,高警,和其他控制選項。

hystrix解決哪些問題

  一個復雜的分布式系統有大量的依賴服務,這些依賴服務在某些時刻難免會發生錯誤。如果這個系統沒有對依賴服務進行隔離,它很容易因為依賴服務的異常而導致整個應用的掛機。

  舉一個例子,有一個應用依賴了30個服務,每個服務有99.99%的時間是正常的。

  所以你可能認為對於整個系統而言,99.9930=99.7%的時間是正常的。一億次請求會有3000000次失敗,每個月會有2個小時的宕機時間。

  而實際的情況可能更差。每個依賴服務0.01%的異常,都可能導致整個系統可能潛在的宕機。

  健康的系統的請求流程如下:

技術分享圖片

  如果其中一個依賴服務出現延時,它將阻塞整個系統。

技術分享圖片

  在一個高並發的系統中,依賴服務的延時將會導致整個系統在極端的時間內資源耗盡。如果應用的並發量超過了依賴服務的處理能力,可能會導致請求失敗,更壞的情況可能導致系統各類資源的耗盡從而引起連級錯誤。  技術分享圖片

  很多時候第三方服務如同一個黑盒對外封閉,並且隨時可能變更。而每個調用方的處理能力有不同。網絡失敗,服務延時,新的client部署,client包有bug,所有這些問題都會導致整個系統宕機。

  所以我們需要管理和隔離這些問題,避免一個服務失敗導致整個系統宕機。

  hystrix設計原則:

  • 阻止依賴服務使用容器線程。
  • 快速失敗來代替等待。
  • 提供降級功能。
  • 使用隔離技術來限制每個依賴的影響。
  • 通過實時metrics、監控、報警來來發現異常。
  • 使用實時配置來幫助系統恢復。
  • 控制第三方調用。

hystrix實現策略

  hystrix做了一下工作來保證系統穩定性。

  • 通過HystrixCommand或HystrixObservableCommand來封裝和隔離所有的外部調用。
  • 定義外部服務調用的timeout時間。
  • 為每一個外部服務都維護一個獨立的線程池,當請求超過線程池處理能力時,將會直接拒絕。
  • 記錄成功,失敗,timeout,線程池拒絕信息。
  • 對於異常比例超過指定值的服務,進行熔斷操作。
  • 提供降級功能,當請求執行失敗,拒絕,超時,熔斷。
  • 實時監控metrics和配置。

  當使用hystrix來封裝外部依賴時,如下圖所示,所有的依賴都相互隔離。當異常出現時,系統會執行相應的降級邏輯。

技術分享圖片

  

    

  

hystrix文檔翻譯之概述