spring cloud之Hystrix

  雪崩效應:微服務架構的應用系統通常包含多個服務層。微服務之間通過網絡進行通信,從而支撐起整個應用系統,因此,微服務之間難免存在依賴關係。任何微服務都並非100%可用,網絡往往也很脆弱,因此有些請求會失敗。我們常把”基礎服務故障“導致”級聯故障“的現象稱爲雪崩效應,雪崩效應描述的是提供者不可用導致消費者不可用,並將不可用逐漸放大的過程。

雪崩效應形成過程如上圖所示,服務A作爲服務提供者(基礎服務),B作爲A的消費者,C和D是B的消費者,服務A的不可用引起了b的不可用,並將不可用像雪球放大到C和D,雪崩效應就形成了。

防止雪崩效應的方法:容錯機制,該容錯機制需要實現以下兩點

  • 爲網絡請求設置超時:爲每個網絡請求設置超時,讓資源儘快釋放
  • 使用斷路器模式:斷路器可以理解爲對容易導致錯誤的操作的代理,這種代理能夠統計一段時間內調用失敗的次數,並決定是正常請求依賴的服務還是直接返回。斷路器的狀態轉換如下圖所示

Hystrix簡介

Hystrix是一個實現了超時機制和斷路器模式的工具類庫,用於隔離訪問遠程系統、服務或者第三方庫,防止級聯失敗,從而提供系統的可用性和容錯性,Hystrix主要通過以下幾點市場延遲和容錯。

  • 包裹請求:使用hystrixCommand包裹對依賴的調用邏輯,每個命令在獨立線程中執行,這使用到了設計模式中的命令模式
  • 跳閘機制:當某個服務的錯誤率超過一定閾值時,Hystrix可以自動或者手動跳閘,停止請求該服務一段時間
  • 資源隔離:Hystrix爲每個裏來都維護了一個小型的線程池(或者信號量),如果該線程池已經滿了,發送往該依賴的請求被立即拒絕,而不是排隊等候,從而加速失敗判定。
  • 回退機制:當請求失敗、超時、被拒絕,或當斷路器打開時,執行回退邏輯。
  • 自我修復:斷路器打開一段時間後,會自動進入半開狀態。

Hystrix整合,項目爲microservice-consumer-movie-ribbon-hystrix

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