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