【算法】【限流算法】----令牌桶算法、漏桶算法、计数器算法 的原理、区别、优缺点、应用场景
·
- 令牌桶算法:控制接口调用速率,允许一定程度的突发流量
- 漏桶算法:平滑限制请求速率,防止流量突增
- 计数器算法:简单粗暴的限流实现
限流算法总结
1. 令牌桶算法
- 原理:固定速率生成令牌放入桶中,请求需获取令牌才能通过,桶满时令牌溢出。
- 特点:允许突发流量(桶内令牌可累积),长期速率可控。
- 优点:灵活性高,适应突发需求。
- 缺点:实现稍复杂,参数(桶容量、令牌生成速率)需合理配置。
- 应用场景:API网关、接口限流(如允许短时间峰值流量)。
- 实现:用队列缓存令牌,原子类控制令牌生成与获取。

2. 漏桶算法
- 原理:请求先进入桶中,桶以固定速率处理请求,溢出则拒绝。
- 特点:严格控制输出速率,平滑流量,不允许突发。
- 优点:流量稳定性好,防止后端被冲垮。
- 缺点:无法应对短期峰值需求,资源利用率可能偏低。
- 应用场景:网络传输限流(如TCP流量控制)、后端服务保护。
- 实现:队列缓存请求,定时任务按固定速率消费。

3. 计数器算法
- 原理:固定时间窗口内统计请求数,超过阈值则限流。
- 特点:最简单直接,存在窗口临界值问题(如窗口边缘突发)。
- 优点:实现简单,性能高。
- 缺点:精度低,可能出现短时间流量超限。
- 应用场景:对精度要求不高的场景(如简单接口保护)。
- 实现:用计数器+时间戳,定时重置或比较时间窗口。

如果文章对你有一点点帮助,欢迎【点赞、留言、+ 关注】
您的关注是我创作的动力!若有疑问/交流/需求,欢迎留言/私聊!
多一个朋友多一条路!
更多推荐

所有评论(0)