Java Spring Cloud Hystrix

Spring Cloud -- Hystrix服務降級(Client端)

黃翰暉 Jacob Huang 2021/11/29 15:00:00
379

前言

      上一篇,我們探討了Hystrix如何在Service端實現服務降級,使Service端在發生Timeout或是當機的狀況時,整體的系統不至於服務雪崩,但不只在Service端需要,消費者服務端也需要好好的保護自己,畢竟每一台Client端都不盡相同,也沒辦法保證Service端能夠永遠正確,以下,就讓我們繼續來探討Hystrix放在Client端的做法。

 

Hystrix服務降級(Client端)

     

1. 我們在這裡再建立一個消費端的module Hystrix-order80來打Service端的API,如下圖

 

13. pom中一樣也要加入Hystrix的包

 

14. 建立一個Service層,這個部分因為我們需要打hystrix-payment8001,我們建立一個介面,並使用 @FeignClient 來設定需打的API位置

 

15. 建立Controller層,公開的位址我們都加上consumer

 

16. 建立application.yml,將module註冊進Eureka7001

 

17. 啟動Eureka7001、Hystrix-payment8001、Hystrix-order80,用http://localhost/consumer/payment/hystrix/ok/31 可以看到也是可以正常打到服務的

 

18. 接下來我們將在Client端上加上Hystrix,在Hystrix-order80的Controller -> paymentInfo_Timeout上也加上HystrixCommand,並做一個接住Exception的FallbackMethod,在這裡為了模擬Client端因為Service端執行超時而服務降級,這裡的執行時間(value)我們設定1500。也就是指業務邏輯上我們執行時間超過1.5秒就將服務降級的意思。

 

19. Hystrix-order80的application.yml中加入Hystrix的設定如下圖

 

20. Hystrix-order80的main加上 @EnableHystrix的annotation

 

21. 我們再啟動Eureka7001、Hystrix-payment8001、Hystrix-order80,用http://localhost/consumer/payment/hystrix/timeout/31,我們可以看到我們已成功在消費者服務端將服務降級。

 

以上,就是我們這次分享的 Hystrix的服務降級(Client端),下一篇我們會繼續探討Hystrix的服務熔斷如何配置,文章中若有疏漏,也歡迎各位前輩不吝指教,謝謝大家~

 

參考文獻

 

尚硅谷Spring Cloud教程

Spring Cloud官方網站

https://github.com/Netflix/Hystrix/wiki/How-To-Use

 

 

 

 

黃翰暉 Jacob Huang