【Way to Spring Cloud 6】Spring Cloud Hystrix

Spring Cloud Hystrix

什麼是Hytrix

分佈式微服務架構面臨的問題
在微服務架構中,根據業務來拆分成一個個的服務,而服務與服務之間存在着依賴關係 (比如用戶調商品,商品調庫存,庫存調訂單等等),在Spring Cloud中多個微服務之間可以用 RestTemplate+Ribbon 和 Feign
來調用。

在服務之間調用的鏈路上由於網絡原因、資源繁忙或者自身的原因,服務並不能保證100%可用,如果單個服務出現問題,調用這個服務就會出現線程阻塞,導致響應時間過長或不可用,此時若有大量的請求湧入,容器的線程資源會被消耗完畢,導致服務癱瘓。服務與服務之間的依賴性,故障會傳播,會對整個微服務系統造成災難性的嚴重後果,這就是服務故障的“雪崩”效應。

爲了解決這個問題,業界提出了熔斷器模型。

什麼是服務熔斷

熔斷機制是應對雪崩效應的一種微服務鏈路保護機制。在微服務架構中,一個請求需要調用多個服務是非常常見的,如下圖:
在這裏插入圖片描述
當服務之間調用的鏈路上某個微服務不可用或者響應時間太長時,會導致連鎖故障。當失敗的調用到一定閾值(缺省是5秒內20次調用失敗) 就會啓動熔斷機制。在 SpringCloud 框架裏熔斷機制通過Hystrix實現,Hystrix會監控微服務間調用的狀況。熔斷機制的註解是 @HystrixCommand
在這裏插入圖片描述
熔斷器打開後,可用避免連鎖故障,fallback方法可以直接返回一個固定值。

服務熔斷實戰

創建 Hystrix 模塊,microservice-cloud-08-provider-product-hystrix-8001,添加pom依賴
在這裏插入圖片描述
修改yml,便於區分添加後綴
在這裏插入圖片描述
修改controller
在這裏插入圖片描述
修改啓動類
在這裏插入圖片描述
功能測試,Get不存在的id時候,拋出異常,進入fallback方法

Feign客戶端服務熔斷

Feign 是自帶斷路器的,也就是針對 消費者(客戶端)進行服務熔斷,需要在配置文件中開啓它。
修改application.yml
在這裏插入圖片描述
在已存在的 ProductClientService 接口上的 @FeignClient 註解中,加上 fallback 指定熔斷處理類即可: ProductClientServiceFallBack.class
在這裏插入圖片描述
創建 ProductClientServiceFallBack 類
在這裏插入圖片描述
功能測試,80無法訪問8001服務時,進入fallback處理類

Hystrix Dashboard監控平臺搭建

除了隔離依賴服務的調用以外,Hystrix還提供了準實時的調用監控(Hystrix Dashboard),Hystrix會持續地記錄所有通過Hystrix發起的請求的執行信息,並以統計報表和圖形的形式展示給用戶,包括每秒執行多少
請求多少成功,多少失敗等。

Netflix 通過 hystrix-metrics-event-stream 項目實現了對以上指標的監控。Spring Cloud也提供了Hystrix Dashboard 的整合,對監控內容轉化成可視化界面。
創建 hystrix-dashboard 模塊,添加pom依賴
在這裏插入圖片描述
配置application.yml
在這裏插入圖片描述
創建啓動類
在這裏插入圖片描述
啓動微服務監控,如下正常訪問
在這裏插入圖片描述
爲要被監控的服務添加配置,在需要監控的服務 pom.xml 中的 dependencies 節點中新增 spring-boot-starter-actuator 監控依賴,
以開啓監控相關的端點,並確保已經引入斷路器的依賴 spring-cloud-starter-netflix-hystrix

在這裏插入圖片描述
需要監控的服務 application.yml 配製中添加暴露端點
在這裏插入圖片描述
功能測試

  • 正常訪問 http://localhost:8001/product/get/1
    在這裏插入圖片描述
  • 正常訪問 http://localhost:8001/actuator/hystrix.stream
    在這裏插入圖片描述
  • 測試可視化監控界面 http://localhost:9001/hystrix
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 七色的含義如圖。
  • 實心圓的顏色表示健康程度:綠>黃>橙>紅,實心圓的大小表示請求流量:流量越大實心圓就越大。所以通過實心圓的展示,可以判斷故障實例和高壓力實例。
  • 曲線表示2分鐘內流量的相對變化,可以通過它來觀察上升下降趨勢。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章