【问题标题】:Distributed rate limiting分布式限速
【发布时间】:2012-12-04 02:48:32
【问题描述】:
我有多个服务器/工作人员通过任务队列执行 API 请求。 (带有 Memcached 和 Celery 队列的 Django)API 请求被限制为每秒 10 个请求。如何对它进行速率限制,以使请求总数(所有服务器)不超过限制?
我已经查看了一些相关的速率限制问题,我猜它们关注的是更线性、非并发的场景。我应该采取什么样的方法?
【问题讨论】:
标签:
queue
message-queue
celery
throttling
rate-limiting
【解决方案2】:
我一直致力于一个开源项目来解决这个名为Limitd 的确切问题。虽然我还没有 node 以外的其他技术的客户端,但协议和想法都很简单。
非常欢迎您的反馈。
【解决方案3】:
您是否从Guava 项目中查看过Rate Limiter?他们在最新版本之一中引入了此类,它似乎部分满足了您的需求。
当然,它不会计算分布式环境中多个节点的速率限制,但您可以做的是根据正在运行的节点数动态配置速率限制(即,对于 5 个节点,您的速率限制为每秒 2 个 API 请求)