hystrix 单独使用_使用Hystrix对Dubbo消费者提供线程隔离保护
在dubbo中對于消費者的保護提供了actives進行并發控制保護,但是功能相對薄弱,下面我們探討下如何使用Netflix提供的服務容錯組件Hystrix對dubo消費者提供線程隔離保護
為什么需要Hystrix?
在大中型分布式系統中,通常我們需要依賴很多dubbo服務,如下圖:
在高并發訪問下,這些依賴的穩定性與否對系統的影響非常大,但是依賴有很多不可控問題:如網絡連接緩慢、資源繁忙、暫時不可用、服務脫機等。
如下圖:QPS為50的依賴 "I" 出現不可用、但是其他依賴仍然可用。
當依賴I 阻塞時,大多數服務器的線程池就出現阻塞,影響整個線上服務的穩定性。如下圖:
當高并發的依賴失敗時如果沒有隔離措施,當前應用服務就有被拖垮的風險!
例如:一個依賴30個SOA服務的系統,每個服務99.99%可用。
99.99%的30次方 ≈ 99.7%
0.3% 意味著一億次請求 會有 3,000,00次失敗
換算成時間大約每月有2個小時服務不穩定
隨著服務依賴數量的變多,服務不穩定的概率會成指數性提高。
解決問題方案:對依賴做隔離,Hystrix就是處理依賴隔離的框架,同時也是可以幫我們做依賴服務的治理和監控。
Hystrix如何解決依賴隔離
Hystrix使用命令模式HystrixCommand(Command)包裝依賴調用邏輯,每個命令在單獨線程中/信號授權下執行。
可配置依賴調用超時時間,當調用超時時,直接返回或執行fallback邏輯。
為每個依賴提供一個小的線程池(或信號),如果線程池已滿調用將被立即拒絕,默認不采用排隊,加速失敗判定時間。
請求失敗(異常,拒絕,超時,短路)時執行fallback(降級)邏輯。
提供熔斷器組件,可以自動運行或手動調用,停止當前依賴一段時間(10秒),熔斷器默認錯誤率閾值為50%,超過將自動運行。
提供近實時依賴的統計和監控
Hystrix依賴的隔離架構,如下圖:
Hystrix實時依賴統計、監控如下:
、
Dubbo消費者保護
具體實現參見項目說明:https://github.com/yskgood/dubbo-hystrix-support.git
總結
以上是生活随笔為你收集整理的hystrix 单独使用_使用Hystrix对Dubbo消费者提供线程隔离保护的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP客户端与服务端
- 下一篇: SiteMesh3使用介绍及配置方法