系統架構與hystrix具體要實現的目標以及方法!

什麼是hystrix?

在分佈式系統中,每個服務都可能會調用很多其他服務,被調用的那些服務就是依賴服務,有的時候某些依賴服務出現故障也是很正常的。

系統架構與hystrix具體要實現的目標以及方法!

hystrix要解決的問題?

在複雜的分佈式系統架構中,每個服務都有很多的依賴服務,而每個依賴服務都可能會故障,如果服務沒有和自己的依賴服務進行隔離,那麼可能某一個依賴服務的故障就會拖垮當前這個服務。hystrix就是通過相應方法來阻止當前服務被拖垮的一個容錯框架!

系統架構與hystrix具體要實現的目標以及方法!

hystrix使用艙壁模式(bulkhead pattern)來隔離依賴和限制併發訪問。

每個依賴使用獨立的線程池以保證併發請求是受約束的。底層執行的延遲將只會在對應線程池中耗盡所有的可用線程。使用信號來取代線程池也是一種選擇,這樣可以進行降載(load shedding)而非超時。

系統架構與hystrix具體要實現的目標以及方法!

1、在一個單獨的線程中通過 HystrixCommand 或 HystrixObservableCommand 對象包裝所有外部系統(或依賴)的調用。

2、調用超時比設置的閾值更長。雖然有默認值,但是大多數依賴自己配置的這些超時“屬性”,所以每個依賴都略高於實測性能的99.5%。

系統架構與hystrix具體要實現的目標以及方法!

3、為每個依賴保持一個小的線程池;如果線程池滿了,新來的請求會立即拒絕掉,而不是排隊等候。

4、測試成功、失敗(客戶端拋出異常)、超時和線程拒絕。

系統架構與hystrix具體要實現的目標以及方法!

5、當請求失敗、被拒、超時或者短路時的性能反饋邏輯。

6、準實時的監控指標和配置改變。


分享到:


相關文章: