速率限制
Rate Limit
中级通用速率限制(Rate Limit)是按时间窗口限制请求或用量的机制,比如限制每个用户一分钟内调用 AI 接口的次数。它能防止突发流量耗尽服务能力或快速推高费用,并让不同用户更公平地使用资源。
你可能会说:「我做的 AI 工具怕有人连续点生成,把接口打满、费用冲高,能限制调用频率吗?」
读之前建议先了解
动手看看调用 AI 接口时的限流
1
用户发起第一次调用。限流器按用户记录这一分钟的次数;假设上限是三次,这次记为一次并放行。
要点速率限制要先想清楚哪些事?
- 1
先确定限制谁和限制什么
你可以按用户、API 密钥或整个服务统计调用量,限制的也可以是请求次数或消耗的 Token。范围不同,结果就不同:只限制单台服务器,未必能限制一个用户在多台服务器上的总用量。
- 2
时间窗口决定流量怎么分布
同样是限制调用次数,按分钟统计和按天统计解决的问题不同。前者主要挡住短时间突发请求,后者更接近用量预算;如果两种风险都存在,我们可以分别设置限制。
- 3
触发限制后也要有处理方式
请求超过限制时,接口可以拒绝本次调用,并告诉客户端何时再试(如果能够提供)。这样前端就能提示用户稍后重试;自动任务则可以延迟重试,避免立刻重发又撞上限制。
容易混淆的地方
速率限制管的是一段时间内用了多少,不等于并发限制:后者管同一时刻有多少请求正在处理。它也不同于超时,超时是单次请求等了多久还没完成。比如 AI 接口一分钟被调用太多次,用速率限制;单次生成一直没有返回,要查超时和处理耗时。
什么时候用
适合用
- 做公开 API 时,按用户或密钥限制调用频率,避免少数调用方占满服务资源。
- 做 AI 生成功能时,限制短时间内的请求或 Token 用量,让成本增长更可控。
- 做登录接口时,限制同一来源的频繁尝试,降低自动化猜测密码带来的压力。
不适合用
- 页面慢是因为每次都重复读取相同数据时,速率限制不能让已有请求变快;先考虑缓存或优化查询。
- 后台任务本来就需要处理大量记录,只是处理速度跟不上时,直接拒绝任务不合适;可以用队列和背压调节处理节奏。
- 担心一笔订单被重复提交时,限制点击频率仍可能漏掉重试请求;用幂等机制处理重复操作更合适。
练一练选一个答案,看看解释
你做的 AI 写作工具接入了按用量计费的模型接口。某个用户反复点击生成,几分钟内发出大量请求。你想控制这类突发用量,同时给正常用户明确反馈,该怎么做?
让 AI 帮你做复制给 AI Agent 直接用
请为我的 AI 生成功能设计速率限制:按登录用户统计每分钟请求次数,并说明限制值如何配置、超过限制时接口如何响应、前端如何提示,以及自动重试怎样避免立刻再次触发限制。先说明方案,再修改代码。