限流

限流对比

下面我们就对常用的线程策略,总结它们的优缺点,便于以后选型。

计数器

  • 优点:固定时间段计数,实现简单,适用不太精准的场景;
  • 缺点:对边界没有很好处理,导致限流不能精准控制。

滑动窗口

  • 优点:将固定时间段分块,时间比“计数器”复杂,适用于稍微精准的场景;
  • 缺点:实现稍微复杂,还是不能彻底解决“计数器”存在的边界问题。

漏桶

  • 优点:可以很好的控制消费频率;
  • 缺点:实现稍微复杂,单位时间内,不能多消费,感觉不太灵活。

令牌桶

  • 优点:可以解决“漏桶”不能灵活消费的问题,又能避免过渡消费,强烈推荐;
  • 缺点:实现稍微复杂,其它缺点没有想到。

Redis + Lua 分布式限流

  • 优点:支持分布式限流,有效保护下游依赖的服务资源;
  • 缺点:依赖 Redis,对边界没有很好处理,导致限流不能精准控制。