Sentinel 特性

bluepeach發表於2021-09-09

1、輕量級和高效能

Sentinel 作為一個功能完備的高可用流量管控元件,其核心 sentinel-core 沒有任何多餘依賴,打包後只有不到 200 KB,非常輕量級。開發者可以放心地引入 sentinel-core 而不需擔心依賴問題。同時,Sentinel 提供了多種擴充套件點,使用者可以很方便地根據需求去進行擴充套件,並且無縫地切合到 Sentinel 中。

引入 Sentinel 帶來的效能損耗非常小。只有在業務單機量級超過 25W QPS 的時候才會有一些顯著的影響(5% - 10% 左右),單機 QPS 不太大的時候損耗幾乎可以忽略不計。

2、流量控制

Sentinel 可以針對不同的呼叫關係,以不同的執行指標(如 QPS、併發呼叫數、系統負載等)為基準,對資源呼叫進行流量控制,將隨機的請求調整成合適的形狀。

Sentinel 支援多樣化的流量整形策略,在 QPS 過高的時候可以自動將流量調整成合適的形狀。常用的有:

直接拒絕模式:即超出的請求直接拒絕。
慢啟動預熱模式:當流量激增的時候,控制流量透過的速率,讓透過的流量緩慢增加,在一定時間內逐漸增加到閾值上限,給冷系統一個預熱的時間,避免冷系統被壓垮。

勻速器模式:利用 Leaky Bucket 演算法實現的勻速模式,嚴格控制了請求透過的時間間隔,同時堆積的請求將會排隊,超過超時時長的請求直接被拒絕。Sentinel 還支援基於呼叫關係的限流,包括基於呼叫方限流、基於呼叫鏈入口限流、關聯流量限流等,依託於 Sentinel 強大的呼叫鏈路統計資訊,可以提供精準的不同維度的限流。

目前 Sentinel 對非同步呼叫鏈路的支援還不是很好,後續版本會著重改善支援非同步呼叫。

3、系統負載保護

Sentinel 對系統的維度提供保護,負載保護演算法借鑑了 TCP BBR 的思想。當系統負載較高的時候,如果仍持續讓請求進入,可能會導致系統崩潰,無法響應。在叢集環境下,網路負載均衡會把本應這臺機器承載的流量轉發到其它的機器上去。如果這個時候其它的機器也處在一個邊緣狀態的時候,這個增加的流量就會導致這臺機器也崩潰,最後導致整個叢集不可用。針對這個情況,Sentinel 提供了對應的保護機制,讓系統的入口流量和系統的負載達到一個平衡,保證系統在能力範圍之內處理最多的請求。


4、實時監控和控制皮膚

Sentinel 提供 HTTP API 用於獲取實時的監控資訊,如呼叫鏈路統計資訊、簇點資訊、規則資訊等。如果使用者正在使用 Spring Boot/Spring Cloud 並使用了Sentinel Spring Cloud Starter,還可以方便地透過其暴露的 Actuator Endpoint 來獲取執行時的一些資訊,如動態規則等。未來 Sentinel 還會支援標準化的指標監控 API,可以方便地整合各種監控系統和視覺化系統,如 Prometheus、Grafana 等。

Sentinel控制檯(Dashboard)提供了機器發現、配置規則、檢視實時監控、檢視呼叫鏈路資訊等功能,使得使用者可以非常方便地去檢視監控和進行配置。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2558/viewspace-2807300/,如需轉載,請註明出處,否則將追究法律責任。

相關文章