速率限制 是 API 提供程序用来管理在特定时间段内对其服务发出的请求数的常见技术。 API 提供程序使用速率限制来确保其服务保持可用并响应所有用户,并防止滥用或过度使用服务。
在应用程序中使用云 API 时,应了解其速率限制。 以下技术可帮助你处理应用程序中的速率限制:
- 了解速率限制。 查看您所使用 API 的文档以了解其速率限制。 速率限制可能取决于你使用的 API 提供程序或服务计划。 例如,某些 API 可能具有不同的免费和付费计划费率限制。
- 使用速率限制信息。 使用速率限制的 API 通常传达响应标头中的当前速率限制。 例如,标头
RateLimit-Remaining指示当前窗口中保留的请求数。 如果收到此标头设置为 0 的响应,则表明已达到速率限制,应在发送另一个请求之前等待下一个窗口。 标头RateLimit-Reset指示速率限制重置的时间。 某些 API 仅在达到阈值后才会发送RateLimit-...标头。 例如,当你的请求还剩下 10% 时。 - 优化 API 使用情况。 某些服务根据其复杂性为不同的请求分配不同的成本。 例如,某些 API 可能会对返回更多数据的请求收取更多费用。 若要降低应用程序的成本,请仅提取所需的数据来优化 API 使用情况。 如果 API 支持批处理请求,请使用批处理请求。 它们可帮助你减少处理响应所需的资源数量,并保持在速率限制范围内。
- 实现本地速率限制器。 在应用程序本身中实现速率限制程序,以限制在特定时间段内对 API 发出的请求数。 可以使用令牌存储桶或泄漏桶算法等技术执行此作,这样应用程序就可以在一段时间内发出许多请求。 任何其他请求都会排队,或者会被丢弃。
- 避免超过速率限制。 超过速率限制时,API 会限制通常返回 HTTP
429 Too Many Requests状态代码的所有后续请求。 通常,节流对应用程序的吞吐量影响大于流量限制。 使用速率限制响应标头中公开的信息,以便保持在速率限制范围内并避免限制。
通过使用这些技术,您可以构建能够适应速率限制的应用程序,即使 API 负载过重,也能继续运行。