Java B2B2C多用戶商城 springcloud架構-hystrix工做原理

Hystrix是Netflix開源的一個限流熔斷的項目、主要有如下功能:須要JAVA Spring Cloud大型企業分佈式微服務雲構建的B2B2C電子商務平臺源碼 一零三八七七四六二六緩存

隔離(線程池隔離和信號量隔離):限制調用分佈式服務的資源使用,某一個調用的服務出現問題不會影響其餘服務調用。 優雅的降級機制:超時降級、資源不足時(線程或信號量)降級,降級後能夠配合降級接口返回託底數據。網絡

融斷:當失敗率達到閥值自動觸發降級(如因網絡故障/超時形成的失敗率高),熔斷器觸發的快速失敗會進行快速恢復。異步

緩存:提供了請求緩存、請求合併實現。支持實時監控、報警、控制(修改配置)分佈式

下面是他的工做流程:微服務

 


Hystrix主要有4種調用方式:ui

toObservable() 方法 :未作訂閱,只是返回一個Observable 。線程

observe() 方法 :調用 #toObservable() 方法,並向 Observable 註冊 rx.subjects.ReplaySubject 發起訂閱。對象

queue() 方法 :調用 #toObservable() 方法的基礎上,調用:Observable#toBlocking() 和 BlockingObservable#toFuture()blog

返回 Future 對象接口

execute() 方法 :調用 #queue() 方法的基礎上,調用 Future#get() 方法,同步返回 #run() 的執行結果。

主要的執行邏輯:

1.每次調用建立一個新的HystrixCommand,把依賴調用封裝在run()方法中.

2.執行execute()/queue作同步或異步調用.

3.判斷熔斷器(circuit-breaker)是否打開,若是打開跳到步驟8,進行降級策略,若是關閉進入步驟.

4.判斷線程池/隊列/信號量是否跑滿,若是跑滿進入降級步驟8,不然繼續後續步驟.

5.調用HystrixCommand的run方法.運行依賴邏輯

依賴邏輯調用超時,進入步驟8.

6.判斷邏輯是否調用成功。返回成功調用結果;調用出錯,進入步驟8.

7.計算熔斷器狀態,全部的運行狀態(成功, 失敗, 拒絕,超時)上報給熔斷器,用於統計從而判斷熔斷器狀態.

8.getFallback()降級邏輯。如下四種狀況將觸發getFallback調用:

run()方法拋出非HystrixBadRequestException異常。

run()方法調用超時

熔斷器開啓攔截調用

線程池/隊列/信號量是否跑滿

沒有實現getFallback的Command將直接拋出異常,fallback降級邏輯調用成功直接返回,降級邏輯調用失敗拋出異常.

9.返回執行成功結果

相關文章
相關標籤/搜索