在开发高并发系统时,很多手段来保护系统,如缓存、降级和限流等。什么是限流呢?顾名思义,限流就是限制流量。通过限流,我们可以很好地控制系统的qps,从而达到保护系统的目的。限流的目的通过对并发访问进行限速,一旦达到一定的速率就可以拒绝服务、排队等待、降级等。
那该怎么进行限流呢?在限流中常常用的算法有计数器算法,令牌桶和漏桶算法。这里主要说一下什么是计数器算法。
计算器算法是指在指定时间内累加访问次数,并且在 下一个时间周期中可以清零继续从零累加访问次数。
实际上就说当某个时间周期内,访问次数如果大于设定的阈值,就拒绝用户的访问。
最简单的方式就是利用redis的原子操作incr累加并且设置过期时间,判断周期内新值是否大于阈值,大于就直接返回。
我们以一分钟为例,如果前10秒达到了最大的阈值。那么余下50秒都会拒绝服务,这种中显现是否合理,怎么解决这种问题?
如果是你你会怎么解决计数器算法带来的这个问题?
页面更新:2024-03-19
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号