我一直在为Stack Exchange编写Google Chrome扩展程序.这是一个简单的扩展,允许您跟踪您的声誉并获得Stack Exchange站点上的评论通知.
目前我遇到了一些我无法处理的问题.我的扩展程序使用Google App Engine作为后端向Stack Exchange API发出外部请求.对于单个站点上的新注释,扩展中的每个单个客户端请求都会导致对api端点的大量请求,即使对于非剪切用户也可以准备响应.平均用户至少有来自Stack Exchange网络的3个站点的帐户,有些已超过10个!
Stack Exchange API具有请求限制:
单个IP地址每天只能生成一定数量的API请求(10,000).
如果我在5秒内从单个IP地址发出超过30个请求,API将关闭我的请求.
很明显,所有请求应该被限制为每5秒30次,并且目前我已经基于具有memcached的分布式锁实现了请求限制逻辑.我正在使用memcached作为一个简单的锁管理器来协调GAE实例的活动并限制UrlFetch请求.
但我认为限制这样强大的基础设施每5秒发出不超过30个请求是一个很大的失败.这样的api请求率不允许我继续开发新的有趣和有用的功能,有一天它将完全停止正常工作.
现在我的应用程序有90个用户并且还在增长,我需要提出解决方案如何最大化请求率.
众所周知,App Engine通过不同IP的同一池创建外部UrlFetch请求.我的目标是编写请求限制功能,以确保符合api使用条款并利用GAE分布式功能.
所以我的问题是如何在遵守api使用条款和利用GAE分布式功能的同时提供最大的实际API吞吐量.
建议使用另一个平台/主机/代理在我看来是没用的.
google-app-engine throttling rate-limiting throughput google-chrome-extension