全部產品
Search
文件中心

Server Load Balancer:Token 限速實踐

更新時間:Aug 12, 2026

ALB擴充版支援Token限速,可按使用者、賬戶等維度限制指定時間視窗內的Token消耗量,防止資源濫用並控制大模型調用成本。

方案架構

擴充版ALB執行個體接收用戶端請求,轉寄規則根據請求網域名稱匹配請求。Token限速組件通過服務擴充關聯轉寄規則,在轉寄動作前執行:根據HTTP標題中的限速標識符查詢該標識符在指定時間視窗內的Token消耗量,超過閾值時直接返回429響應,阻止請求繼續轉寄至後端AI服務;未超過時允許轉寄,並在收到響應後從響應報文中提取Token用量,更新該限速標識符的Token消耗統計。

  • 擴充版ALB執行個體:提供負載平衡和流量轉寄能力。

  • AI類型伺服器組:對接後端大模型服務。

  • HTTPS監聽:接收用戶端請求。

  • 轉寄規則:根據網域名稱條件匹配請求並轉寄。

  • 服務擴充:通過Token限速組件實現Token消耗統計和轉寄控制。

適用範圍

  • 使用者已擷取ALB擴充版公測資格

  • 使用者已在華北6(烏蘭察布)地區建立一個Virtual Private Cloud,分別在可用性區域A和可用性區域B建立一個交換器,且交換器已開通公網SNAT(用於AI伺服器組調用公網大模型)。

  • 使用者已開通阿里雲百鍊並擷取了API Key,且已將該API Key添加為身份管理中的身份憑證。

  • 使用者已註冊自訂網域名。本文計劃將ALB執行個體部署於華北6(烏蘭察布)地區,因此網域名稱需要完成ICP備案

  • 使用者已準備好與自訂網域名匹配的伺服器憑證。非阿里雲購買的認證需要上傳到阿里雲認證服務

操作步驟

1.建立擴充版ALB執行個體

  1. 登入ALB控制台,選擇華北6(烏蘭察布)地區,單擊建立應用型負載平衡

  2. 在購買頁完成以下配置,單擊立即建立

    • 地區:選擇華北6(烏蘭察布)

    • 執行個體網路類型:選擇公網

    • VPC可用性區域:選擇目標VPC,勾選烏蘭察布 可用性區域A烏蘭察布 可用性區域B後選擇對應交換器,並自動分配公網IP

    • 協議版本:選擇IPv4

    • 功能版本(執行個體費):選擇擴充版

  3. 確認訂單頁面確認執行個體配置詳情,單擊立即開通

2.建立AI類型伺服器組

建立AI類型伺服器組,對接阿里雲百鍊。

  1. 伺服器組控制台,單擊建立伺服器組伺服器群組類型選擇AI服務,輸入名稱如sgp-ai-qwen,單擊建立

  2. 伺服器組建立成功對話方塊單擊添加後端伺服器

  3. 添加AI服務對話方塊完成配置,單擊確定

    • 大模型供應商:選擇阿里雲百鍊

    • 服務地址:選擇大模型供應商後自動填滿。

    • 身份憑證:選擇為阿里雲百鍊API Key建立的身份憑證。

3.建立監聽

  1. ALB控制台,單擊目標執行個體ID進入執行個體詳情頁。在監聽頁簽單擊建立監聽

  2. 配置監聽步驟,選擇監聽協議HTTPS監聽通信埠填寫443,完成後單擊下一步

  3. 配置SSL認證步驟,選擇與自訂網域名匹配的伺服器憑證,單擊下一步

  4. 選擇伺服器組步驟,依次選擇AI服務類型和伺服器組sgp-ai-qwen,完成後單擊下一步

    此處選擇的伺服器組將用於監聽的預設規則,即在請求未命中其他轉寄規則時處理請求,使用者可根據實際需求進行調整。
  5. 組態稽核步驟,確認配置並單擊提交

4.建立服務擴充

