全部產品
Search
文件中心

Server Load Balancer:使用ALB擴充版實現Token限速

更新時間:Mar 14, 2026

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

方案架構

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

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

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

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

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

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

image

適用範圍

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

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

  • 使用者已開通阿里雲百鍊並擷取了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:填入阿里雲百鍊的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

亞太地區

新加坡

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

歐美地區

德國(法蘭克福)

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

使用建議

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

  • 時間視窗選擇:

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

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

常見問題

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

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

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

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

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

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

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

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

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

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