2018-May-07
常见的限流算法参见 Wikipedia 的以下链接。此外还有Adaptive Rate Limiter。
Wikipedia的引用[3]即这篇博客 https://blog.figma.com/an-alternative-approach-to-rate-limiting-f8a06cf7c94c
这篇博客使用Redis实现了上面Leaky Bucket以外的四种算法。
- Token bucket。不适合直接作为多进程共享的Rate Limiter,因为需要引入Redis Lock
- Fixed window counter。请求可能集中分布在窗口边界两侧,限流不准确。
- Sliding window log。使用Redis Sorted Map实现。内存占用较多。
- Sliding window counter。Fixed window counter和Sliding window log的合体,将Fixed window划分为多个Sub Fixed window,以Sub Fixed window size为滑动单位。