一、背景
什麼是降級呢?
顧名思義,系統出現故障的時候,能夠採取某種策略,來勉強維持系統的正常運行。
hystrix調用各種接口,或者訪問外部依賴,mysql,redis,zookeeper,kafka,等等,如果出現了任何異常的情況
比如說報錯了,訪問mysql報錯,redis報錯,zookeeper報錯,kafka報錯,error
對每個外部依賴,無論是服務接口,中間件,資源隔離,對外部依賴只能用一定量的資源去訪問,線程池/信號量,如果資源池已滿,reject
訪問外部依賴的時候,訪問時間過長,可能就會導致超時,報一個TimeoutException異常,timeout
二、核心代碼
重寫fallback降級邏輯:讀取本地緩存
@Override
protected AdInfo getFallback() {
System.out.println("從本地緩存獲取過期的廣告數據,adId=" + adId);
return JSONObject.parseObject(AdCache.getAdInfo(adId), AdInfo.class);
}
三、實戰演練
代碼下載地址:https://gitee.com/jikeh/JiKeHCN-RELEASE.git
項目名:spring-boot-hystrix-fallback
依賴系統:spring-boot-hystrix-ad
本次系統:spring-boot-hystrix-fallback
1、手動模擬請求錯誤
@Override
protected AdInfo run() throws Exception {
// 如果調用失敗了,報錯了,那麼就會去調用fallback降級機制
throw new Exception();
}
2、系統啟動
- 啟動spring-boot-hystrix-ad
- 啟動spring-boot-hystrix-fallback
3、請求測試
http://localhost:8022/get/ad?adId=1
閱讀更多 極客慧 的文章