webman/rate-limiter 窗口算法有问题

bensharp

优点:
实现简单,性能好(计数器 + 当前窗口时间即可)
很适合每秒、每分钟那种定量控制场景
缺点:
边界突发,比如 10:00:59 来10个,10:01:00又来10个,就变成1秒内来了20个,系统有可能扛不住(容易“抖动”)

112 1 0
1个回答

evilk

这是 固定窗口 算法 本身的缺点
可以考虑 用 漏桶算法 或者 令牌桶算法

  • bensharp 4小时前

    给我写一个吧 @walkor

  • walkor 4小时前

    其他算法实现起来会比较复杂,性能也很差,一些特别高并发的业务 webman/rate-limiter 使用这些复杂算法后自身可能成为瓶颈,得不偿失。
    绝大部分业务 固定窗口 算法够用了,如果你的业务对于这种秒级抖动敏感就自己实现一个吧

🔝