ALB扩展版支持Token限速,可按用户、账户等维度限制指定时间窗口内的Token消耗量,防止资源滥用并控制大模型调用成本。
方案架构
扩展版ALB实例接收客户端请求,转发规则根据请求域名匹配请求。Token限速组件通过服务扩展关联转发规则,在转发动作前执行:根据HTTP标头中的限速标识符查询该标识符在指定时间窗口内的Token消耗量,超过阈值时直接返回429响应,阻止请求继续转发至后端AI服务;未超过时允许转发,并在收到响应后从响应报文中提取Token用量,更新该限速标识符的Token消耗统计。
-
扩展版ALB实例:提供负载均衡和流量转发能力。
-
AI类型服务器组:对接后端大模型服务。
-
HTTPS监听:接收客户端请求。
-
转发规则:根据域名条件匹配请求并转发。
-
服务扩展:通过Token限速组件实现Token消耗统计和转发控制。
适用范围
-
用户已获取ALB扩展版公测资格。
-
用户已在华北6(乌兰察布)地域创建一个专有网络VPC,分别在可用区A和可用区B创建一个交换机,且交换机已开通公网SNAT(用于AI服务器组调用公网大模型)。
-
用户已开通阿里云百炼并获取了API Key。
-
用户已准备好与自定义域名匹配的服务器证书。非阿里云购买的证书需要上传到阿里云证书服务。
操作步骤
1.创建扩展版ALB实例
-
登录ALB控制台,选择华北6(乌兰察布)地域,单击创建应用型负载均衡。
-
在购买页完成以下配置,点击立即购买。
-
地域:选择华北6(乌兰察布)。
-
实例网络类型:选择公网。
-
VPC和可用区:选择目标VPC,勾选乌兰察布 可用区A和乌兰察布 可用区B后选择对应交换机,并自动分配公网IP。
-
协议版本:选择IPv4。
-
功能版本(实例费):选择扩展版。
-
-
在确认订单页面确认实例配置详情,单击立即开通。
2.创建AI类型服务器组
创建AI类型服务器组,对接阿里云百炼。
-
在服务器组控制台,单击创建服务器组,服务器组类型选择AI服务,输入名称如
sgp-ai-qwen,单击创建。 -
在服务器组创建成功对话框单击添加后端服务器。
-
在添加AI服务对话框完成配置,单击确定。
-
大模型供应商:选择阿里云百炼。
-
服务地址:选择大模型供应商后自动填充。
-
API Key:填入阿里云百炼的API Key。
-
3.创建监听
-
在ALB控制台,单击目标实例ID进入实例详情页。在监听页签单击创建监听。
-
在配置监听步骤,选择监听协议为HTTPS,监听端口填写
443,完成后单击下一步。 -
在配置SSL证书步骤,选择与自定义域名匹配的服务器证书,单击下一步。
-
在选择服务器组步骤,依次选择AI服务类型和服务器组
sgp-ai-qwen,完成后单击下一步。此处选择的服务器组将用于监听的默认规则,即在请求未命中其他转发规则时处理请求,用户可根据实际需求进行调整。
-
在配置审核步骤,确认配置并单击提交。
4.创建服务扩展
创建服务扩展并添加Token限速组件,从HTTP标头识别请求并应用限速策略。
-
在服务扩展控制台,单击创建服务扩展。在服务扩展配置区域,输入服务扩展名称如
ext-token-rate-limit。 -
扩展类型默认选择插件,组件名称下拉选择Token限速。配置限速策略,完成后单击创建。
-
限速条件:选择按HTTP标头,输入参数
x-account-id,匹配方式为任意匹配。从HTTP请求头中提取
x-account-id的值作为限速标识符,不同值的请求会分别统计Token消耗,每个值独立计算限速。x-account-id仅作示例,用户可根据实际需求使用其他HTTP标头字段名,或调整限速条件类型及匹配方式。 -
限速范围:选择总计Token,每
1分钟100Tokens。用户可根据实际需求调整。 -
超时时间(毫秒)和处理策略:本文保持默认值
1000和跳过,用户可按需调整。
-
当同一Token限速组件下存在多条限速策略,请求将从上到下逐条匹配,命中第一条限速策略后执行对应的限速范围,不再匹配后续策略。
5.配置转发规则
在监听上创建转发规则,添加域名匹配条件并关联服务扩展。
-
在ALB控制台,单击目标实例ID进入实例详情页。切换到监听页签后,单击目标监听ID进入监听详情页,再切换到转发规则页签。
-
单击插入新规则,完成以下配置后单击确定。
-
转发条件:选择域名,精确匹配用于访问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。
本文以阿里云云解析DNS为例,对于非阿里云注册域名,需先将域名添加到云解析控制台。
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扩展版支持的地域
区域 | 地域 | 可用区 |
中国 | 华北6(乌兰察布) | 可用区A、可用区B、可用区C |
华东1(杭州) | 可用区J、可用区K | |
亚太 | 新加坡 | 可用区A、可用区B、可用区C |
欧洲与美洲 | 德国(法兰克福) | 可用区A、可用区B |
使用建议
-
限速阈值设置:建议先通过监控观察正常的Token消耗模式,再设置略高于正常值的限速阈值,避免限速策略过于激进阻塞正常请求。
-
时间窗口选择:
-
对于高频调用场景,建议使用较短的时间窗口实现更精确的控制;对于低频但高消耗场景,可使用较长的时间窗口避免单次请求被误限。
-
基于响应的限速受到后端响应时长的影响,需设置至少大于单次模型推理时长的时间窗口。
-
常见问题
如何处理未命中限速策略的请求
如请求不包含x-account-id: <任意值>标头,即请求命中了转发规则但未命中限速策略,将直接进行转发动作,不进行限速。
<任意值>表示每个不同的标头值独立计算限速配额。
已配置Token限速,但请求未触发限速
可参考以下思路进行排查:
-
检查转发规则:转发条件与请求匹配,转发规则具备足够高的优先级且已关联服务扩展。
-
检查服务扩展:正确添加了Token限速组件,限速条件匹配请求且限速范围设置合理。
-
检查请求格式:请求同时命中转发条件和限速条件。
-
验证Token消耗:测试并观察响应中的
usage.total_tokens字段,注意限速策略统计的是时间窗口内的累计Token消耗,单次请求可能未达到阈值。
若模型推理时长大于限速的时间窗口,则无法完成限速。