Hystrix熔斷框架介紹

本文主要從下面幾點展開:

  1. 什麼是熔斷?
  2. hystrix是什麼東西?
  3. hystrix能咱們解決什麼問題?

什麼是熔斷

作過度布式的同窗應該都知道這個概念,在這裏仍是要解釋下熔斷,由於對於有些同窗,根本就沒聽過這個。熔斷就是切斷項目對指定服務的調用。舉個例子在分佈式環境下有A,B,C,D四個個服務,A依賴B,C,D。在調用的過程當中發現D服務異常了,爲了避免拖垮整個集羣,咱們會選擇不調用D服務,進行服務降級。
clipboard.pnggit

Hystrix是什麼

上面說了什麼是熔斷,但是何時該啓用熔斷,何時去探測服務是否可用,當依賴異常恢復時,何時上層恢復依賴等這些技術細節都是咱們要去考慮的。而Hystrix就是爲了解決這些問題而誕生的。github

在分佈式環境下hystrix經過添加延遲容錯和失敗容差邏輯來幫助咱們處理服務之間的交互。它會隔絕各服務間的調用,防止出現雪崩現象並提供fallback失敗備用方案,以此提升咱們服務集羣的彈性。segmentfault

Hystrix主要解決那些問題

對外依賴包括第三方類庫的依賴提供延遲和失敗保護
阻斷傳遞失敗,防止雪崩
快速失敗並即時恢復
合理的fallback和優雅降級
提供近實時的監控、告警和操做控制分佈式

集羣多依賴場景

當服務都健康的時候以下圖所示
https://github.com/Netflix/Hystrix/wiki/images/soa-1-640.pngspa

當其中一個服務出現延遲,將會阻塞整個用戶的請求
https://github.com/Netflix/Hystrix/wiki/images/soa-2-640.png線程

一個服務的延遲會致使單位時間內資源一直被佔用,應用的其它請求進來也會延遲,緊接着隊列開始堆積,線程還有其餘系統資源不釋放,甚至引起整個系統的級聯失敗。3d

clipboard.png

Hystrix如何應對上面的問題

https://github.com/Netflix/Hystrix/wiki/images/soa-4-isolation-640.png

  • hystrix把每一個依賴都進行隔離,對依賴的調用所有包裝成HystrixCommand或者HystrixObservableCommand
  • 對依賴的調用耗時設置閥值,若是超過閥值直接斷定超時
  • 對每一個依賴維護一個鏈接池,若是鏈接池滿直接拒絕訪問
  • hystrix評估調用失敗,調用超時,線程拒絕,調用成功的比例,若是超過指定的閥值直接走熔斷處理,對依賴的訪問直接走fallback邏輯(fallback邏輯使用者本身實現)
  • 熔斷生效後,會在設定的時間後放出一個請求來探測依賴是否恢復,依賴的應用恢復後關閉熔斷
  • 修改hystrix配置近實時生效

END

以上主要簡單的介紹了下hystrix的使用場景,後續將會整理一些hystrix如何使用,工做原理,以及咱們對hystrix的一些改造blog

後續系列文章推薦
Hystrix經常使用功能介紹
Hystrix執行原理
Hystrix熔斷器執行機制
Hystrix超時實現機制隊列

相關文章
相關標籤/搜索