分布式学习笔记-限流算法

计数器算法

计数器算法: 指定时间内,累计访问次数,达到设定的阈值时,触发限流策略,下个时间周期进行访问试,统计访问数清零。可以利用redisincr 原子自增性,再结合过期时间实现

计时器算法无法解决临界问题,相邻周期之间时间段出现大并发,如第一个周期最后10秒和第二个周期前十秒,出现超过100限流阈值。

滑动时间窗口算法

为了解决计算器算法的临界值问题,发明了滑动窗口算法,在TCP网络通信协议中,就是采用这种算法解决网络拥堵问题

    滑动时间窗口就是将计算器中的实际周期切分为多个小的时间窗口,分表在每个时间窗口中记录访问次数,然后根据时间将窗口往前移动,并删除过期的时间窗口,最终只需要统计滑动范围内小时间窗口的总的访问数

漏桶限流算法

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

   漏桶容量 = 漏桶的流出速度 * 可接受等待时长。容量范围内的请求可以排队等待处理,超过这个容量的请求才会被抛弃

漏桶限流算法存在下面情况

1.请求请求速度大于漏桶流出速度,也就是请求量大于服务能处理的最大极限值,触发限流策略

2,请求速度小于或等于漏桶的流出速度,也就是服务处理能力等于或是大于请求量,正常执行

缺点:当系统在短期突发大流量,漏桶算法无法处理

令牌桶算法

令牌桶,在一个桶容器中,装有一定数量的令牌,系统恒定速率投递令牌到桶中。客户端连接后需要拿到一个令牌才能有访问系统的资格。令牌桶满的时候,系统投递的新令牌将被抛弃,不能放入桶内

令牌桶算法存在下面情况

1.请求速度快于令牌生成速度,当桶内令牌被拿完,就会限流

2.请求速度等于令牌生成速度,系统处于平稳,也就是最近的并发状态

3.请求速度小于令牌生成速度,系统处理能力高于请求数量,系统正常

优点:由于有一个桶的存在,能处理短时间大量流量的场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值