Hystrix 的執行原理

Hystrix核心思想是資源隔離 + 限流。

步驟如下:

1、創建 command
Hystrix會根據調用請求創建command,通過實現這兩個HystrixCommand,HystrixObservableCommand接口創建。

2、調用 command 執行方法
執行 command調用方法:
    execute():屬於同步調用,返回單條結果,或者拋出異常。
    queue():屬於異步調用,通過 Future 獲取單條結果。
    observe():訂閱一個 Observable 對象,Observable 對象的結果。
    toObservable():返回一個 Observable 對象,執行 command 並且獲取返回結果。
    
3、檢查是否開啓緩存

command 如果開啓了請求緩存 Request Cache,調用的結果在緩存中存在,直接返回結果。否則,繼續往後執行。

4、檢查是否開啓了斷路器

檢查command 對應的調用服務是否開啓了斷路器。如果斷路器被打開,那麼 Hystrix 直接去執行fallback降級機制,返回降級結果。否則,繼續往後執行。

5、檢查線程池/信號量是否已滿
檢查 command 線程池或者 semaphore 信號量是否已滿,如果飽和,則直接去執行fallback 降級機制。否則往後執行。

6、執行 command
調用HystrixCommand 的 run() 方法,或者調用HystrixObservableCommand 的construct() 方法,執行這個 command
如果調用一切正常,獲取結果之後返回。如果異常:執行fallback的降級機制。

詳情參見:官方網址:https://github.com/Netflix/Hystrix

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章