计数器算法局限性之并发限流

上一篇文章写道计数器算法,就是在单位时间内并发请求的数量。当数量大于阈值,则拒绝访问请求,如果小于则继续执行。这种算法虽然简单粗暴地解决了并发带来的高可用问题,但是并没有达到系统的最大利用率。


计数器算法局限性之并发限流


比如说:当阈值设置是100过期时间为1分钟时,前30秒请求达到了100并发 ,那么剩下的30秒的时间,会拒绝所有的请求。这样会不会产生什么问题?

计数器算法局限性之并发限流


当然是肯定的了,我们的阈值是通过分析单位时间段内调用量来设置的,如果它在单位时间段的前几秒就被流量突刺消耗完了,将导致该时间段内剩余的时间内该服务“拒绝服务”,这种现象称为"突刺现象"。而这种现象浪费大量资源。

既然有这种现象,那么怎么样才能解决这个问题呢?计数器算法中是单位时间内,累加访问次数是否达到阈值,而决定是否中断请求。

那么现在有一种思想是利用并发数来限制并发是否达到最大阈值。单位时间内条件不变、当系统访问给redis的原子操作进行+1操作。但是,当并发线程执行完时,对redis的原子操作做-1的操作。

我们可以细想一下,突刺现象主要是单位时间内,某个时间消耗完所有的并发数,达到最大的阈值后服务拒绝所有的请求。并发限流的方式,在单位时间内达到最大阈值。但是当线程执行完成时。所记录的最大并发数进行-1,也就是说当达到最大阈值后,-1的操作代表flag一定会小于阈值,所有后面的访问不会全部拒绝。

计数器算法局限性之并发限流

展开阅读全文

页面更新:2024-05-13

标签:算法   计数器   阈值   篇文章   利用率   局限性   时间段   线程   原子   消耗   数量   现象   单位   操作   时间

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top