就是面对大量流量请求,限制新的请求对系统的访问。
四种算法:
1.固定窗口限流
在固定的时间段内,每来一个请求,计数器就加1,如果超过了阈值,就拒绝。
临界问题:难以选择对应的单位时间,如果在边界时间来了大量请求,可能会超过阈值。比如在0.8-1.2秒之间来了5个请求,但处理能力只有三个。
2.滑动窗口
将单位周期分为若干个小周期,分别记录小周期的访问次数,
每一个格子都有自己的计数器,来了请求计数器就++,
临界问题的解决:如果0.8-1有五个请求,1-1.2又来了5个请求,窗口移动从0-1.0,到0.2-1.2,从0=1.0这个时候开始,请求已经满了,后面在移动移动至0.2-1.2,此时1-1.2会限流。直接丢弃。对于产品不友好
3.漏桶算法
不存在粗暴解决,向桶中加水的过程,已任意速率流入水,以固定速率流出水,当水超过桶的容量时,会丢弃,
4.令牌桶算法
请求发送时,先是向令牌桶申请令牌,如果成功,就会处理,如果拿不到,就直接拒绝。