SpringCloud服務降級之全域性降級-服務降級方法的抽取
阿新 • • 發佈:2021-01-21
技術標籤:# spring-cloud學習筆記springspring boot
SpringCloud全域性服務降級-服務降級方法的抽取
1. 全域性服務降級由來
- 區域性服務降級策略,明顯造成程式碼雜亂,且提高了耦合度。
- 每個方法都需要配置一個兜底方法,程式碼冗餘。
1.2. 全域性服務降級實現
2. 服務降級方法抽取的由來
- 不論全域性服務降級,區域性服務降級,均與業務邏輯混合,耦合度高。
2.1 解決
- 首先,在全域性服務降級基礎上改進。
- ① 將服務消費方關於服務降級處理的配置全部清除
- ② yml配置檔案中開啟Feign基於Hystrix的支援
# 用於服務降級 在註解@FeignClient 中新增 fallback 屬性值
feign:
hystrix:
enabled: true # 在feign中開啟 hystrix
- ③ 定義一個類實現Feign客戶端介面
@Component
public class FallBackService implements OrderService {
@Override
public String paymentInfo_OK(Integer id) {
return "進行paymentInfo_OK方法降級處理......";
}
@Override
public String paymentInfo_Timeout(Integer id) {
return "進行paymentInfo_Timeout方法降級處理";
}
}
- ④ 修改Feign客戶端介面
// 增加fallback
@FeignClient(value = "cloud-payment-service",fallback = FallBackService.class)
public interface OrderService {
@GetMapping("/payment/hystrix/{id}")
public String paymentInfo_OK(@PathVariable("id")Integer id);
@GetMapping("/payment/hystrix/timeout/{id}")
public String paymentInfo_Timeout(@PathVariable("id")Integer id);
}
- ⑤ 啟動服務測試
小結
- 降級邏輯優先順序:區域性降級>全域性降級
- 降級服務方法抽取注意點:
- 消費方的啟動類上面要加上一個
@EnableCircuitBreaker
- 配置檔案中,開啟Feign對Hystrix支援
- 定義一個類,實現Feign客戶端。重寫裡面的方法(編寫降級處理方法)
- 是用註解
@FeignClient(name = "微服務名稱",fallback = Feign客戶端的實現類.class)
將客戶端實現類繫結到Feign客戶端
- 消費方的啟動類上面要加上一個