业务系统常用限流算法浅析( 二 )


令牌桶具有以下特点:

  • 根据限流大小定速往令牌桶里放令牌 。
  • 如果令牌数量超过令牌桶容量的限制就丢弃令牌 。
  • 每一个请求首先去令牌桶拿令牌,拿到令牌就处理请求 , 拿不到令牌就直接拒绝 。

业务系统常用限流算法浅析

文章插图
Part 08 小结  最后我们对上述四种限流算法进行一下简单的总结 。
固定窗口算法实现简单,但是流量曲线不够平滑有突刺现象,在窗口切换时可能会产生两倍阈值流量的临界问题 。滑动窗口算法作为固定窗口算法的一种改进,有效解决了窗口切换时的临界问题 。阿里开源的流量控制框架Sentinel就是基于滑动窗口实现的 。
漏桶算法能够对流量起到平滑整流的作用,让随机不确定的流量以固定的速率流出,但是不能解决流量突发问题 。令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突发传输 。Guava的RateLimiter限流组件,就是基于令牌桶算法实现的 。




推荐阅读