API 限流策略專為大模型服務及高並發調用情境設計,支援基於 Token 消耗量、請求數和並發數的多維度動態控制機制。該策略可針對消費者身份、請求 Header 參數、Query 參數、Cookie、用戶端 IP、模型名稱等多維度配置限流規則,並提供 API 層級的全域限流能力。這種多維度限流模式能精準匹配大模型計算資源消耗特性,有效防止系統過載、介面濫用及惡意調用,同時保障核心業務在複雜情境下的穩定運行。
策略說明
-
防止資源過載:通過設定靈活的限流策略(如按消費者、Header、Query 參數、Cookie、用戶端 IP 或模型名稱),可以有效限制高頻調用或惡意請求,避免因資源過載導致系統崩潰或效能下降。同時,建議配合緩衝策略以提升系統效能。
-
動態調整流量:支援多種限流範圍(如每秒、每分鐘、每小時、每天),可以根據業務需求靈活調整限流規則,確保系統在高並發情境下仍能穩定運行。
-
多種匹配規則支援:限流策略支援多種匹配規則(精確匹配、首碼匹配、正則匹配、任意匹配),能夠滿足高優先順序的複雜業務情境需求。
-
多種限流模式:支援按 Token 消耗量限流、按請求數限流和按並發數限流三種模式,滿足不同粒度的流量管控需求。
-
模型級精細管控:支援針對不同模型名稱設定差異化的限流閾值,保護高成本模型資源。
-
全域限流能力:支援 API 層級的全域限流(按 API 限流),作為普通規則之外的兜底策略,從整體上控制 API 的 Token 消耗、請求數和並發數。
-
防止惡意攻擊:通過對特定消費者、Header、Query 參數、Cookie 或用戶端 IP 進行限流,可以有效限制爬蟲或自動化工具的訪問頻率,保護資料安全。
適用情境
-
高並發情境:電商大促期間,按使用者單位時間調用 Token 總量限流,防止惡意高頻調用,保障服務穩定及活動公平。
-
AI 服務調用:對大模型 API 的調用進行限流,避免因突發流量導致服務品質下降或系統崩潰。
-
多租戶系統:在開放平台或多租戶架構中,為不同租戶分配獨立的限流配額,確保公平性和資源隔離。
-
模型級精細管控:針對不同模型(如 qwen-max、qwen-plus)設定差異化的 Token 限額和請求數限額,保護高成本模型資源。
-
全域流量保護:通過 API 層級的全域限流,從整體上控制 Token 消耗總量、請求總數和最大並發數,防止 API 被過度調用。
-
惡意攻擊防護:防範針對 AI 介面的爬蟲攻擊、DDoS 攻擊或介面濫用行為,保護系統安全。
操作步驟
-
開啟AI 網關控制台執行個體頁面,在頂部功能表列選擇目標執行個體所在地區,並單擊目標執行個體 ID。
-
在左側導覽列,單擊Model API,然後單擊目標API 名稱進入API 詳情頁面。
-
單擊策略與外掛程式,然後開啟限流開關並配置相關參數。
說明 最多隻支援同時命中 10 條規則。
限流策略
限流策略地區用於配置具體的限流規則。每條規則由三部分組成:判斷條件、限流規則(匹配方式)和限流範圍(限流模式 + 限流值 + 限流單位)。規則支援拖拽排序,可通過添加按鈕新增規則行。
|
配置項 |
說明 |
|
限流 |
開啟或關閉限流策略,預設關閉。 |
|
判斷條件 |
選擇限流維度,支援 6 種:按消費者、按請求 Header、按請求 Query 參數、按請求 Cookie、按用戶端 IP、按模型。 |
|
限流規則 |
根據判斷條件的不同,需要填寫不同的匹配資訊(匹配規則、參數名稱、匹配內容等),詳見下方各維度說明。 |
|
限流範圍 |
選擇限流的時間視窗:每秒、每分鐘、每小時、每天。 |
|
限流值 |
填寫限流閾值。 |
|
限流單位 |
選擇限流的計量單位:Token、請求數或並發數。 |
按消費者
根據消費者身份進行限流,適用於多租戶情境。
-
表單項:判斷條件(按消費者)→ 匹配規則(精確匹配/首碼匹配/正則匹配/任意匹配)→ 消費者選擇 → 限流範圍 → 限流值 + 限流單位
-
消費者選擇:從已有消費者列表中選擇,也可點擊建立消費者快速建立。選擇
任意匹配時無需選擇具體消費者。 -
樣本:任意消費者每分鐘限流 1000 Token。
重要 配置按消費者限流,需要先開啟消費者認證。
按請求 Header
根據請求 Header 中的指定欄位進行限流。
-
表單項:判斷條件(按請求 Header)→ 參數名稱(Header 欄位名)→ 匹配規則(精確匹配/首碼匹配/正則匹配/任意匹配)→ 匹配內容 → 限流範圍 → 限流值 + 限流單位
-
參數名稱:必填,輸入需要匹配的 Header 欄位名。
-
匹配內容:選擇
任意匹配時無需填寫。 -
樣本:限制 Header 中
x-user-level值為beta的請求,每分鐘限流 100 Token。
按請求 Query 參數
根據請求 URL 中的 Query 參數進行限流。
-
表單項:判斷條件(按請求 Query 參數)→ 參數名稱(Query 參數名)→ 匹配規則(精確匹配/首碼匹配/正則匹配/任意匹配)→ 匹配內容 → 限流範圍 → 限流值 + 限流單位
-
參數名稱:必填,輸入需要匹配的 Query 參數名。
-
匹配內容:選擇
任意匹配時無需填寫。 -
樣本:限制 Query 參數中
user_id=1的請求,每分鐘限流 100 Token。
按請求 Cookie
根據請求 Cookie 中的指定欄位進行限流。
-
表單項:判斷條件(按請求 Cookie)→ 參數名稱(Cookie 欄位名)→ 匹配規則(精確匹配/首碼匹配/正則匹配/任意匹配)→ 匹配內容 → 限流範圍 → 限流值 + 限流單位
-
參數名稱:必填,輸入需要匹配的 Cookie 欄位名。
-
匹配內容:選擇
任意匹配時無需填寫。 -
樣本:限制 Cookie 中帶有目標標識的請求,每分鐘限流 100 Token。
按用戶端 IP
根據用戶端 IP 位址進行限流,支援單個 IP 和 IP 段。
-
表單項:判斷條件(按用戶端 IP)→ IP 位址 → 限流值 + 限流單位
-
IP 位址:輸入需要限流的 IP 位址(如
192.168.1.1)或 IP 段(如192.168.1.0/24)。填寫0.0.0.0/0表示匹配所有用戶端 IP。 -
樣本:限制每個用戶端 IP 最大並發數為 50。
說明 按用戶端 IP 限流無需選擇匹配規則和限流範圍,系統會自動處理。
按模型
針對特定模型名稱設定獨立的限流閾值,適用於多模型服務情境。
-
表單項:判斷條件(按模型)→ 匹配規則(精確匹配,固定不可更改)→ 模型名稱 → 限流值 + 限流單位
-
模型名稱:必填,輸入需要限流的目標模型名稱。
-
限流單位:支援 Token、請求數和並發數三種。
-
樣本:
qwen-max每分鐘限流 500 Token,同時限制最大並發數為 10。
說明 按模型限流固定使用精確匹配。如果需要更靈活的模型匹配(如首碼匹配、正則匹配),可以使用"按請求 Header"並手動指定參數名稱為 x-higress-llm-model。
按 API 限流(全域限流)
按 API 限流是獨立於上述限流策略之外的兜底策略,對整個 API 進行全域限流,不區分具體的判斷條件。
-
啟用方式:勾選按 API 限流地區的開啟複選框。
-
表單項:限流範圍(每秒/每分鐘/每小時/每天)→ 限流值 + 限流單位(Token/請求數/並發數)
-
支援添加多條:可通過添加按鈕新增多條全域限流規則,分別設定不同的限流模式。
-
樣本:整個 API 每分鐘最多消耗 10000 Token,每分鐘最多 100 次請求,最大並發數為 20。
說明 按 API 限流為上述策略之外的兜底策略。全域限流和普通規則可以同時使用,兩者疊加生效,命中任一規則即觸發限流。
-
確認配置資訊並單擊儲存。
匹配規則
按消費者、按請求 Header、按請求 Query 參數、按請求 Cookie 四種判斷條件支援以下四種匹配規則,優先順序:精確匹配 > 首碼匹配 > 正則匹配 > 任意匹配。
|
匹配規則 |
說明 |
樣本 |
|
精確匹配 |
匹配值與目標值完全相同 |
Header |
|
首碼匹配 |
匹配值以指定首碼開頭 |
Header |
|
正則匹配 |
匹配值符合指定Regex |
Header |
|
任意匹配 |
匹配該維度下的所有值,無需填寫匹配內容 |
任意消費者均適用 |
說明 如果配置了多條規則,則命中任一規則即被攔截。按用戶端 IP 和按模型有各自固定的匹配方式,無需手動選擇匹配規則。
限流單位與限流模式
每條限流規則的限流值後面可以選擇限流單位,不同的限流單位對應不同的計量方式:
|
限流單位 |
說明 |
適用的判斷條件 |
|
Token |
按大模型的傳入傳出 Token 消耗量計算 |
所有判斷條件 |
|
請求數 |
按請求次數計算 |
所有判斷條件 |
|
並發數 |
按同時處理的請求數量計算 |
所有判斷條件 |
限流策略支援以下限流範圍(時間視窗),與限流單位組合使用:
|
限流範圍 |
Token 限流 |
請求數限流 |
並發數限流 |
|
每秒 |
每秒允許消耗的最大 Token 數 |
每秒允許的最大請求次數 |
— |
|
每分鐘 |
每分鐘允許消耗的最大 Token 數 |
每分鐘允許的最大請求次數 |
— |
|
每小時 |
每小時允許消耗的最大 Token 數 |
每小時允許的最大請求次數 |
— |
|
每天 |
每天允許消耗的最大 Token 數 |
每天允許的最大請求次數 |
— |
|
(無時間視窗) |
— |
— |
允許同時處理的最大請求數 |
帶時間視窗的限流範圍採用固定 TTL 時間視窗統計。同一限流維度和匹配值對應一個獨立限流 Key,視窗從該 Key 首次寫入有效統計資料時開始計時,不按自然時間邊界(例如 1:00 到 2:00)切分,也不是滑動視窗。視窗到期後自動重設,後續請求不會重新整理當前視窗的到期時間。例如,某 Key 在 01:23:10 首次寫入統計且配置每小時限流,則該視窗到 02:23:10 左右重設,而不是在 02:00:00 重設。
說明 並發數限流不需要選擇限流範圍(時間視窗),直接設定最大並發數即可。
配置樣本
樣本一:按消費者 Token 限流 + 按用戶端 IP 並發限流
配置兩條規則:任意消費者每分鐘限流 1000 Token,每個用戶端 IP 最大並發數 50。
|
序號 |
判斷條件 |
匹配規則 |
參數名稱/匹配內容 |
限流範圍 |
限流值 |
限流單位 |
|
1 |
按消費者 |
任意匹配 |
— |
每分鐘 |
1000 |
Token |
|
2 |
按用戶端 IP |
— |
0.0.0.0/0 |
— |
50 |
並發數 |
樣本二:按請求 Header 限流(多種匹配規則)
針對不同 Header 值設定差異化限流規則:
|
序號 |
判斷條件 |
參數名稱 |
匹配規則 |
匹配內容 |
限流範圍 |
限流值 |
限流單位 |
|
1 |
按請求 Header |
x-user-level |
精確匹配 |
beta |
每分鐘 |
100 |
Token |
|
2 |
按請求 Header |
x-user-level |
首碼匹配 |
vip |
每小時 |
5000 |
Token |
|
3 |
按請求 Header |
x-app-id |
任意匹配 |
— |
每分鐘 |
50 |
請求數 |
樣本三:按模型名稱差異化限流
針對不同模型設定差異化限流:qwen-max 每分鐘限流 500 Token 且最大並發 10,qwen-plus 每分鐘限流 2000 Token。
|
序號 |
判斷條件 |
匹配規則 |
模型名稱 |
限流範圍 |
限流值 |
限流單位 |
|
1 |
按模型 |
精確匹配 |
qwen-max |
每分鐘 |
500 |
Token |
|
2 |
按模型 |
精確匹配 |
qwen-plus |
每分鐘 |
2000 |
Token |
|
3 |
按模型 |
精確匹配 |
qwen-max |
— |
10 |
並發數 |
樣本四:按 API 限流(全域限流)+ 消費者限流組合
在消費者限流基礎上,開啟按 API 限流作為兜底策略:
限流策略(普通規則):
|
序號 |
判斷條件 |
匹配規則 |
限流範圍 |
限流值 |
限流單位 |
|
1 |
按消費者 |
任意匹配 |
每分鐘 |
1000 |
Token |
按 API 限流(全域規則,勾選"開啟"):
|
序號 |
限流範圍 |
限流值 |
限流單位 |
|
1 |
每分鐘 |
10000 |
Token |
|
2 |
每分鐘 |
100 |
請求數 |
|
3 |
— |
20 |
並發數 |
說明 按 API 限流為上述策略之外的兜底策略,需要單獨勾選"開啟",與普通規則獨立配置。
樣本五:混合多維度限流
同時配置多種判斷條件的限流規則:
|
序號 |
判斷條件 |
參數名稱 |
匹配規則 |
匹配內容/IP/模型名稱 |
限流範圍 |
限流值 |
限流單位 |
|
1 |
按消費者 |
— |
精確匹配 |
consumer-001 |
每分鐘 |
500 |
Token |
|
2 |
按請求 Header |
x-user-level |
首碼匹配 |
vip |
每小時 |
10000 |
Token |
|
3 |
按請求 Query 參數 |
user_id |
正則匹配 |
^[0-9]+$ |
每分鐘 |
200 |
請求數 |
|
4 |
按請求 Cookie |
session |
任意匹配 |
— |
每分鐘 |
100 |
請求數 |
|
5 |
按用戶端 IP |
— |
— |
192.168.1.0/24 |
— |
30 |
並發數 |
|
6 |
按模型 |
— |
精確匹配 |
qwen-max |
每分鐘 |
1000 |
Token |
常見問題
Q:最多可以配置多少條限流規則?
A:最多隻支援同時命中 10 條規則。您可以根據業務需求靈活組合不同維度規則,但建議控制規則數量以確保效能。
Q:多條規則之間的關係是什嗎?
A:多條規則之間的關係為或,即命中任一規則即觸發限流。相同限流維度(相同判斷條件 + 匹配鍵)的規則會被合并到同一個規則群組中執行。
Q:按 API 限流和普通限流規則可以同時使用嗎?
A:可以。按 API 限流(全域規則)作為普通規則之外的兜底策略,作用於整個 API 層級,不區分具體的 key;普通規則按維度細分限流。兩者可以疊加使用,任一規則引發即執行限流。
Q:按模型限流和按請求 Header 限流有什麼區別?
A:按模型限流時,系統會自動將其轉換為基於 x-higress-llm-model Header 的精確匹配限流。如果需要更靈活的模型匹配(如首碼匹配、正則匹配),可以使用按請求 Header 限流並手動指定參數名稱為 x-higress-llm-model。
Q:Token、請求數和並發數三種限流單位可以組合使用嗎?
A:可以。同一個判斷條件下可以添加多條規則,分別選擇不同的限流單位。例如,針對同一個模型既可以設定每分鐘 Token 限額,也可以設定最大並發數限額,兩者獨立計數,命中任一即觸發限流。
Q:按用戶端 IP 限流為什麼沒有匹配規則和限流範圍選項?
A:按用戶端 IP 限流的表單經過簡化設計,只需輸入 IP 位址或 IP 段即可。系統會自動處理匹配邏輯。如果需要對所有用戶端 IP 進行限流,可以輸入 0.0.0.0/0。
Q:規則的順序是否影響限流效果?
A:規則支援拖拽排序,但多條規則之間的關係為或,命中任一規則即觸發限流,因此規則順序不影響最終的限流效果。
Q:更新限流配置後多久生效?
A:更新配置後,系統會自動將新的限流規則推送到網關資料面,通常在幾秒內生效。
Q:限流在分布式架構下的準確性如何?
A:由於分布式架構的特性,限流計數可能存在輕微偏差。實際允許的請求數與配置數會因請求量、速率、後端延遲等因素產生差異。