認識Sentinel 流量規則模組
Sentinel 流量規則模組
系統併發能⼒有限,⽐如系統A的QPS⽀持1個,如果太多請求過來,那麼A就應該進⾏流量控制了,⽐如其他請求直接拒絕
資源名:預設請求路徑
針對來源:Sentinel可以針對調⽤者進⾏限流,填寫微服務名稱,預設default(不區分來源)
閾值型別/單機閾值
QPS:(每秒鐘請求數量)當調⽤該資源的QPS達到閾值時進⾏限流
執行緒數:當調⽤該資源的執行緒數達到閾值的時候進⾏限流(執行緒處理請求的時候,如果說業務邏輯執⾏時間很⻓,流量洪峰來臨時,會耗費很多執行緒資源,這些執行緒資源會堆積,最終可能造成服務不可⽤,進⼀步上游服務不可⽤,最終可能服務雪崩)
是否叢集:是否叢集限流
流控模式:
直接:資源調⽤達到限流條件時,直接限流
關聯:關聯的資源調⽤達到閾值時候限流⾃⼰
鏈路:只記錄指定鏈路上的流量
流控效果:
快速失敗:直接失敗,丟擲異常
Warm Up:根據冷載入因⼦(預設3)的值,從閾值/冷載入因⼦,經過預熱時⻓,才達到設定的QPS閾 值
排隊等待:勻速排隊,讓請求勻速通過,閾值型別必須設定為QPS,否則⽆效
流控模式之關聯限流**
關聯的資源調⽤達到閾值時候限流⾃⼰,⽐如⽤戶註冊接⼝,需要調⽤身份證校驗接⼝(往往身份證校驗接⼝),如果身份證校驗接⼝請求達到閾值,使⽤關聯,可以對⽤戶註冊接⼝進⾏限流。
流控模式之鏈路限流
鏈路指的是請求鏈路(調⽤鏈)
鏈路模式下會控制該資源所在的調⽤鏈路⼊⼝的流量。需要在規則中配置⼊⼝資源,即該調⽤鏈路⼊⼝的上下⽂名稱。
上圖中來⾃⼊⼝ Entrance1 和 Entrance2 的請求都調⽤到了資源 NodeA ,Sentinel 允許只根據某個調⽤⼊⼝的統計資訊對資源限流。⽐如鏈路模式下設定⼊⼝資源為 Entrance1 來表示只有從⼊⼝Entrance1 的調⽤才會記錄到 NodeA 的限流統計當中,⽽不關⼼經 Entrance2 到來的調⽤。
流控效果之Warm up
當系統⻓期處於空閒的情況下,當流量突然增加時,直接把系統拉昇到⾼⽔位可能瞬間把系統壓垮,⽐如電商⽹站的秒殺模組。
通過 Warm Up 模式(預熱模式),讓通過的流量緩慢增加,經過設定的預熱時間以後,到達系統處理請求速率的設定值。Warm Up 模式預設會從設定的 QPS 閾值的 1/3 開始慢慢往上增加⾄ QPS 設定值
流控效果之排隊等待
排隊等待模式下會嚴格控制請求通過的間隔時間,即請求會勻速通過,允許部分請求排隊等待,通常⽤於訊息佇列削峰填⾕等場景。需設定具體的超時時間,當計算的等待時間超過超時時間時請求就會被拒絕。
很多流量過來了,並不是直接拒絕請求,⽽是請求進⾏排隊,⼀個⼀個勻速通過(處理),請求能等就
等著被處理,不能等(等待時間>超時時間)就會被拒絕
例如,QPS 配置為 5,則代表請求每 200 ms 才能通過⼀個,多出的請求將排隊等待通過。超時時間代表最⼤排隊時間,超出最⼤排隊時間的請求將會直接被拒絕。排隊等待模式下,QPS 設定值不要超過1000(請求間隔 1 ms)。