3. 限流基本概念
限流(Rate Limiting)是API网关保护模型服务的第一道防线。在模型风险管理场景下,限流不仅控制流量速率,更是保障模型服务稳定性、防止资源滥用、维护SLA合规的关键手段。本节从定义、必要性、与熔断的对比三个维度建立限流的基础认知。
3.1 限流定义
限流是指对单位时间内进入模型服务的请求数量进行主动控制,当请求速率超过预设阈值时,网关直接拒绝、排队或降级后续请求,从而确保模型服务在安全负载范围内运行。
核心公式: 限流阈值 = 模型服务安全吞吐量 × 冗余系数(通常取0.7~0.8)
限流在API网关中的典型位置:
- 入口限流: 在网关最外层,按客户端IP、API Key或用户维度限制总请求速率。
- 模型级限流: 针对特定模型端点(如 /v1/llm/generate)设置独立配额,防止单个模型被突发流量打满。
- 资源池限流: 按GPU显存、推理节点数等后端资源容量动态计算限流阈值。
3.2 为什么需要限流
在模型风险管理中,限流承担两大核心职责:保护模型服务和防止滥用。以下从两个维度展开:
3.2.1 保护模型服务
| 风险场景 | 限流保护机制 | 典型后果(无限流) |
|---|---|---|
| 突发流量冲击 | 平滑请求速率,避免瞬时QPS超过模型承载上限 | 模型OOM、推理超时、级联雪崩 |
| 慢查询堆积 | 限制并发请求数,防止长推理请求阻塞资源池 | 请求队列溢出、整体延迟飙升 |
| 模型热加载/重启 | 临时降低限流阈值,给模型预热时间 | 冷启动期间大量请求失败 |
| 后端依赖故障 | 快速降级限流,减少对下游的无效调用 | 数据库/缓存被打爆,故障范围扩大 |
3.2.2 防止滥用
- API Key盗用: 攻击者窃取合法Key后高频调用,限流可将其速率压制到可检测水平。
- 爬虫与批量抓取: 模型输出内容被自动化工具批量采集,限流按IP/账户维度阻断。
- 计费绕过: 无限制调用导致模型服务成本失控,限流配合配额管理实现成本封顶。
- 公平性保障: 多租户场景下,单个用户的突发流量不应挤占其他用户的模型资源。
实践建议: 模型服务的限流阈值应基于压测数据设定。建议在模型上线前进行阶梯式压测,找到“性能拐点”(即延迟开始急剧上升的QPS点),然后取该值的70%~80%作为生产限流阈值。
3.3 限流与熔断的区别
限流和熔断是网关保护的两大核心模式,但二者在触发条件、作用目标和恢复机制上有本质区别。下表从多个维度进行对比:
| 对比维度 | 限流(Rate Limiting) | 熔断(Circuit Breaker) |
|---|---|---|
| 触发条件 | 请求速率超过预设阈值(QPS/并发数) | 错误率/超时率超过阈值(如50%请求失败) |
| 作用目标 | 客户端请求速率 | 后端服务调用链路 |
| 状态变化 | 连续型:速率越高,拒绝越多 | 离散型:关闭 → 打开 → 半开 → 关闭 |
| 恢复方式 | 速率降低后自动恢复,无需探测 | 需经过半开状态探测后端是否恢复 |
| 典型响应码 | 429 Too Many Requests | 503 Service Unavailable |
| 保护范围 | 保护模型服务不被过载 | 保护调用方不被故障下游拖垮 |
| 模型场景示例 | 单个用户每秒请求超过100次,直接拒绝 | 模型推理连续10次超时,熔断器打开,快速失败 |
常见误区: 限流和熔断不能互相替代。限流解决的是“请求太多”的问题,熔断解决的是“服务已坏”的问题。在模型风险管理中,二者通常配合使用:限流在前端控制入口流量,熔断在后端保护调用链路。例如,当模型推理连续超时时,熔断器打开快速失败,同时限流层降低该模型的配额,防止熔断恢复后再次被打满。
3.4 限流在模型风险管理中的关键指标
| 指标 | 定义 | 模型场景参考值 |
|---|---|---|
| QPS(每秒查询数) | 网关每秒允许通过的请求数量 | LLM推理:10~500 QPS(取决于模型大小) |
| 并发数 | 同时处理中的请求数量上限 | GPU显存16GB:并发 ≤ 4~8 |
| 令牌桶容量 | 允许的突发请求最大积压量 | 通常为 QPS × 2~5 秒 |
| 拒绝率 | 被限流拒绝的请求占比 | 目标 < 1%(正常流量下) |
| 限流延迟 | 限流判断本身引入的额外延迟 | 应 < 5ms(避免影响正常请求) |