建立服務擴充並添加Token限速組件,從HTTP標題識別請求並應用限速策略。

  1. 服務擴充控制台,單擊建立服務擴充。在服務擴充配置地區,輸入服務副檔名稱ext-token-rate-limit

  2. 擴充類型預設選擇外掛程式組件名稱下拉選擇Token限速。配置限速策略,完成後單擊建立

    • 限速條件:選擇按HTTP標題,輸入參數x-account-id,匹配方式為任意匹配

      從HTTP要求標頭中提取x-account-id的值作為限速標識符,不同值的請求會分別統計Token消耗,每個值獨立計算限速。x-account-id僅作樣本,使用者可根據實際需求使用其他HTTP標題欄位名,或調整限速條件類型及匹配方式。
    • 限速範圍:選擇總計Token,每1分鐘100Tokens。使用者可根據實際需求調整。

    • 逾時時間(毫秒)處理策略:本文保持預設值1000跳過,使用者可按需調整。

當同一Token限速組件下存在多條限速策略,請求將從上到下逐條匹配,命中第一條限速策略後執行對應的限速範圍,不再匹配後續策略。

5.配置轉寄規則

在監聽上建立轉寄規則,添加網域名稱匹配條件並關聯服務擴充。

  1. ALB控制台,單擊目標執行個體ID進入執行個體詳情頁。切換到監聽頁簽後,單擊目標監聽ID進入監聽詳情頁,再切換到轉寄規則頁簽。

  2. 單擊插入新規則,完成以下配置後單擊確定

    • 轉寄條件:選擇網域名稱精確匹配用於訪問ALB執行個體的網域名稱如ai.example.com

      用於生產時使用者可按實際需求使用其他類型的轉寄條件。
    • 服務擴充(可選):預設使用已有服務擴充,下拉選擇ext-token-rate-limit

    • 轉寄動作:選擇轉寄至AI服務伺服器組sgp-ai-qwen

轉寄規則建立後,HTTP標題中Host欄位值為ai.example.com的請求會命中該規則,服務擴充根據HTTP標題x-account-id的值識別請求並進行限速檢查,未超過閾值時轉寄至伺服器組sgp-ai-qwen

6.設定網域名稱解析

將自有網域名稱通過CNAME解析指向ALB執行個體的DNS名稱,用戶端通過自有網域名稱訪問ALB。

本文以阿里雲Alibaba Cloud DNS為例,對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台

  1. ALB控制台,複製目標執行個體的DNS 名稱

  2. 登入網域名稱解析控制台,在目標網域名稱的操作列單擊解析设置。在解析设置頁面單擊添加记录

  3. 參考以下資訊添加CNAME記錄,完成後單擊确定

    • 记录类型:選擇CNAME。

    • 主机记录:輸入欄位名首碼如ai。假設使用者自有根網域名稱為example.com,則訪問ALB的網域名稱為ai.example.com,注意該網域名稱需要和步驟五中設定的匹配網域名稱保持一致。

    • 解析请求来源TTL时间:保持預設。

    • 记录值:輸入ALB執行個體的DNS名稱。

  4. 在彈出的解析变更确认對話方塊確認解析資訊,單擊確定

7.驗證測試

使用curl命令發送請求驗證Token限速功能,請求需滿足以下條件:

  • 通過ai.example.com訪問ALB:即HTTP標題中Host欄位值為ai.example.com

  • 包含限速策略匹配標題x-account-id: <任意值>:限速策略用於識別請求,每個標題值獨立計算限速,決定是否轉寄至後端AI服務sgp-ai-qwen

  • 符合OpenAI相容協議:請求路徑為/v1/completions/v1/chat/completions/v1/embeddings且整體格式符合規範。

以下測試命令中的網域名稱ai.example.com為樣本網域名稱,實際測試時請替換為步驟六中配置的真實網域名稱,需確保網域名稱解析已生效

正常請求測試

發送單次請求,驗證服務正常工作:

curl -v \
    -H "x-account-id: id" \
    -H "Content-Type: application/json" \
    -d '{
        "model": "qwen-turbo",
        "messages": [
            {
                "role": "user", 
                "content": "你是誰"
            }
        ]
    }' \
    https://ai.example.com/v1/chat/completions

請求成功時,返回HTTP 200狀態代碼和AI服務響應:

{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "你好!我是千問,是阿里巴巴集團旗下的通義實驗室自主研發的超大規模語言模型..."
            },
            "finish_reason": "stop",
            "index": 0
        }
    ],
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 14,
        "completion_tokens": 53,
        "total_tokens": 67
    },
    "model": "qwen-turbo"
}

響應中的usage.total_tokens欄位顯示本次請求消耗的Token數量。

限速觸發測試

快速發送多個請求,累計Token消耗超過限速閾值(100 Tokens/分鐘),驗證限速功能:

