JAVA面试备战--服务架构篇

一、熔断限流算法

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. 漏桶限流算法

漏桶算法的原理就想它的名字一样,它有恒定的流出速度,不管水流流入的速度有多快,漏斗出水的速度始终保持不变,类似于消息中间件,不管消息的生产者请求量有多大,消息的处理能力取决于消费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值