1. 程式人生 > 其它 >SpringCloud服務降級之全域性降級-服務降級方法的抽取

SpringCloud服務降級之全域性降級-服務降級方法的抽取

技術標籤:# 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客戶端