我正在一个定价平台上工作,我必须实现一个分布式的速率限制算法。我有提供x服务的k个网关。任何网关都可以提供任何服务(通过负载均衡器)。用户每秒向服务购买多个呼叫,它的呼叫可以通过任何网关路由。那么,是否有人知道一个很好的算法来更新所有网关上的呼叫计数器,以限制客户的呼叫?
对于该算法,两个重要的指标是网络开销和接收呼叫数与速率限制之间的偏差。
谢谢!
编辑我只想知道是否有一个“众所周知”的算法。
发布于 2012-11-17 08:30:41
我实现了一个基于这个文章 (archive.org)的解决方案。我认为这个算法叫做漏桶,但是它工作得很好。它并不完美,因为它允许在一个突发中使用整个配额,但总的来说,它在node.js和Redis中非常快。接受的请求和速率之间的差异可能很大,取决于样本窗口和桶大小的比率。
https://stackoverflow.com/questions/13424157
复制相似问题