一、熔断限流算法
1. 计数器算法
计数器算法,是指在指定的时间周期内累加访问次数,达到设定的阈值,触发限流策略。下一个时间周期进行访问时,访问次数清零。此算法无论在单机还是分布式环境下实现都非常简单,使用redis的incr原则自增性,再结合key的过期时间,即可轻松实现。
优点
简单。。代码实现简单方便。。。
缺点
存在临界值问题,比如在0:00到1:00内,只在0:50有60个请求,而在1:00到2:00之间,只在1:10有60个请求,虽然在两个一分钟的时间内,都没有超过100个请求,但是在0:50到1:10这20秒内,确有120个请求,虽然在每个周期内,都没有超过阈值,但是在这20秒内,已经远远超过了我们原来设置的1分钟内100个请求的阈值。

2. 滑动时间窗口算法
为了解决计数器算法临界值的问题发明的。
滑动时间窗口是将计数器算法中的实际周期切分成多个小的时间窗口,分别在每个小的时间窗口中记录访问次数,然后根据时间将窗口往前华东并删除过期的小时间窗口。最终只需要统计滑动窗口范围内的小时间窗口的总请求数即可。
在滑动时间窗口算法中,我们的小窗口划分的越多,滑动窗口的滚动越平滑,限流的统计就会越精确。
优点
解决了计数器算法的临界值问题。。。
缺点
时间区间精度越高,算法所需的空间容量就越大
3. 漏桶限流算法
漏桶算法的原理就想它的名字一样,它有恒定的流出速度,不管水流流入的速度有多快,漏斗出水的速度始终保持不变,类似于消息中间件,不管消息的生产者请求量有多大,消息的处理能力取决于消费

最低0.47元/天 解锁文章
2952

被折叠的 条评论
为什么被折叠?



