微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

消耗具有速率限制的API

如何解决消耗具有速率限制的API

我有一个API,它限制了IP每秒10次调用-让我们调用此API-1

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

如果我的Web应用具有更多的流量,并且每秒需要进行的调用数量超出允​​许的数量,该如何设计对API-1的WebApp-1调用

解决方法

想到了一些如何使用速率受限的API的想法:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。