计数器(固定窗口)算法

计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个周期开始时,进行清零,重新计数。

此算法在单机还是分布式环境下实现都非常简单,使用redis的incr原子自增性和线程安全即可轻松实现。

这个算法通常用于QPS限流和统计总访问量,对于秒级以上的时间周期来说,会存在一个非常严重的问题,那就是临界问题,如下图:

假设1min内服务器的负载能力为100,因此一个周期的访问量限制在100,然而在第一个周期的最后5秒和下一个周期的开始5秒时间段内,分别涌入100的访问量,虽然没有超过每个周期的限制量,但是整体上10秒内已达到200的访问量,已远远超过服务器的负载能力,由此可见,计数器算法方式限流对于周期比较长的限流,存在很大的弊端。

相关推荐
lisanndesu29 分钟前
贪心算法--
算法·贪心算法
巷95531 分钟前
机器学习篇——决策树基础
算法·决策树·机器学习
猎人everest33 分钟前
机器学习之正则化
人工智能·算法·机器学习
YaoSolar36 分钟前
刷题记录(LeetCode 78 子集)
算法·leetcode
熊峰峰1 小时前
数据结构第八节:红黑树(初阶)
开发语言·数据结构·c++·算法
f狐0狸x1 小时前
【蓝桥杯每日一题】3.8
数据结构·c++·算法·蓝桥杯
阿巴~阿巴~2 小时前
动态规划填表技巧:固定最后一个数 vs 固定倒数第二个数
c++·算法·动态规划
我感觉。2 小时前
【机器学习chp12】半监督学习(自我训练+协同训练多视角学习+生成模型+半监督SVM+基于图的半监督算法+半监督聚类)
人工智能·算法·机器学习·半监督学习
浊酒南街6 小时前
XGBClassifiler函数介绍
算法·机器学习·xgb
mlxg999996 小时前
hom_mat2d_to_affine_par 的c#实现
算法·计算机视觉·c#