sentinel的四種流控規則介紹

sentinel的四種流控規則介紹今天的內容我們主要圍繞四個點進行展開介紹 。

  • 流控模式 :關聯、鏈路
  • 流控效果 :Warm Up、排隊等待

sentinel的四種流控規則介紹

文章插圖
這四點具體是什么意思呢?
首先啟動項目:cloud-alibaba-sentinel-8006
一:關聯在官方的介紹中是這樣說的:關聯的資源達到閾值時,就限流自己 。
這句話是什么意思呢?用比較直白一點的話來講,假設我們有A和B兩個接口 , 當A關聯B接口,同時B接口的資源達到設定的閾值時,限流A 。我們也可以理解成,當我們下游的服務出現訪問壓力過大時,對上游的服務進行攔截和限流操作 , 例如:電商系統 , 當我們訂單系統超出承受閾值時,對我們支付模塊進行限流 。
sentinel的四種流控規則介紹

文章插圖
例如:當我們關聯order接口達到我們設定的閾值時 , 限流pay的接口訪問 。
@Slf4j@RestControllerpublic class TestController {@GetMapping("/pay")public String pay() {return "hello my name is pay ,wo shi boy";}@GetMapping("/order")public String order(){return "hi my name is order, me is girl";}}給pay接口添加流控規則
sentinel的四種流控規則介紹

文章插圖
在這里我們需要使用到postMan工具,來模擬并發訪問,用它來測試我們的order接口的并發訪問 。
sentinel的四種流控規則介紹

文章插圖

sentinel的四種流控規則介紹

文章插圖
在這里的意思是25個線程0.25秒跑一次 , 當我們跑起來之后,再去訪問pay接口就可以看到以下信息
sentinel的四種流控規則介紹

文章插圖

sentinel的四種流控規則介紹

文章插圖
當我們對order接口進行并發訪問的時候,這個時候我們去訪問pay接口,就可以看到pay接口返回限流信息
二:鏈路鏈路的意思是值當某個接口過來的資源達到閾值時,開啟限流,主要是針對于請求來源的微服務,具有更細顆粒度 。
比如在一個服務應用中,多個(pay和order)接口都調用了同一個服務中的方法(該方法必須使用注解 SentinelResource進行修飾),如果頻繁的去請求pay接口,并且達到設定的閾值,這么時候我們再去請求order接口,那么調用了同一服務的order接口就會被限流
sentinel的四種流控規則介紹

文章插圖
test類
@Servicepublic class TestService {// 定義限流資源@SentinelResource("end")public String end(){return "end method";}}controller類
@Slf4j@RestControllerpublic class TestController {@Autowiredprivate TestService testService;@GetMapping("/pay")public String pay() {return testService.end();}@GetMapping("/order")public String order(){return testService.end();}}配置項web-context-unify,這個配置的意思是說根據不同的URL進行鏈路限流,否則沒有效果
spring:application:name: cloudalibaba-sentinel-servicecloud:nacos:discovery:server-addr: localhost:8848sentinel:transport:#配置Sentinel地址,就是我們的WEB界面dashboard: localhost:8080#Sentinel配置默認8719端口,被占用端口會自動從+1,直到找到未被占用的端口port: 8719# 配置為falseweb-context-unify: false我們訪問pay接口和order接口后,需要對end進行流控規則的配置,也就是使用了SentinelResource注解標注的方法進行流控設置 。
sentinel的四種流控規則介紹

文章插圖
那么這個時候如果我們頻繁的去訪問order接口的時候,就會出現異常的情況,直接拋出錯誤提示,這個也是因為快速失敗在鏈路上的直接體現
sentinel的四種流控規則介紹

文章插圖
三:Warm Up參考文檔:https://sentinelguard.io/zh-cn/docs/flow-control.html
Warm Up 流量控制,也叫預熱或者冷啟動方式,會根據我們設定的規則,進行緩慢的流量放開 , 逐漸增加閾值上限,給系統一個反應時間,避免流量的突然增加,將系統壓垮的情況發生,主要用于預防我們系統長期處于穩定的流量訪問下 , 突然流量的增加,將系統資源直接拉滿的情況.
sentinel的四種流控規則介紹

文章插圖
在這里我們主要弄明白兩個參數

推薦閱讀