當前位置:
首頁 > 知識 > Spring Cloud斷路器Hystrix

Spring Cloud斷路器Hystrix

Spring Cloud斷路器Hystrix

Hystrix

《極簡Spring Boot搭建、開發、部署》

《Spring Cloud註冊中心——Eureka&集群》

《Spring Cloud網關Zuul&過濾器&集群方案》

《Spring Cloud網關&負載均衡Zuul&Ribbon》

《Spring Cloud服務間調用Feign》

上文講到Spring Cloud中,我們服務間調用使用Feign——聲明式Web服務客戶端。

在分散式系統中,一個服務會調用多個其他微服務,而在調用過程中很容易因為某些原因(網路連接慢,資源緊張,阻塞等)導致某個微服務無法正常提供服務,而作為調用方應該有一種容錯機制,來隔離這種異常,從而不讓一個微服務的異常影響整體的運行。

Hystrix官網舉的例子:

Spring Cloud斷路器Hystrix

服務可用分析

大意是1個系統依賴30個微服務,假設每個微服務可用時間是99.99%,換算成整個系統就是99.99的30次方約99.7%可用時間,0.3%不可用。

1億的請求有30萬失敗。30天有2個多小時不能正常提供服務。

現實通常比這更糟糕。

我舉個栗子:假設我們在電商網站買東西,從下單到完成要依賴三個微服務:訂單、支付、物流。遇上雙11或618,客戶的訂單蜂擁而至,這時候物流微服務可能因為程序優化不好或者硬體資源不夠而不能及時提供服務,如果因為物流的問題而導致客戶無法下單,這到手的錢掙不到了就很可惜了。

這時候就可以對物流微服務進行熔斷,暫時不調用,全力以赴把訂單、支付給完成了。熬過去這段峰值,回過頭來再處理物流的問題,反正錢已到手。不會因為一顆老鼠屎壞一鍋湯。

Spring Cloud的斷路器是Hystrix,兩種使用方法,一種是直接使用Hystrix,一種是通過FeignClient。本文介紹第二種。


application.yml

Spring Cloud斷路器Hystrix

FeignClient自帶Hystrix,在配置中啟用就好。


代碼

新建一個Fallback處理類,實現FeignClient介面:

Spring Cloud斷路器Hystrix

異常處理類

修改FeignClient介面,指定Fallback處理類:Spring Cloud斷路器Hystrix

FeignClient修改


結果驗證

依次啟動Eureka註冊中心、Order Service、Feign Service:

Spring Cloud斷路器Hystrix

正常訪問如下圖,調用沒問題:Spring Cloud斷路器Hystrix

正常

關掉Order Service,熔斷機制啟動,結果如下圖:Spring Cloud斷路器Hystrix

熔斷

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

Spring Cloud服務間調用Feign
Spring Cloud網關&負載均衡Zuul&Ribbon
Spring Cloud網關Zuul&過濾器&集群方案
Spring Cloud註冊中心——Eureka&集群
極簡Spring Boot搭建、開發、部署

TAG:Java個人學習心得 |

您可能感興趣

spring cloud netflix:斷路器之Hystrix Dashboard
Spring Cloud Gateway的After路由斷言工廠
Spring Security 5.0 的 DelegatingPasswordEncoder 詳解
Spring中BeanFactory和ApplicationContext 的區別
使用Spring Boot + Resilience 4j實現斷路器
SpringBoot:SpringDataRedis緩存改造
深入 JVM 分析 spring-boot 應用 hibernate-validatorNoClassDefFoundError
Springboot2.X之切換使用Servlet容器Jetty、Tomcat、Undertow
Spring data MongoDB 之 MongoRepository
譯:Spring Cloud Config:Git 後端
網關 Spring-Cloud-Gateway 源碼解析——路由之RouteDefinitionLocator一覽
Spring Boot 配置文件 yml與properties
Spring整合Hibernate.Final
深入 SpringBoot : 怎樣排查 expectedsinglematchingbeanbutfound 2 的異常
Spring4+hibernate+SpringMvc整合
Spring security + oauth2.0 + redis + mybatis plus 搭建微服務
Spring Cloud Alibaba Sentinel 整合 Feign 的設計實現
SpringBoot伺服器壓測對比(jetty、tomcat、undertow)
SpringCloud統一配置中心Config Client
使用Spring Cloud和Reactor在微服務中實現Event Sourcing