for i in {1..3}; do
    curl -v \
        -H "x-account-id: 12345" \
        -H "Content-Type: application/json" \
        -d '{
            "model": "qwen-turbo",
            "messages": [
                {
                    "role": "user", 
                    "content": "你是誰"
                }
            ]
        }' \
        https://ai.example.com/v1/chat/completions
    sleep 2
done

當累計Token消耗超過100時,後續請求返回HTTP 429狀態代碼,表明限速策略已生效。

僅當時間視窗內的Token配額消耗完成後的下一條請求才會被拒絕,因此最後一條成功的請求可能會超額使用Token。
流式輸出情境下,Token 用量在最後一個資料區塊返回時計算。即使請求消耗的 Token 超出當前視窗配額,響應仍會完整返回,不會中途截斷;限流僅作用於後續請求。

觸發限速後的響應樣本如下:

HTTP回應標頭:

HTTP/2 429 
x-tokenratelimit-reset: 52
content-length: 17
content-type: text/plain
date: Wed, 21 Jan 2026 07:59:38 GMT

HTTP響應體:

Too Many Requests

響應說明:

  • HTTP狀態代碼429,表示請求因限速被拒絕。

  • x-tokenratelimit-reset回應標頭:限速計數器重設的剩餘秒數(樣本為52秒後重設)。限速計數器重設後,請求可恢複正常處理。

  • 響應體:純文字格式的Too Many Requests提示資訊。

更多資訊

計費說明

  • ALB擴充版:目前處於公測階段,使用者可免費體驗。

  • 公網訪問費用:公網NAT Gateway收取執行個體費和容量單位CU費。NAT Gateway和擴充版ALB執行個體綁定的EIP有獨立的計費規則,費用由EIP收取。

  • 網域名稱和DNS解析費用:除了需要支付網域名稱供應商的網域名稱費用外,在阿里雲配置DNS解析需要支付公網權威解析費用

  • 認證費用:從阿里雲購買認證或將認證上傳至阿里雲,需要支付伺服器憑證費用

  • 百鍊模型費用:調用百鍊大模型API需要支付費用。

ALB擴充版支援的地區

地區

地區

可用性區域

中國

華北6(烏蘭察布)

可用性區域A、可用性區域B、可用性區域C

華東1(杭州)

可用性區域J、可用性區域K

華北2(北京)

可用性區域I、可用性區域K、可用性區域L

華東2(上海)

可用性區域B、可用性區域F

中國香港

可用性區域B、可用性區域C、可用性區域D

亞太地區

新加坡

可用性區域A、可用性區域B、可用性區域C

日本(東京)

可用性區域B、可用性區域C、可用性區域E

馬來西亞(吉隆坡)

可用性區域A、可用性區域B、可用性區域C

歐美地區

德國(法蘭克福)

可用性區域A、可用性區域B

美國(矽谷)

可用性區域A、可用性區域B

中東

阿聯酋(杜拜)

可用性區域A、可用性區域B

使用建議

  • 限速閾值設定:建議先通過監控觀察正常的Token消耗模式,再設定略高於正常值的限速閾值,避免限速策略過於激進阻塞正常請求。

  • 時間視窗選擇:

    • 對於高頻調用情境,建議使用較短的時間視窗實現更精確的控制;對於低頻但高消耗情境,可使用較長的時間視窗避免單次請求被誤限。

    • 基於響應的限速受到後端響應時間長度的影響,需設定至少大於單次模型推理時間長度的時間視窗。

常見問題

如何處理未命中限速策略的請求

如請求不包含x-account-id: <任意值>標題,即請求命中了轉寄規則但未命中限速策略,將直接進行轉寄動作,不進行限速

<任意值>表示每個不同的標題值獨立計算限速配額。

已配置Token限速,但請求未觸發限速

可參考以下思路進行排查:

  1. 檢查轉寄規則:轉寄條件與請求匹配,轉寄規則具備足夠高的優先順序且已關聯服務擴充。

  2. 檢查服務擴充:正確添加了Token限速組件,限速條件匹配請求且限速範圍設定合理。

  3. 檢查請求格式:請求同時命中轉寄條件和限速條件。

  4. 驗證Token消耗:測試並觀察響應中的usage.total_tokens欄位,注意限速策略統計的是時間視窗內的累計Token消耗,單次請求可能未達到閾值。

若模型推理時間長度大於限速的時間視窗,則無法完成限速。