帶錯誤的請求可以立馬中斷並返回錯誤信息
1:每次調用創建一個新的HystrixCommand,把依賴調用封裝在run()方法中.
2:執行execute()/queue做同步或異步調用.
4:判斷熔斷器(circuit-breaker)是否打開,如果打開跳到步驟8,進行降級策略,如果關閉進入步驟5.
5:判斷線程池/隊列/信號量是否跑滿,如果跑滿進入降級步驟8,否則繼續後續步驟6.
6:調用HystrixCommand的run方法.運行依賴邏輯
6a:依賴邏輯調用超時,進入步驟8.
7:判斷邏輯是否調用成功
7a:返回成功調用結果
7b:調用出錯,進入步驟8.
8:計算熔斷器狀態,所有的運行狀態(成功, 失敗, 拒絕,超時)上報給熔斷器,用於統計從而判斷熔斷器狀態.
9:getFallback()降級邏輯.以下四種情況將觸發getFallback調用:
(1):run()方法拋出非HystrixBadRequestException異常。
(2):run()方法調用超時
(3):熔斷器開啓攔截調用
(4):線程池/隊列/信號量是否跑滿
9a:沒有實現getFallback的Command將直接拋出異常
9b:fallback降級邏輯調用成功直接返回
9c:降級邏輯調用失敗拋出異常
10:返回執行成功結果
集成Hystrix熔斷器
一 添加依賴:
<!-- 容錯保護機制 (調請求發生異常時進行處理) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
二 在啓動類添加註解@EnableHystrix
三 在Controller方法上加上註解:
@HystrixCommand(fallbackMethod="error")
當方法調用失敗後調用error方法(error方法需要自定義)
四 編寫error方法
五 斷路器的監控
·添加依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
·在啓動類添加註解@EnableHystrixDashboard
·完成後瀏覽器輸入 http://ip:端口/hystrix.stream進入監控界面