-1

我有一个 API 限制来自 IP 的 10 次调用/秒 - 让我们调用这个 API-1

我有一个使用 API-1 的 webapp。让我们称之为 WebApp-1

如果我的 Web 应用程序有更多的流量并且每秒需要进行比允许更多的调用,我该如何设计 WebApp-1 对 API-1 的调用?

4

1 回答 1

1

我想到了一些关于如何处理速率受限 API 的想法:

  • 提高客户端密钥的 API 限制。可能不是您的情况,但在某些情况下可能是一种选择。
  • 为 API 创建/购买更多客户帐户(访问密钥)以提高整体速率限制。平均分配密钥之间的流量。
  • 在查询端缓存结果(在您的情况下为 WebApp)。这取决于应用程序,但如果 WebApp 是基于浏览器的应用程序缓存可能无效,因为客户端之间没有共享缓存。
  • 引入缓存代理。WebApp 向代理发出请求,代理将请求转发到速率受限的 API。这将有助于维护共享缓存。实现代理的一些选项:Nginx、Varnish、AWS API Gateway 等。
  • 引入查询队列(同步)。同样,如果 WebApp 是浏览器应用程序,您可能需要在 WebApp 和 API 之间放置一个后端服务作为代理。代理将保持对 API 的稳定请求流。如果传入请求突发,则会延迟处理以遵守 API 的速率限制(WebApp 可能需要等待更长时间才能从代理获得答案)。不是真正可扩展的。
  • 引入查询队列(异步)。WebApp 向代理发送请求。Proxy 确认收据并返回收据 ID。然后,当来自 API 的响应准备好时,代理向 WebApp 发出回调请求,或者 WebApp 正在轮询代理以了解给定收据 ID 是否有任何数据。
  • 另一个(显然是阴暗的)解决方案是从不同的机器和 IP 发出请求。可能不是 API 所有者想要看到的东西!
于 2020-10-12T22:35:44.360 回答