常用4种限流算法介绍及比较

1、计数器(固定窗口)算法

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

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

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

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

2、滑动窗口算法

滑动窗口算法是将时间周期分为N个小周期,分别记录每个小周期内访问次数,并且根据时间滑动删除过期的小周期。

如下图,假设时间周期为1min,将1min再分为2个小周期,统计每个小周期的访问数量,则可以看到,第一个时间周期内,访问数量为75,第二个时间周期内,访问数量为100,超过100的访问则被限流掉了

由此可见,当滑动窗口的格子划分的越多,那么滑动窗口的滚动就越平滑,限流的统计就会越精确。

此算法可以很好的解决固定窗口算法的临界问题。

3、漏桶算法

漏桶算法是访问请求到达时直接放入漏桶,如当前容量已达到上限(限流值),则进行丢弃(触发限流策略)。漏桶以固定的速率进行释放访问请求(即请求通过),直到漏桶为空。

4、令牌桶算法

令牌桶算法是程序以r(r=时间周期/限流值)的速度向令牌桶中增加令牌,直到令牌桶满,请求到达时向令牌桶请求令牌,如获取到令牌则通过请求,否则触发限流策略

各个算法比较

更多推荐

高可用 Redis 服务架构分析与搭建浅谈 Kubernetes 服务发现超详细的秒杀架构设计深入理解 RabbitMQ 的前世今生好的IT系统架构师是怎样的?

(0)

相关推荐

  • 分布式服务限流实战,已经为你排好坑了

    开头:本文由 dbaplus 社群授权转载. 一.限流的作用 由于 API 接口无法控制调用方的行为,因此当遇到瞬时请求量激增时,会导致接口占用过多服务器资源,使得其他请求响应速度降低或是超时,更有甚 ...

  • 服务熔断、隔离、降级、限流 介绍

    服务降级:在高并发的情况下,防止用户一直等待,使用服务降级方式进行处理(返回友好的提示给客户端,fallback回调方法).当服务不可用的时候(正在等待的时候.网络延迟.响应时间过长),客户端会处于一 ...

  • 漏桶算法和令牌桶算法,区别到底在哪里?

    漏桶算法和令牌桶算法是接口限流设计中常用的两种算法,网上关于这两个算法的介绍文章有很多,但不同的人有不同的理解,导致很多技术人员在学习的时候,会陷入迷茫的状态,比如说: 1)如果要让自己的系统不被打垮 ...

  • 高并发优雅的做限流

    技术分析 如果你比较关注现在的技术形式,就会知道微服务现在火的一塌糊涂,当然,事物都有两面性,微服务也不是解决技术,架构等问题的万能钥匙.如果服务化带来的利大于弊,菜菜还是推荐将系统服务化.随着服务化 ...

  • Java 实现滑动时间窗口限流算法,你见过吗?

    在网上搜滑动时间窗口限流算法,大多都太复杂了,本人实现了个简单的,先上代码: package cn.dijia478.util;import java.time.LocalTime;import ja ...

  • token bucket令牌桶限流算法原理及代码【图文】

    token bucket令牌桶限流算法原理及代码【图文】

  • 常用36种抢救药物的使用介绍

    一.肾上腺素Adrenaline[别名] 副肾素. [药理] 对α和β受体都有激动作用,使心肌收缩力加强,心率加快,心肌耗氧量增加,使皮肤粘膜及内脏小血管收缩,但冠状血管和骨骼肌血管则扩张,此外,松弛 ...

  • 花境设计常用60种植物介绍

    来源:景观大数据 如有侵权,请联系删除 1.假龙头 多年生草本植物,株高60-120cm,喜疏松.肥沃.排水良好的砂质壤土,花期7-9月,花色有淡红.紫红或斑叶变种. 2.穗花婆婆纳 多年生耐寒草本, ...

  • 简单介绍几种常用的桥牌约定叫(介绍19种)

    桥牌约定叫是一种公开的叫品,用来讯问同伴某些独特的细节,或者是向同伴透露自己手中的一些特殊牌情.这种叫品必须公之于众,任何隐瞒对手的秘密约定都是不道德的.如果你的同伴使用了约定叫品,那么你就必须向对手 ...

  • 抖音账号被限流找不到原因?这三种检测法助你成功避坑

    疫情刚暴发的那段时光,大家都被困在家里,于是都开始学着玩儿起了抖音带起了货. 但大多数人都不是运营,所以并不熟知抖音的玩法,有时候作品发出去,看着有一二百的浏览量,偶尔被一两个陌生人点赞,就觉得自己要 ...

  • 施工现场常用八种脚手架类型介绍,136页PPT下载!

    施工现场常用八种脚手架类型介绍,136页PPT下载!

  • 介绍一个膝关节炎的验方(又限流了,重新发...

    介绍一个膝关节炎的验方(又限流了,重新发一次!!!) 本病中医称为骨痹症,认为其病因由骨髓空虚.风寒湿邪杂合而至,血运不畅而成. 葛根桂枝牛膝汤 葛根.桂枝.川牛膝.木瓜.威灵仙.黄芪.当归.白芍.川 ...

  • 什么是限流?有两种情况,一是账号限流,一是作品限流

    直播的好处是,如果有一条视频爆了,你的直播间可能真的就热起来了,很多人直播都是经历了这种,本来心态都已经崩了,一条视频爆了,下上个台阶. 什么是限流?有两种情况,一是账号限流,一是作品限流. 账号限流 ...