sentinel流量卫兵组件学习
官網地址:https://sentinelguard.io/
筆記對應demo:https://gitee.com/panlsp/springcloud_alibaba_parent
一、使用 sentinel dashboard
1、下載
下載地址:https://github.com/alibaba/Sentinel/tags
2、啟動
啟動時修改web端口為9191(默認為8080)
java -jar -D.server.port=9191 sentinel-dashboard-1.8.3.jar3、訪問
賬號密碼都為:sentinel
二、sentinel 項目
1、導入依賴
<!-- sentinel 依賴 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>二、配置信息
server:port: 8989 spring:application:name: SENTINELcloud:# sentinel配置sentinel:# 開啟狀態(默認)enabled: true# 立即初始化eager: truetransport:# web 地址dashboard: localhost:9191# 通信地址(默認)port: 87193、書寫測試的demo(controller)
@RestController public class DemoController {@GetMapping("demo")public String demo(){return "demo ok !!!";}}4、訪問測試
多次訪問測試的controller,觀看sentinel dashboard 的服務狀態
三、規則限制
1、流量控制
流量控制(FlowController)
定義:其原理是監控應用流量的 QPS 或 并發線程數 指標,當達到指定的閾值時對流量進行控制,以避免被瞬時的流量高峰沖垮,從而保障應用的高可用性。
**QPS:**每秒請求數
 當每秒請求數超過指定閾值之后對當前請求進行限流
**并發線程數:**當服務器中創建的線程數超過指定閾值之后對當前請求進行限流
1.1、流控模式
- 直接模式:直接流控模式是最簡單的模式,當指定的接口達到限流條件時開啟限流。
 - 關聯模式:關聯流控模式指的是,當指定接口關聯的接口達到限流條件時,開啟對指定接口開啟限流。
 - 鏈路模式:當從某個接口過來的資源達到限流條件時,開啟限流。它的功能有點類似于針對來源配置項,區別在于:針對來源是針對上級微服務,而鏈路流控是針對上級接口,也就是說它的粒度更細。
 
1.2、流控效果(只適用于QPS限流)
- 快速失敗:直接拒絕請求,并拋出相應異常
 - Warm Up:(冷啟動,預熱)
 - 排隊等待:(始終勻速通過)
 
2、熔斷降級
除了流量控制以外,對調用鏈路中不穩定的資源進行熔斷降級也是保障高可用的重要措施之一。一個服務常常會調用別的模塊,可能是另外的一個遠程服務、數據庫,或者第三方 API 等。例如,支付的時候,可能需要遠程調用銀聯提供的 API;查詢某個商品的價格,可能需要進行數據庫查詢。然而,這個被依賴服務的穩定性是不能保證的。如果依賴的服務出現了不穩定的情況,請求的響應時間變長,那么調用服務的方法的響應時間也會變長,線程會產生堆積,最終可能耗盡業務自身的線程池,服務本身也變得不可用。
- 慢調用比例 (SLOW_REQUEST_RATIO):選擇以慢調用比例作為閾值,需要設置允許的慢調用 RT(即最大的響應時間),請求的響應時間大于該值則統計為慢調用。當單位統計時長(statIntervalMs)內請求數目大于設置的最小請求數目,并且慢調用的比例大于閾值,則接下來的熔斷時長內請求會自動被熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求響應時間小于設置的慢調用 RT 則結束熔斷,若大于設置的慢調用 RT 則會再次被熔斷。
 - 異常比例 (ERROR_RATIO):當單位統計時長(statIntervalMs)內請求數目大于設置的最小請求數目,并且異常的比例大于閾值,則接下來的熔斷時長內請求會自動被熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求成功完成(沒有錯誤)則結束熔斷,否則會再次被熔斷。異常比率的閾值范圍是 [0.0, 1.0],代表 0% - 100%。
 - 異常數 (ERROR_COUNT):當單位統計時長內的異常數目超過閾值之后會自動進行熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求成功完成(沒有錯誤)則結束熔斷,否則會再次被熔斷。
 
3、熱點參數限流
何為熱點?熱點即經常訪問的數據。很多時候我們希望統計某個熱點數據中訪問頻次最高的 Top K 數據,并對其訪問進行限制。比如:
- 商品 ID 為參數,統計一段時間內最常購買的商品 ID 并進行限制
 - 用戶 ID 為參數,針對一段時間內頻繁訪問的用戶 ID 進行限制
 
熱點參數限流會統計傳入參數中的熱點參數,并根據配置的限流閾值與模式,對包含熱點參數的資源調用進行限流。熱點參數限流可以看做是一種特殊的流量控制,僅對包含熱點參數的資源調用生效。
ID 并進行限制
- 用戶 ID 為參數,針對一段時間內頻繁訪問的用戶 ID 進行限制
 
熱點參數限流會統計傳入參數中的熱點參數,并根據配置的限流閾值與模式,對包含熱點參數的資源調用進行限流。熱點參數限流可以看做是一種特殊的流量控制,僅對包含熱點參數的資源調用生效。
總結
以上是生活随笔為你收集整理的sentinel流量卫兵组件学习的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 离散元后处理,将PFC数据写出并导入到m
 - 下一篇: jquery 报错提示Uncaught