速率限制是一种控制机制,云 API 用于调节用户可以在特定时间发出的请求数。 云 API 生成者使用速率限制来确保请求流不会使服务不堪重负。 速率限制设置 API 调用的速度和数量上限。 速率限制通常根据每个时间段的请求来定义。
云 API 为何使用速率限制
- 防止重载。 速率限制通过防止任何单个用户或服务充斥过多的请求,确保 API 服务器保持稳定且响应迅速。
- 确保公平使用。 速率限制通过确保单个用户不垄断 API 资源来强制实施公平使用策略。 速率限制允许对所有用户进行公平访问。
- 提高安全性。 速率限制通过限制来自潜在恶意源的请求数来帮助缓解分布式拒绝服务攻击和其他滥用行为。
- 管理成本。 对于云服务提供商,速率限制有助于通过防止不可预知或过度使用资源来管理运营成本。
- 保持服务质量。 速率限制通过防止流量高峰来确保所有用户的服务质量一致。
如何在应用中遇到速率限制
生成集成云 API 的应用时,请检查其文档以验证它们是否支持速率限制。 如果是,则会收到 RateLimit-...
或 X-RateLimit-...
响应标头,其中包含有关速率限制的信息。 可以在应用程序中使用此信息来确保不超过 API 的速率限制。 例如,标头 RateLimit-Remaining
指示当前窗口中剩余的请求数。 如果收到此标头设置为 0 的响应,则表明已达到速率限制,应在发送另一个请求之前等待下一个窗口。 标头 RateLimit-Reset
指示速率限制重置的时间。 某些 API 仅在达到阈值后才会发送 RateLimit-...
标头。 例如,当你的请求还剩下 10% 时。
超过速率限制时,API 会限制请求并返回 HTTP 429 Too Many Requests
状态代码。 某些 API 可能还会发送标头,以指示在发送另一个 Retry-After
请求之前应等待多长时间。
若要避免限制并确保应用程序保持响应能力,请在应用程序中实现速率限制。 根据技术堆栈,不同的库可以帮助你处理应用程序中的速率限制。 在应用程序中实现速率限制后,测试以查看它是否正确处理速率限制。