后端架构限流多租户可靠性成本治理
速率限制实战:按用户、按模型、按工具三层限流怎么落地
Agent 系统的限流不能只在入口打一层 429。本文给出三层限流框架:用户层防滥用、模型层控成本、工具层防级联故障,并解释令牌桶/漏桶在不同层的适配方式、配额治理、灰度调参与观测指标,帮助你避免“流量一上来全线抖动”。
2026年3月5日
Synthly 团队
预计阅读 15 分钟

📷 Photo by Tima Miroshnichenko via Pexels
一、限流不是“拦截器”,而是资源分配策略
很多系统把限流做成单点中间件:
- 请求超了就 429
这在传统 API 里有用,但在 Agent 场景不足够。原因是一次请求会引发内部 fan-out:
- 多次模型推理
- 多个工具调用
- 多轮重试
所以限流应该回答的是:
- 谁优先使用资源?
- 哪个层面先降级?
- 哪些任务必须保底?
二、三层限流框架:入口、模型、工具
1)用户层(入口)
目标:防刷、防滥用、隔离租户噪音
常见维度:
- userId
- tenantId
- apiKey
策略建议:令牌桶 + 短窗突发容忍
2)模型层(推理资源)
目标:控制成本与并发,避免 GPU/模型服务雪崩
常见维度:
- modelName
- tokens per minute
- 并发数
策略建议:并发上限 + token 配额 + 降级模型
3)工具层(下游)
目标:保护第三方 API 与内部关键服务
常见维度:
- toolName
- endpoint
- provider quota
策略建议:漏桶平滑 + 熔断联动 + 回退路径
三、失败反馈设计:让限流“可理解、可恢复”
三层限流的返回语义不应一样:
- 用户层:
too_many_requests+ 重试时间 - 模型层:
queued_or_downgraded+ 预计等待 - 工具层:
partial_result+ 后续补偿计划
用户真正需要的是“下一步怎么做”,而不是只看到错误码。
四、多租户治理:公平与商业优先级并存
建议采用分池策略:
- 全局共享池(公共容量)
- 租户保底池(保证基本可用)
- 高优先级池(SLA 客户)
并给每层设置预算天花板:
- 每租户分钟请求数
- 每租户模型 token 上限
- 每工具调用上限
这样能避免头部租户瞬时流量吞噬全部资源。
五、灰度调参与观测:限流系统要可运营
最低限度监控指标:
rate_limit_reject_count{layer=*}queue_wait_seconds{layer=model}tool_throttle_count{tool=*}downgrade_trigger_count
并采用灰度策略:
- 先按 5% 租户开启新阈值
- 观察拒绝率与完成率联动
- 再逐步扩大覆盖
没有观测与灰度,限流很容易从“保护系统”变成“误伤业务”。
六、落地清单:一周内可执行版本
- 入口层按用户/租户限流
- 模型层加入并发与 token 配额
- 工具层加漏桶与熔断联动
- 限流错误码统一化
- 指标看板按层拆分
当三层限流跑通后,你的系统才真正具备“可控扩容”的能力。
延展阅读: