3. 限流基本概念

限流(Rate Limiting)是API网关保护模型服务的第一道防线。在模型风险管理场景下,限流不仅控制流量速率,更是保障模型服务稳定性、防止资源滥用、维护SLA合规的关键手段。本节从定义、必要性、与熔断的对比三个维度建立限流的基础认知。

3.1 限流定义

限流是指对单位时间内进入模型服务的请求数量进行主动控制,当请求速率超过预设阈值时,网关直接拒绝、排队或降级后续请求,从而确保模型服务在安全负载范围内运行。

核心公式: 限流阈值 = 模型服务安全吞吐量 × 冗余系数(通常取0.7~0.8)

限流在API网关中的典型位置:

  • 入口限流: 在网关最外层,按客户端IP、API Key或用户维度限制总请求速率。
  • 模型级限流: 针对特定模型端点(如 /v1/llm/generate)设置独立配额,防止单个模型被突发流量打满。
  • 资源池限流: 按GPU显存、推理节点数等后端资源容量动态计算限流阈值。
限流在API网关中的位置与作用 限流在API网关中的位置与作用 客户端请求 API网关 限流层 限流策略 令牌桶 / 漏桶 滑动窗口 / 计数器 模型服务 推理节点 GPU / 显存 推理资源池 429 Too Many Requests

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次超时,熔断器打开,快速失败
限流与熔断状态机对比 限流 vs 熔断:状态机对比 限流(连续型) 正常通过 限流拒绝 速率降低后自动恢复 熔断(离散型) 关闭 打开 超时后进入半开 半开 探测成功→关闭 探测失败→打开
常见误区: 限流和熔断不能互相替代。限流解决的是“请求太多”的问题,熔断解决的是“服务已坏”的问题。在模型风险管理中,二者通常配合使用:限流在前端控制入口流量,熔断在后端保护调用链路。例如,当模型推理连续超时时,熔断器打开快速失败,同时限流层降低该模型的配额,防止熔断恢复后再次被打满。

3.4 限流在模型风险管理中的关键指标

指标 定义 模型场景参考值
QPS(每秒查询数) 网关每秒允许通过的请求数量 LLM推理:10~500 QPS(取决于模型大小)
并发数 同时处理中的请求数量上限 GPU显存16GB:并发 ≤ 4~8
令牌桶容量 允许的突发请求最大积压量 通常为 QPS × 2~5 秒
拒绝率 被限流拒绝的请求占比 目标 < 1%(正常流量下)
限流延迟 限流判断本身引入的额外延迟 应 < 5ms(避免影响正常请求)