配置流控規則的原理是監控應用或服務流量的QPS指標,當指標達到設定的閾值時立即攔截流量,避免應用被瞬時的流量高峰沖垮,從而保障應用高可用性。本文介紹如何配置管理流控規則,以及3種常用場景的流控配置規則。
前提條件
將應用接入AHAS應用防護,具體操作請參見接入應用方式。
背景信息
流量控制在網絡傳輸中是一個常用的概念,常用于調整網絡包的發送數據。系統需要處理的請求是隨機不可控的,而系統的處理能力是有限的,因此就需要根據系統的處理能力對流量進行控制。
新建流控規則
- 登錄AHAS控制臺。
- 在AHAS控制臺左上角,選擇應用接入的地域。
- 在控制臺左側導航欄中選擇 。
- 在應用防護頁面的應用卡片頁簽單擊目標應用卡片。
- 選擇以下任意一種方法進入新建流控規則頁面:
- 在左側導航欄單擊接口詳情,在接口詳情頁面單擊資源卡片右上角或的圖標,然后在管理規則對話框中單擊新增流控規則頁簽。
- 在左側導航欄單擊應用概覽,然后單擊頁面下方目標接口操作列中的流控。
- 在左側導航欄單擊規則設置,在流控規則頁簽的右上角單擊新增流控規則。
在新建流控規則對話框中配置規則信息。
單機模式
參數
描述
接口名稱
待流控的資源名稱。
來源應用
該規則針對的來源應用,默認來源應用設為
default
,代表不區分來源應用。若是Dubbo服務,請填寫對應調用方的Dubbo applicationName,注意調用方也需要接入Sentinel。
若是Web服務,請參見擴展接口。
若是通過注解、自定義埋點,請參見常用類及其方法,ContextUtil只在調用鏈入口生效,即首個埋點生效。
當前賬號下已經接入了流量防護的其他應用,填寫
default
即表示不特殊區分。
重要來源數目不宜過多,200個以內內存使用量可控,過多則會影響性能。
統計維度
選擇資源調用關系進行流控。
QPS 閾值
觸發對流控接口的統計維度對象的QPS閾值。
流控效果
選擇流控方式來處理被攔截的流量。
快速失敗:達到閾值時,立即攔截請求。按照應用系統設置中的適配模塊配置信息,進行內容返回。
預熱啟動:需設置具體的預熱時間。詳情請參見Warm Up(冷啟動)。
如果系統在此之前長期處于空閑的狀態,當流量突然增大的時候,該方式會讓處理請求的速率緩慢增加,經過設置的預熱時間以后,到達系統處理請求速率的設定值。默認會從設置的QPS閾值的1/3開始慢慢往上增加至設置的QPS值,多余請求會按照快速失敗處理。
排隊等待:請求勻速通過,允許排隊等待,通常用于請求調用削峰填谷等場景。需設置具體的超時時間,達到超時時間后請求會快速失敗。 詳情請參見削峰填谷。
是否開啟
打開開關表示啟用該規則,關閉開關表示禁用該規則。開關修改之后會立即生效。
集群流控模式
參數
描述
是否集群流控
開啟集群流控,對集群內此資源的調用總量進行限制。
接口集群總QPS
該接口預估的集群最大QPS,表示最大流量,用于為Token Server自動分配提供參考,當流量超出該值的請求會退化到單機模式。
閾值模式
可選擇設置集群QPS閾值或單機QPS閾值。
集群QPS閾值:設置的閾值等同于整個集群的總閾值。
單機QPS閾值:設置的閾值等同于單機能夠承受的限額,Token Server會根據連接數來計算總的閾值。
失敗退化策略
當出現連接失敗、通信失敗或Token Server不可用等情況時,流控規則是退化到單機限流的模式或是直接通過忽略失敗情況。
退化到單機限流:當出現失敗的情況時,退化到根據的單機閾值來進行流控。需要設置退化單機閾值,代表單機的兜底閾值。
直接通過:當出現失敗的情況時,忽略失敗情形,直接通過。
單擊新建。
常用場景
常用場景下的流控規則配置可參見以下示例。
場景1 流量勻速通過
請求流量具有波峰波谷的特點,流控的原理是將前面的峰值流量延遲(排隊時長)到后面再處理,既能最大化滿足所有請求,又能保證用戶體驗。詳情請參見削峰填谷。
例如,統計維度選擇當前接口,流控效果選擇排隊等待,配置勻速模式下請求QPS閾值為5。系統則每200 ms處理一條請求,多余的處理任務將排隊;同時設置了等待時長為5s,則預計排隊時長超過5s的處理任務將快速失敗。如下圖所示。
場景2 資源爭搶時,留足資源給優先級高的接口
read_db
和write_db
這兩個資源分別代表數據庫讀寫。為保證提交的數據不丟失,write_db
接口優先級更高。當寫庫操作過于頻繁時,讀數據的請求會被限流。詳情請參見關聯限流。例如,統計維度選擇關聯接口,流控效果選擇快速失敗,并發數閾值為10,則當
write_db
資源的QPS超過10之后,read_db
會被限流以保證留足資源給write_db
,避免write_db
數據丟失。如下圖所示。場景3 預熱啟動避免大流量沖擊
流控的原理是在流量入口處將流量控制住緩緩放進來,可以讓通過的流量緩慢增加,在一定時間內逐漸增加到閾值上限,以便系統可以預熱。最適合突發流量的場景。詳情請參見Warm Up(冷啟動)。
例如,統計維度選擇鏈路入口,流控效果選擇預熱啟動,QPS閾值為60,預熱時間為2s,預熱流控方式下,默認會從設置的QPS閾值的1/3開始慢慢往上增加至QPS設置值。本示例中,當入口的QPS超過20(即60÷3)時,會在預熱的2s內緩慢增長至60。在如下圖所示。
管理流控規則
在流控規則頁面,您可以啟用、禁用、編輯或刪除流控規則。
單流控規則啟用/禁用:
在流控規則頁面,找到目標資源下對應的流控規則,單擊狀態欄的啟用開關,可快速啟用或禁用該規則。
多流控規則批量啟用/禁用:
在流控規則頁面,勾選多個流控規則,單擊批量啟用或批量禁用,可快速啟用或禁用多個規則。
編輯規則:
在流控規則頁面,找到目標資源下對應的流控規則,單擊操作欄的編輯,可修改該規則的相關信息。
刪除規則:
在流控規則頁面,找到目標資源下對應的流控規則,單擊操作欄的刪除。