日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

hystrix 页面_微服务 | 使用Hystrix实现Spring Cloud的熔断机制

發布時間:2024/7/5 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hystrix 页面_微服务 | 使用Hystrix实现Spring Cloud的熔断机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 熔斷機制介紹

在介紹熔斷機制之前,我們需要了解微服務的雪崩效應。在微服務架構中,微服務是完成一個單一的業務功能,這樣做的好處是可以做到解耦,每個微服務可以獨立演進。但是,一個應用可能會有多個微服務組成,微服務之間的數據交互通過遠程過程調用完成。這就帶來一個問題,假設微服務A調用微服務B和微服務C,微服務B和微服務C又調用其它的微服務,這就是所謂的“扇出”。

如果扇出的鏈路上某個微服務的調用響應時間過長或者不可用,對微服務A的調用就會占用越來越多的系統資源,進而引起系統崩潰,所謂的“雪崩效應”。

扇出

熔斷機制是應對雪崩效應的一種微服務鏈路保護機制。我們在各種場景下都會接觸到熔斷這兩個字。高壓電路中,如果某個地方的電壓過高,熔斷器就會熔斷,對電路進行保護。股票交易中,如果股票指數過高,也會采用熔斷機制,暫停股票的交易。同樣,在微服務架構中,熔斷機制也是起著類似的作用。當扇出鏈路的某個微服務不可用或者響應時間太長時,會進行服務的降級,進而熔斷該節點微服務的調用,快速返回錯誤的響應信息。當檢測到該節點微服務調用響應正常后,恢復調用鏈路。

在Spring Cloud框架里,熔斷機制通過Hystrix實現。Hystrix會監控微服務間調用的狀況,當失敗的調用到一定閾值,缺省是5秒內20次調用失敗,就會啟動熔斷機制。熔斷機制的注解是@HystrixCommand,Hystrix會找有這個注解的方法,并將這類方法關聯到和熔斷器連在一起的代理上。當前,@HystrixCommand僅當類的注解為@Service或@Component時才會發揮作用。

上一節中,我們提到,微服務之間的調用可以通過兩種方式,一個是RestTemplate,另一個是Feign。相對應,在這兩種調用方式下,都有Hystrix調用方法。

2. 代碼實現及驗證

本次代碼實現對RestTemplate和Feign兩種微服務調用場景下,使用Hystrix驗證Spring Cloud的熔斷機制。

2.1 RestTemplate的微服務調用場景

在第五節負載均衡,我們使用了RestTemplate實現了服務之間的調用。我們基于這一部分的代碼,增加Hystrix,實現熔斷機制。

1) 啟動Eureka-Server及LOADBALANCE-SERVICE,不要啟動Bookingcar-Service

點擊"LOADBALANCE-SERVICE"后面鏈接,進入負載均衡驗證頁面,輸入請求參數/v1/lb/testport?name=bookingcar-service,我們會在頁面上得到以下的錯誤提示:

2) 在pom.xml里,添加對Hystrix的依賴

3)在ribbon-service入口程序RibbonServiceApplication.java處添加注解@EnableCircuitBreaker,開啟熔斷器功能,如下所示:

4) 在LoadBalanceService.java里,使用了@Service注解聲明了LoadBalanceService類。我們在LoadBalanceService類里通過@HystrixCommand注解引入對TestPort調用的熔斷機制,@HystrixCommand注解里可以添加回調函數,如@HystrixCommand(callbackCommand = "XXX“),當無法調用TestPort服務時,熔斷機制的回調函數就會發生作用,對錯誤進行快速處理。

5) 重新啟動LOADBALANCE-SERVICE, 再次進入負載均衡驗證頁面,輸入請求參數/v1/lb/testport?name=bookingcar-service,我們發現熔斷機制已經發揮作用:

2.2 Feign的微服務調用場景

在上一節,我們利用Feign實現了微服務間的內部調用,Feign中也內置了對Hystrix的支持。

1) 運行Report,同樣不要啟動BOOKINGCAR-SERVICE

點擊REPORTING-SERVICE后面鏈接,進入Feign驗證頁面,輸入參數v1/order/1,我們可以看到如下的錯誤提醒頁面:

2) 在application.properties里,添加feign.hystrix.enabled=true,使能Feign對hystrix的支持,如下所示:

3)在pom.xml里,添加對Hystrix的依賴

4) 在Report的入口程序ReportsApplication里,添加注解@EnableCircuitBreaker,開啟熔斷器功能,如下所示:

5) 在OrderClient.java里Feign的注解里,添加回調函數的參數

6) 添加一個新的類OrderClientHystrix,當調用微服務發生錯誤時,進行處理,本示例中,會返回“Hystrix works in Feign”的信息。

7)重新運行Report,點擊REPORTING-SERVICE后面鏈接,輸入請求參數v1/order/1,我們發現熔斷機制已經發揮作用,顯示如下:

3. 總結:

微服務本身是一種分布式架構,當調用鏈路過長時,系統的可用性是很大的挑戰。Spring Cloud框架的Hystrix提供了熔斷機制,在RestTemplate和Feign兩種對微服務調用的場景下都可以使用,當調用鏈路出現問題時可以快速進行服務降級處理,為我們提高微服務架構的可用性提供了很大的幫助。

總結

以上是生活随笔為你收集整理的hystrix 页面_微服务 | 使用Hystrix实现Spring Cloud的熔断机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。