歡迎您光臨本站 註冊首頁

Sentinel Go 0.3.0 釋出,支援熔斷降級能力

←手機掃碼閱讀     admin @ 2020-05-27 , reply:0

Sentinel 是阿里巴巴開源的,面向分散式服務架構的流量控制元件,主要以流量為切入點,從限流、流量整形、熔斷降級、系統自適應保護等多個維度來幫助開發者保障微服務的穩定性。Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺、冷啟動、訊息削峰填谷、叢集流量控制、實時熔斷下游不可用服務等,是保障微服務高可用的利器,原生支援 Java/Go/C++ 等多種語言,並且提供 Istio/Envoy 全域性流控支援來為 Service Mesh 提供高可用防護的能力。

近期,Sentinel Go 0.3.0 正式釋出,帶來了熔斷降級特性支援,可以針對 Go 服務中的不穩定呼叫進行自動熔斷,避免出現級聯錯誤/雪崩,是保障服務高可用重要的一環。結合 Sentinel Go 已經提供的 gRPC、Gin、Dubbo 等框架元件的適配模組,開發者可以快速在 Web、RPC 呼叫層面配置熔斷降級規則來保護自身服務的穩定性。同時 0.3.0 版本也帶來了 etcd 動態資料來源模組,開發者可以方便地透過 etcd 來動態調整熔斷降級策略。

為什麼需要熔斷降級

一個服務常常會呼叫別的模組,可能是另外的一個遠端服務、資料庫,或者第三方 API 等。例如,支付的時候,可能需要遠端呼叫銀聯提供的 API;查詢某個商品的價格,可能需要進行資料庫查詢。然而,這個被依賴服務的穩定性是不能保證的。如果依賴的服務出現了不穩定的情況,請求的響應時間變長,那麼呼叫服務的方法的響應時間也會變長,執行緒會產生堆積,最終可能耗盡業務自身的執行緒池,服務本身也變得不可用。

現代微服務架構都是分散式的,由非常多的服務組成。不同服務之間相互呼叫,組成複雜的呼叫鏈路。以上的問題在鏈路呼叫中會產生放大的效果。複雜鏈路上的某一環不穩定,就可能會層層級聯,最終導致整個鏈路都不可用。因此我們需要對不穩定的服務進行熔斷降級,暫時切斷不穩定呼叫,避免區域性不穩定因素導致整體的雪崩。

Sentinel Go 熔斷降級特性基於熔斷器模式的思想,在服務出現不穩定因素(如響應時間變長,錯誤率上升)的時候暫時切斷服務的呼叫,等待一段時間再進行嘗試。一方面防止給不穩定服務“雪上加霜”,另一方面保護服務的呼叫方不被拖垮。Sentinel 支援兩種熔斷策略:基於響應時間(慢呼叫比例)和基於錯誤(錯誤比例/錯誤數),可以有效地針對各種不穩定的場景進行防護。

 

下面我們介紹一下 Sentinel 流控降級的一些最佳實踐。

流控降級最佳實踐

在服務提供方(Service Provider)的場景下,我們需要保護服務提供方不被流量洪峰打垮。我們通常根據服務提供方的服務能力進行流量控制,或針對特定的服務呼叫方進行限制。為了保護服務提供方不被激增的流量拖垮影響穩定性,我們可以結合前期的容量評估,透過 Sentinel 配置 QPS 模式的流控規則,當每秒的請求量超過設定的閾值時,會自動拒絕多餘的請求。

在服務呼叫端(Service Consumer)的場景下,我們需要保護服務呼叫方不被不穩定的依賴服務拖垮。藉助 Sentinel 的訊號量隔離策略(併發數流控規則),限制某個服務呼叫的併發量,防止大量慢呼叫擠佔正常請求的資源;同時,藉助熔斷降級規則,當異常比率或業務慢呼叫比例超過某個閾值後將呼叫自動熔斷,直到一段時間過後再嘗試恢復。熔斷期間我們可以提供預設的處理邏輯(fallback),熔斷期間的呼叫都會返回 fallback 的結果,而不會再去嘗試本已非常不穩定的服務。需要注意的是,即使服務呼叫方引入了熔斷降級機制,我們還是需要在 HTTP 或 RPC 客戶端配置請求超時時間,來做一個兜底的保護。

同時 Sentinel 還提供全域性維度的系統自適應保護能力,結合系統的 Load、CPU 使用率以及服務的入口 QPS、響應時間和併發量等幾個維度的監控指標,透過自適應的流控策略,讓系統的入口流量和系統的負載達到一個平衡,讓系統儘可能跑在最大吞吐量的同時保證系統整體的穩定性。系統規則可以作為整個服務的一個兜底防護策略,保障服務不掛。

Let's start hacking!

Sentinel Go 版本正在快速演進中,我們非常歡迎感興趣的開發者參與貢獻,一起來主導未來版本的演進。Sentinel Go 版本的演進離不開社群的貢獻。若您有意願參與貢獻,歡迎聯絡我們加入 Sentinel 貢獻小組一起成長(Sentinel 開源討論釘釘群:30150716)。

同時,一年一度的阿里巴巴程式設計之夏(Alibaba Summer of Code)開始啦!如果你是在校的學生,有興趣參與 Sentinel 專案的開發和演進,不要錯過此次機會,歡迎 pick 感興趣的 issue 提交提案:https://github.com/alibaba/Sentinel/issues/1497

Now let's start hacking!


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/115974/sentinel-go-0-3-0-released
Sentinel Go 0.3.0 釋出,支援熔斷降級能力已經有49次圍觀

http://coctec.com/news/all/show-post-235804.html