限流要在用 GPU 之前
限流的价值是把异常流量挡在 GPU 之前:反向代理层按 IP 或调用方标识做令牌桶限速,应用层再按租户做配额与并发控制。两级配合,既能挡住突发流量,也能保证不同调用方之间的公平。
基本信息
| 位置 | 反向代理层与应用层 |
|---|---|
| 手段 | 按 IP 或标识做令牌桶 |
| 关键参数 | 速率与突发额度 |
| 限流键 | 按租户而不是出口 IP |
| 返回码 | 统一回 429 |
典型使用场景
- 保护后端不被突发流量打满
- 给不同租户分配不同的速率
- 阻断单一来源的异常刷量
- 容量不足时优先保障关键业务
- 把限流规则与阈值纳入版本管理,变更走发布流程
- 按调用方的重要程度设置不同的限流档位
反向代理片段
反向代理片段
limit_req_zone $binary_remote_addr zone=llm:10m rate=5r/s;
location /v1/ {
limit_req zone=llm burst=10 nodelay;
proxy_pass http://127.0.0.1:8000;
}
# 应用层再按 key 做配额与并发控制,统一返回 429各层的限流对象
| 层级 | 限流对象 | 特点 |
|---|---|---|
| 网关层 | IP 或连接 | 挡住粗粒度突发 |
| 应用层 | 租户或标识 | 配额与公平性 |
| 并发限制 | 同时处理的请求数 | 保护慢请求占用 |
限流键决定公平性:按调用方标识或租户计数才有意义,按网关出口 IP 计数会把所有调用方算成同一个人。
限流返回码统一为 429:客户端据此退避,监控也好统计;混用别的状态码会让客户端的重试逻辑变得混乱。
限流阈值要能解释清楚:依据是后端容量与业务优先级,随口定的数字在扩容之后就不成立了。
限流与配额是两件事:限流保护后端容量,配额面向计费与公平,两套规则要能同时生效且互不干扰。
限流触发要有可见性:只挡不报的话,容量不足的问题会被长期掩盖,直到某天连锁超时才暴露。