系統熔斷

最近看這方面的信息 簡單瞭解了下 寫下隨筆

背景介紹

基於服務拆分之後,各類遠程調用橫行的年代, 我們很容易出現的系統層級情況就是一個業務支撐需要N多服務,簡單說下,圖網上有的是就不貼了。假設有三層應用調用 A-B-C ,A對外提供列表服務,需要N個B和M個C,同時B也需要X個C,我們假設一個調用鏈路中的某個C系統故障 ,那A或者B 調用C時 就會被hold住,從而無法正常響應, 以此爲例 A機器100個線程均被hold住之後基本上這個服務也就被C的這個故障給拖垮了,這就是所謂的雪崩效應吧,這時候我們就引入了熔斷的概念,熔斷 ,主要是針對CS調用中 C端針對現有系統狀態實時的一個策略,可以有效防止x雪崩效應。

簡單說下自己看Hystrix熔斷代碼,自己簡單的一些收穫。

我們以A-B的調用爲例簡單介紹下
1、A到B的直接調用改爲間接調用,中間做一層適配,具體實現方式不限
2、在真實調用之前提供一個熔斷檢測的allowRequest方法,該方法主要是控制是否熔斷和熔斷後嘗試這兩部分情況,
熔斷 最簡單就是靠失敗計數器即可,在真實調用出現問題之後,計數器+1 當計數器失敗數量達到熔斷閾值時直接熔斷
熔斷中嘗試 使用的是時間週期處理,在開始熔斷的時候記錄下最後一次訪問系統時間,然後根據實時訪問的系統時間是否大於最後時間+熔斷週期 判斷是否要發起嘗試。
熔斷和嘗試兩者有一個通過時直接調用B應用,否則 直接走快速失敗的fallback。
3、系統如果正常調用則重置熔斷數據,否則繼續熔斷等下個週期重試

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