Sentinel降級-異常比例
一、是什麼
異常比例 (ERROR_RATIO):當機關統計時長(statIntervalMs)内請求數目大于設定的最小請求數目,并且異常的比例大于門檻值,則接下來的熔斷時長内請求會自動被熔斷。經過熔斷時長後熔斷器會進入探測恢複狀态(HALF-OPEN 狀态),若接下來的一個請求成功完成(沒有錯誤)則結束熔斷,否則會再次被熔斷。異常比率的門檻值範圍是 [0.0, 1.0],代表 0% - 100%。
二、測試
- 代碼
@GetMapping("/testC")
public String testC(){
log.info("------testC 異常比例");
int age=10/0;
return "------testC 異常比例";
}
- 配置
- jemeter壓力測試:
- 設定每秒請求數
- 設定請求路徑url
-
測試
1.未使用jemeter情況下測試/testC接口
會直接報錯,因為定義分母不能為0
2.使用jemeter情況下測試/testC接口
自動熔斷,因為每秒請求數大于五并且錯誤率超過了0.2
-
結論
按照上述配置:
- 單獨通路一次,必然來一次報錯一次(int age = 10/0),調一次錯一次;
異常比例 (ERROR_RATIO):當機關統計時長(statIntervalMs)内請求數目大于設定的最小請求數目,并且異常的比例大于門檻值,則接下來的熔斷時長内請求會自動被熔斷。經過熔斷時長後熔斷器會進入探測恢複狀态(HALF-OPEN
狀态),若接下來的一個請求成功完成(沒有錯誤)則結束熔斷,否則會再次被熔斷。異常比率的門檻值範圍是 [0.0, 1.0],代表 0% -
100%。
- 開啟jmeter後,直接高并發發送請求,多次調用達到我們的配置條件了。斷路器開啟(保險絲跳閘),微服務不可用了,不再報錯error而是服務降級了。