A11中级
速率限制设计
30 分钟设计新API时
格式:为给定场景设计速率限制策略。
场景:你有一个 AI 聊天 API,需要设计速率限制。
需要决定:
- 限制维度:按用户?按 IP?按 API Key?
- 限制窗口:每分钟?每小时?每天?
- 限制数量:免费用户多少?付费用户多少?
- 超出限制时的响应:返回什么错误?HTTP 状态码?
- 如何告知用户剩余配额?(响应头?单独的 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 绕过限制怎么办?
- 如果限制太严格,正常用户体验会变差吗?
- 如果限制太宽松,恶意用户会滥用吗?