- 微服務保護——限流規則
-
- 一、快速入門:
-
- 1、簇點鍊路:
- 二、流控模式:
-
- (一)三種模式:
- (二)關聯模式:
-
- 1、例子:
- 2、 使用場景:
- 3、案例:
- (三)鍊路模式:
-
- 1、例子:
- 2、案例
- 三、流控效果:
-
- (一)流控效果的種類
-
- 1、快速失敗:
- 2、warm up預熱模式:
- 3、排隊等待:
- (二)預熱模式:
- (三)排隊等待:
- 四、熱點參數限流:
-
- (一)了解:
微服務保護——限流規則
一、快速入門:
1、簇點鍊路:
簇點鍊路:就是項目内的調用鍊路,鍊路中被監控的每個接口就是一個資源。
預設情況下sentinel會監控SpringMVC的每一個端點(Endpoint),是以SpringMVC的每一個端點(Endpoint)就是調用鍊路中的一個資源。
流控、熔斷等都是針對簇點鍊路中的資源來設定的,是以我們可以點選對應資源後面的按鈕來設定規則:
二、流控模式:
(一)三種模式:
在添加限流規則時,點選進階選項,可以選擇三種流控模式:
1、直接:統計目前資源的請求,觸發門檻值時對目前資源直接限流,也是預設的模式
2、關聯:統計與目前資源相關的另一個資源,觸發門檻值時,對目前資源限流
3、鍊路:統計從指定鍊路通路到本資源的請求,觸發門檻值時,對指定鍊路限流
(二)關聯模式:
1、例子:
AB兩個資源,A觸發了門檻值,對B進行限流;
2、 使用場景:
比如使用者支付時需要修改訂單狀态,同時使用者要查詢訂單。查詢和修改操作會争搶資料庫鎖,産生競争。業務需求是優先支付和更新訂單的業務,是以當修改訂單業務觸發門檻值時,需要對查詢訂單業務限流。
滿足下面條件可以使用關聯模式:
1、兩個有競争關系的資源
2、一個優先級較高,一個優先級較低
當/write資源通路量觸發門檻值時,就會對/read資源限流,避免影響/write資源
3、案例:
給誰限流,資源名就寫誰。
(三)鍊路模式:
1、例子:
統計從指定鍊路通路到本資源的請求,觸發門檻值時,對指定鍊路限流;也就是說:ABC三個服務請求都要通路D的請求,隻統計A服務到本資源的請求,觸發門檻值則對A的請求限流。
2、案例
三、流控效果:
(一)流控效果的種類
流控效果是指請求達到流控門檻值時應該采取的措施,包括三種:
1、快速失敗:
達到門檻值後,新的請求會被立即拒絕并抛出FlowException異常。是預設的處理方式。
2、warm up預熱模式:
對超出門檻值的請求同樣是拒絕并抛出異常。但這種模式門檻值會動态變化,從一個較小值逐漸增加到最大門檻值。
3、排隊等待:
讓所有的請求按照先後次序排隊執行,兩個請求的間隔不能小于指定時長,否則也會抛出異常,拒絕這個請求。
(二)預熱模式:
主要是為了避免冷啟動那一刻過高的并發導緻服務故障。是以讓門檻值逐漸增大,而不是一下子就達到門檻值的最大值。
(三)排隊等待:
對于不穩定的通路請求,使用排隊等待模式則可以讓請求穩定地被放行。比如在兩秒内,第一秒沒有請求,第二秒突然來了10個請求,這個時候達到門檻值,它會把這寫請求放到一個隊列中,然後隊列每隔200ms就放行一個請求。這就能讓波浪形的QPS變成平緩形的QPS。可以起到流量整形的效果。
四、熱點參數限流:
(一)了解:
注意點:熱點參數限流對預設的SpringMVC資源無效,需要給資源添加注解@SentinelResource(“資源名稱”)