熔斷、限流、降級三者的區別


熔斷、限流、降級都是保持系統穩定運行的策略,但針對的場景有所不同。

熔斷

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

上面的解釋中有兩個很關鍵的詞,一個是暫時,一個是停止。

停止是說,當前服務一旦對下游服務進行熔斷,當請求到達時,當前服務不再對下游服務進行調用,而是使用設定好的策略(如構建默認值)直接返回。

暫時是說,熔斷后,並不會一直不再調用下游服務,而是以一定的策略(如每分鍾調用 10 次,若均返回成功,則增大調用量)試探調用下游服務,當下游服務恢復可用時,自動停止熔斷。

如上圖,當 ServiceD 不可用時,ServiceB 應對 ServiceD 進行熔斷。

開源的熔斷器,如:Hystrix

限流

限流是指上游服務對本服務請求 QPS 超過闕值時,通過一定的策略(如延遲處理、拒絕處理)對上游服務的請求量進行限制,以保證本服務不被壓垮,從而持續提供穩定服務。常見的限流算法有滑動窗口、令牌桶、漏桶等。

如上圖,當 ServiceB 對 ServiceD 請求過多時,ServiceD 可以放棄一部分請求,保證自身服務的穩定。

目前比較常用的限流算法有以下幾種:

  • 計數器固定窗口算法
  • 計數器滑動窗口算法
  • 漏桶算法
  • 令牌桶算法

降級

降級是指當自身服務壓力增大時,采取一些手段,增強自身服務的處理能力,以保障服務的持續可用。比如,下線非核心服務以保證核心服務的穩定、降低實時性、降低數據一致性。

常見的降級策略

  • 讀舊
  • PlanB
  • 默認值
  • 放棄部分請求
  • 降低質量
  • 提高參與門檻
  • 反向過濾
  • 補償
  • 容災

總結

措施 產生原因 針對服務
熔斷 下游服務不可用 下游服務
降級 自身服務的處理能力不夠 自身服務
限流 上游服務請求增多 上游服務

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM