netflix hystrix介紹 使用

背景:

分布式環(huán)境下,系統(tǒng)間的依賴可能會十分龐大,復雜,一個請求可能會經過多個依賴服務,最后完成相應。

hystrix可幫助隔離每個服務,使單個服務的響應失敗,不影響整個請求的響應。甚至,可預定義單個服務失敗

后的響應。有了hystrix的容錯,熔斷機制,可極大提升整個服務的可靠,可用性。


如何解決:

1,hystrix作用在客戶端,客戶端程序依賴hystrix相關的第三方包,使得客戶端與所依賴的服務,形成線程隔離。依賴服務的延遲與失敗變的可控。保護調用者線程的執(zhí)行。

2,避免了分布式系統(tǒng)中,單個組件的失敗導致的級聯影響。

3,快速失敗,迅速恢復。 ?hystrix有這快速失敗機制,單個組件服務失敗率到一定程度后,再請求,會直接響應失敗。再這之后,會有重試機制。

減少系統(tǒng)在錯誤服務調用上的開銷。

4,降級應用

5,實時的監(jiān)控

hystrix的設計原則:

1,防止任何單個依賴服務耗盡所有用戶線程,

2,直接響應失敗,而不是一直等待。

3,提供錯誤返回接口,而不是讓用戶線程直接處理依賴服務拋出的異常。

4,使用隔離或熔斷技術來降低并限制單個依賴對整個系統(tǒng)造成的影響。

hystrix如何解決上述問題:

1,將對外部系統(tǒng)的請求,使用HystrixCommand包裝,并使用單獨的線程執(zhí)行。

2,可對服務請求設置timeout,超時后,直接返回,可根據平時監(jiān)控,查看該服務95%的請求的rt為多少進行設置

3,維護一個小的線程池在客戶端,專門處里對指定服務的請求,當線程使用量超過線程池容量時,直接返回響應,

? ? ? 而不是排隊等待處里。

4,觸發(fā)熔斷來停止所有對指定服務的請求在一定時間范圍內,可手動,可自動,針對該服務請求的錯誤數百分比。

5,對超時,失敗,或者熔斷,做特殊錯誤返回處理fallback.


使用:

引入maven依賴


上例展示了如何基本的使用hystrix,使用時,定義commandGroup,設置線程池,定義超時時間,以及錯誤返回

超時時間也可以在調用處定義。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容