Spring Cloud Alibaba(9)---Sentinel概述


Sentinel概述

隨着微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel是面向分布式服務架構的流量控制組件,主要以流量為切入點,從限流、流量整形、熔斷降級、系統自適應保護、熱點防護等多個維度來幫助業務保障微服務的穩定性。

官方文檔 分布式系統的流量防衛兵

Sentinel系列筆記 Awesome Sentinel

一、Sentinel介紹

1、Sentinel 是什么?

Sentinel譯為“哨兵”,顧名思義,面對您后台的大量服務/微服務,前置一個哨兵,但面對大量請求時,讓后台服務有序被調用,但某些服務的不可用時,采用服務熔斷降級等措施,讓系統仍能平穩運行,不至於造成系統雪崩。

典型應用場景

限流: MQ中消息在某些時間段(比如行情交易的高峰期,秒殺期等)消息並發量非常大時,通過Sentinel起到“削峰填谷”的作用;

熔斷: 某個業務服務非常復雜,需要調用大量微服務,其中某服務不可用時,不影響整體業務運行,如提交某個訂單,需要調用諸如驗證庫存,驗證優惠金額,支付,驗證手機號等,其中驗證手機號服務不可用時,采用降級的方式讓其通過,

不影響整個提交訂單的業務;

2、Sentinel特征

Sentinel 具有以下特征

豐富的應用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的范圍)、消息削峰填谷、集群流量控制、實時熔斷下游不可用應用等。

完備的實時監控:Sentinel 同時提供實時的監控功能。您可以在控制台中看到接入應用的單台機器秒級數據,甚至 500 台以下規模的集群的匯總運行情況。

廣泛的開源生態:Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴並進行簡單的配置即可快速地接入 Sentinel。

完善的 SPI 擴展點:Sentinel 提供簡單易用、完善的 SPI 擴展接口。您可以通過實現擴展接口來快速地定制邏輯。例如定制規則管理、適配動態數據源等。

Sentinel 的主要特性

Sentinel 分為兩個部分

核心庫:(Java 客戶端)不依賴任何框架/庫,能夠運行於所有 Java 運行時環境,同時對 Dubbo / Spring Cloud 等框架也有較好的支持。

控制台:(Dashboard)基於 Spring Boot 開發,打包后可以直接運行,不需要額外的 Tomcat 等應用容器。


二、Sentinel基本概念

這里先介紹一下Sentinel的一些基本概念,方便讀者理解,引用內容都是主要來自官方文檔

資源

資源是 Sentinel 的關鍵概念。它可以是 Java 應用程序中的任何內容,例如,由應用程序提供的服務,或由應用程序調用的其它應用提供的服務,甚至可以是一段代碼。在接下來的文檔中,我們都會用資源來描述代碼塊。
只要通過 Sentinel API 定義的代碼,就是資源,能夠被 Sentinel 保護起來。大部分情況下,可以使用方法簽名,URL,甚至服務名稱作為資源名來標示資源。

規則

圍繞資源的實時狀態設定的規則,可以包括流量控制規則、熔斷降級規則以及系統保護規則。所有規則可以動態實時調整。

舉個簡單的例子,我們提供的一個接口 127.0.0.1:8808/getUser 我們可以把它設置成一個資源。我們為這個接口設置每秒qps不能大於5,這個就是一個流量控制規則。


三、Sentinel 重要功能

1、流量控制

思想保證自己不被上游服務壓垮

任意時間到來的請求往往是隨機不可控的,而系統的處理能力是有限的。我們需要根據系統的處理能力對流量進行控制。Sentinel可以根據需要把隨機的請求調整成合適的形狀。

2、熔斷降級

思想保證自己不被下游服務拖垮

當檢測到調用鏈路中某個資源出現不穩定的表現,例如請求響應時間長或異常比例升高的時候,則對這個資源的調用進行限制,讓請求快速失敗,避免影響到其它的資源而導致級聯故障。

3、系統負載保護

思想:保證外界環境良好(CPU、內存)

當系統負載較高的時候,如果還持續讓請求進入可能會導致系統崩潰,無法響應。在集群環境下,會把本應這台機器承載的流量轉發到其它的機器上去。如果這個時候其它的機器也處在一個邊緣狀態的時候,Sentinel 提供了對應的保護機制,

讓系統的入口流量和系統的負載達到一個平衡,保證系統在能力范圍之內處理最多的請求。


四、Sentinel 對比 Hystrix

從圖中可以看出Sentinel相比於Hystrix功能更強大。

Hystrix 的關注點在於以隔離和熔斷為主的容錯機制,超時或被熔斷的調用將會快速失敗,並可以提供 fallback 機制。

而 Sentinel 的側重更多 包括:多樣化的流量控制、熔斷降級、系統負載保護、實時監控和控制台。而對於熔斷本身而言 Hystrix只支持基於失敗比例熔斷,而Sentinel除了支持基於失敗比例熔斷,還支持超時熔斷。

參考

1、分布式系統的流量防衛兵

2、Sentinel的概念和功能

3、Sentinel+學習筆記

4、Sentinel 對比 Hystrix



少說多做,句句都會得到別人的重視;多說少做,句句都會受到別人的忽視。(9)


免責聲明!

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



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