A11中级

速率限制设计

30 分钟设计新API时

格式:为给定场景设计速率限制策略。

场景:你有一个 AI 聊天 API,需要设计速率限制。

需要决定

  1. 限制维度:按用户?按 IP?按 API Key?
  2. 限制窗口:每分钟?每小时?每天?
  3. 限制数量:免费用户多少?付费用户多少?
  4. 超出限制时的响应:返回什么错误?HTTP 状态码?
  5. 如何告知用户剩余配额?(响应头?单独的 API?)

参考设计

免费用户:每分钟 10 请求,每天 100 请求
基础付费:每分钟 60 请求,每天 5000 请求
专业付费:每分钟 300 请求,每天 50000 请求

超出限制响应:
HTTP 429 Too Many Requests
{
  "error": "rate_limit_exceeded",
  "message": "请求过于频繁,请稍后再试",
  "retry_after_seconds": 30,
  "limit": 10,
  "remaining": 0,
  "reset_at": "2026-02-16T12:00:00Z"
}

思考题

  • 如果一个用户用多个 IP 绕过限制怎么办?
  • 如果限制太严格,正常用户体验会变差吗?
  • 如果限制太宽松,恶意用户会滥用吗?

我的笔记