作過度布式的同窗應該都知道這個概念,在這裏仍是要解釋下熔斷,由於對於有些同窗,根本就沒聽過這個。熔斷就是切斷項目對指定服務的調用。舉個例子在分佈式環境下有A,B,C,D四個個服務,A依賴B,C,D。在調用的過程當中發現D服務異常了,爲了避免拖垮整個集羣,咱們會選擇不調用D服務,進行服務降級。
git
上面說了什麼是熔斷,但是何時該啓用熔斷,何時去探測服務是否可用,當依賴異常恢復時,何時上層恢復依賴等這些技術細節都是咱們要去考慮的。而Hystrix就是爲了解決這些問題而誕生的。github
在分佈式環境下hystrix經過添加延遲容錯和失敗容差邏輯來幫助咱們處理服務之間的交互。它會隔絕各服務間的調用,防止出現雪崩現象並提供fallback失敗備用方案,以此提升咱們服務集羣的彈性。segmentfault
對外依賴包括第三方類庫的依賴提供延遲和失敗保護
阻斷傳遞失敗,防止雪崩
快速失敗並即時恢復
合理的fallback和優雅降級
提供近實時的監控、告警和操做控制分佈式
當服務都健康的時候以下圖所示
spa
當其中一個服務出現延遲,將會阻塞整個用戶的請求
線程
一個服務的延遲會致使單位時間內資源一直被佔用,應用的其它請求進來也會延遲,緊接着隊列開始堆積,線程還有其餘系統資源不釋放,甚至引起整個系統的級聯失敗。3d
以上主要簡單的介紹了下hystrix的使用場景,後續將會整理一些hystrix如何使用,工做原理,以及咱們對hystrix的一些改造blog
後續系列文章推薦
Hystrix經常使用功能介紹
Hystrix執行原理
Hystrix熔斷器執行機制
Hystrix超時實現機制隊列