1. 程式人生 > 實用技巧 >Sentinel系列(4)-服務雪崩效應及容錯方案

Sentinel系列(4)-服務雪崩效應及容錯方案

雪崩效應

雪崩
一種自然現象,當山坡積雪內部的內聚力抗拒不了它所受到的重力拉引時,便向下滑動,引起大量雪體崩塌。
雪崩效應廣泛應用於各種領域,比如密碼學術語、管理學、商業等。
服務雪崩
在軟體架構體系中,分散式或者微服務,將系統拆分為獨立服務,通過HTTP或者RPC進行通訊,相互協作。但是由於網路或者其他不穩定因素,總會發生某個服務延遲或者不可用,無法保證100%不出故障。當某個服務發生故障時,勢必會導致其他關聯服務出現網路延遲,如果此時大量請求湧入,形成阻塞,其他服務也會導致故障出現,這種在軟體中,由於一個服務發生問題,進而導致整個系統不可用或癱瘓的問題叫做服務雪崩效應
在這裡插入圖片描述

形成原因(摘自網路)

服務雪崩的過程可以分為三個階段:

  • 服務提供者不可用;
  • 重試加大請求流量;
  • 服務呼叫者不可用;

服務雪崩的每個階段都可能由不同的原因造成,總結如下:
在這裡插入圖片描述
應對策略:
在這裡插入圖片描述

容錯方案

常見的容錯思路有隔離、超時、限流、熔斷、降級等
1. 隔離
它是指將系統按照一定的原則劃分為若干個服務模組,各個模組之間相對獨立,無強依賴。當有故 障發生時,能將問題和影響隔離在某個模組內部,而不擴散風險,不波及其它模組,不影響整體的 系統服務。常見的隔離方式有:執行緒池隔離和訊號量隔離。
2. 超時
在上游服務呼叫下游服務的時候,設定一個最大響應時間,如果超過這個時間,下游未作出反應, 就斷開請求,釋放掉執行緒。
3.限流


限流就是限制系統的輸入和輸出流量已達到保護系統的目的。為了保證系統的穩固執行,一旦達到 的需要限制的閾值,就需要限制流量並採取少量措施以完成限制流量的目的。
4. 熔斷
在網際網路系統中,當下遊服務因訪問壓力過大而響應變慢或失敗,上游服務為了保護系統整體的可用性,可以暫時切斷對下游服務的呼叫。這種犧牲區域性,保全整體的措施就叫做熔斷。
5.降級
降級其實就是為服務提供一個託底方案,一旦服務無法正常呼叫,就使用託底方案。

常見的容錯元件

Hystrix
Hystrix是由Netflix開源的一個延遲和容錯庫,用於隔離訪問遠端系統、服務或者第三方庫,防止 級聯失敗,從而提升系統的可用性與容錯性。
Resilience4J


Resilicence4J一款非常輕量、簡單,並且文件非常清晰、豐富的熔斷工具,這也是Hystrix官方推薦的替代產品。不僅如此,Resilicence4j還原生支援Spring Boot 1.x/2.x,而且監控也支援和prometheus等多款主流產品進行整合。
Sentinel
Sentinel 是阿里巴巴開源的一款斷路器實現,本身在阿里內部已經被大規模採用,非常穩定。
對比:
在這裡插入圖片描述