天天看點

SpringCould中的Hystrix

源碼位址:https://gitee.com/xiaocheng0902/my-cloud.git

  Hystrix是一個用于處理分布式系統的延遲和容錯的開源庫,在分布式系統裡,許多依賴不可避免的會調用失敗,比如逾時、異常等。Hystrix能夠保證在一個依賴出問題的情況下,不會導緻整體服務失敗,避免級聯故障,以提高分布式系統的彈性。

  "斷路器"本身是一種開關裝置,當某個服務單元發生故障之後,通過斷路器的故障監控(類似熔斷保險絲),向調用方傳回一個符合預期的、可處理的備選響應(FallBack),而不是長時間的等待或者抛出調用方無法處理的異常,這樣就保證了服務調用方的線程不會被長時間的、不必要地占用,進而避免了故障在分布式系統中的蔓延,乃至雪崩。

  服務降級是從整個系統的負荷情況出發和考慮的,對某些負荷會比較高的情況,為了預防某些功能(業務場景)出現負荷過載或者響應慢的情況,在其内部暫時舍棄對一些非核心的接口和資料的請求,而直接傳回一個提前準備好的fallback(退路)錯誤處理資訊。這樣,雖然提供的是一個有損的服務,但卻保證了整個系統的穩定性和可用性

  服務熔斷的作用類似于我們家用的保險絲,當某服務出現不可用或響應逾時的情況時,為了防止整個系統出現雪崩,暫時停止對該服務的調用。

對應源碼:cloud-provider-hystrix-payment8001

  在主啟動類Application上注解

  在service的方法中加入

對應源碼:cloud-consumer-feign-hystrix-order80

  yaml檔案中添加配置

  主啟動類Application上加上注解

  業務類controller中加入

  解決主方法一個備用方法的代碼備援。(源碼同上)

  業務類controller中編碼

  yaml檔案配置

  feign調用的接口

  feign調用接口的實作類

  controller中正常調用即可

  熔斷機制是應對雪崩效應的一種微服務鍊路保護機制。當扇對外連結路的某個微服務出錯不可用或者響應時間太長時,會進行服務的降級,進而熔斷該節點微服務的調用,快速傳回錯誤的響應資訊。當檢測到該節點微服務調用響應正常後,恢複調用鍊路。

源碼:cloud-provider-hystrix-payment8001

  啟動類

  service

  controller

  測試

SpringCould中的Hystrix

  熔斷打開:請求不在進行調用目前服務,内部設定始終一般為MTTR(平均故障處理時間),當打開時長達到所設時鐘則進入熔斷狀态。

  熔斷關閉:熔斷關閉不會對服務進行熔斷。

  熔斷半開:部分請求根據規則調用目前服務,如果請求成功且符合規則則認為目前服務恢複正常,關閉熔斷。

  1,再有請求調用的時候,将不會調用主邏輯,而是直接調用降級fallback。通過斷路器,實作了自動地發現錯誤并将降級邏輯切換為主邏輯,減少響應延遲的效果。

  2,原來的主邏輯如何恢複:當斷路器打開,對主邏輯進行熔斷之後,hystrix會啟動一個休眠時間窗,在這個窗内,降級邏輯是臨時的成為主邏輯;當休眠時間窗到期,斷路器會進入半開狀态,釋放一次請求到原來的主邏輯上,如果此時請求正常傳回,那麼斷路器将繼續閉合,主邏輯恢複,如果這次請求依然有問題,斷路器繼續進入打開狀态,休眠時間窗重新計時。

HystrixCommand:

commandProperties:

threadPoolProperties:

源碼:cloud-consumer-hystrix-dashboard9001

pom檔案

application啟動類中添加

通路位址:http://localhost:9001/hystrix

SpringCould中的Hystrix

 應用說明

SpringCould中的Hystrix
SpringCould中的Hystrix
上一篇: spring hystrix
下一篇: Hystrix總結

繼續閱讀