java四种限流算法

1,计数器法

原理

计数器法通过简单的计数机制来限制单位时间内的请求数量。例如,可以维护一个计数器来记录当前时间窗口内的请求数,如果请求数超过预设的限流阈值,就拒绝后续的请求。

实现方式

• 在每个时间窗口(如1秒钟)内,维护一个计数器,随着每个请求的到来递增计数器。

• 当计数器达到阈值时,拒绝后续请求。

• 到下一个时间窗口时,计数器重置为0。

优点

简单易实现:实现原理简单,不需要复杂的数据结构。

适合固定时间窗口:对于稳定的流量场景,该方法能很好地限制每秒的请求数。

缺点

突发流量处理不佳:在窗口临近结束时,短时间内可能涌入大量请求,导致瞬时流量过高。比如在时间窗口重置时,可能瞬间允许大量请求通过,导致服务压力增大。

2,滑动窗口计数器法

原理

滑动窗口计数器法是计数器法的改进版。它将固定的时间窗口进一步细分为更小的时间片,并使用多个计数器来记录每个时间片的请求数,以此实现更精细的流量控制。

实现方式

• 将时间窗口划分为若干个较小的时间片,每个时间片维护一个独立的计数器。

• 在每个时间片内累积请求数,并根据滑动的时间窗口动态计算总的请求量。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值