什么是速率限制?

速率限制是云 API 用来控制用户在给定时间范围内可以发出的请求数的控制机制。 云 API 生成者使用速率限制来确保请求流不会使服务过载。 速率限制对 API 调用的速度和数量设置上限,通常根据每个时间段的请求数来定义。

云 API 为何使用速率限制

  • 防止重载。 速率限制可防止任何单个用户或服务充斥过多的请求,从而确保 API 服务器保持稳定和响应。
  • 确保公平使用。 速率限制强制实施公平使用策略,确保没有单个用户独占 API 资源,从而允许所有用户公平访问。
  • 安全性。 它通过限制来自潜在恶意源的请求数,帮助缓解 DDoS (分布式拒绝服务) 攻击和其他滥用行为。
  • 成本管理。 对于云服务提供商,速率限制通过防止资源不可预测的或过度使用来帮助管理运营成本。
  • 服务质量。 通过防止流量高峰,速率限制可确保所有用户的服务质量一致。

如何在应用中体验速率限制

生成集成云 API 的应用时,检查其文档来验证它们是否支持速率限制。 如果存在,则会收到 RateLimit-...X-RateLimit-... 响应标头,其中包含有关速率限制的信息。 可以在应用程序中使用此信息来确保不超过 API 的速率限制。 例如, RateLimit-Remaining 标头指示当前窗口中剩余的请求数。 如果收到此标头设置为 0 的响应,则表明已达到速率限制,应等待下一个窗口,然后再发送另一个请求。 标头 RateLimit-Reset 指示速率限制重置的时间。 请记住,某些 API 仅在达到阈值后才会发送 RateLimit-... 标头,例如,当剩余 10% 的请求时。

超过速率限制时,API 会限制返回 HTTP 429 的请求 (请求过多) 状态代码。 某些 API 可能还会发送一个标头, Retry-After 指示在发送另一个请求之前应等待多长时间。

若要避免限制并确保应用程序保持响应,应在应用程序中实现速率限制。 根据技术堆栈,有不同的库可帮助你处理应用程序中的速率限制。 在应用程序中实现速率限制后,测试它是否正确处理速率限制。

后续步骤