Hystrix進階攻略之降級策略

一、背景

什麼是降級呢?

顧名思義,系統出現故障的時候,能夠採取某種策略,來勉強維持系統的正常運行。

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

Hystrix進階攻略之降級策略


分享到:


相關文章: