首页 网站首页 商业信息 限流 查看内容

后端程序员必备:四种限流算法,图文结合一篇搞定

私域运营 2022-10-22 17:51 6852人围观 限流

前言

比来我们系统引入了Guava的RateLimiter限流组件,它是基于令牌桶算法的实现的。本文将跟大师一路进修几种典范的限流算法。


后端法式员必备:四种限流算法,图文连系一篇搞定

限流是什么?

维基百科的概念以下:

In computer networks, rate limiting is used to control the rate of requests sent orreceived by a network interface controller. It can be used to prevent DoS attacks and limit web scraping

简单翻译一下:在计较机收集合,限流就是控制收集接口发送或接收请求的速度,它可避免DoS进犯和限制Web爬虫。

限流,也称流量控制。是指系统在面临高并发,大概大流量请求的情况下,限制新的请求对系统的拜候,从而保证系统的稳定性。限流会致使部分用户请求处置不实时大概被拒,这就影响了用户体验。所以一般需要在系统稳定和用户体验之间平衡一下。举个生活的例子:

一些热门的旅游景区,一般会对逐日的旅游参观人数有限制的。天天只会卖出牢固数目标门票,比如5000张。假定在五一、国庆假期,你去晚了,能够当天的票就已经卖完了,就没法进去游玩了。即使你进去了,排队也能排到你思疑人生。

常见的限流算法

牢固窗口限流算法

首先保护一个计数器,将单元时候段当做一个窗口,计数器记录这个窗口接收请求的次数。

  • 当次数少于限流阀值,就答应拜候,而且计数器+1
  • 当次数大于限流阀值,就拒绝拜候。
  • 当前的时候窗口曩昔以后,计数器清零。

假定单元时候是1秒,限流阀值为3。在单元时候1秒内,每来一个请求,计数器就加1,假如计数器累加的次数跨越限流阀值3,后续的请责备部拒绝。等到1s竣事后,计数器清0,重新起头计数。以下图:


后端法式员必备:四种限流算法,图文连系一篇搞定

伪代码以下:

    /**     * 牢固窗口时候算法     * @return     */    boolean fixedWindowsTryAcquire() {        long currentTime = System.currentTimeMillis();  //获得系统当前时候        if (currentTime - lastRequestTime > windowUnit) {  //检查能否在时候窗口内            counter = 0;  // 计数器清0            lastRequestTime = currentTime;  //开启新的时候窗口        }        if (counter < threshold) {  // 小于阀值            counter++;  //计数器加1            return true;        }        return false;    }

可是,这类算法有一个很明显的临界题目:假定限流阀值为5个请求,单元时候窗口是1s,假如我们在单元时候内的前0.8-1s和1-1.2s,别离并发5个请求。虽然都没有跨越阀值,可是假如算0.8-1.2s,则并发数高达10,已经跨越单元时候1s不跨越5阀值的界说啦。


后端法式员必备:四种限流算法,图文连系一篇搞定

滑动窗口限流算法

滑动窗口限流处理牢固窗口临界值的题目。它将单元时候周期分为n个小周期,别离记录每个小周期内接口的拜候次数,而且按照时候滑动删除过期的小周期。

一张图诠释滑动窗口的算法,以下:


后端法式员必备:四种限流算法,图文连系一篇搞定

假定单元时候还是1s,滑动窗口算法把它分别为5个小周期,也就是滑动窗口(单元时候)被分别为5个小格子。每格暗示0.2s。每过0.2s,时候窗口就会往右滑动一格。然后呢,每个小周期,都有自己自力的计数器,假如请求是0.83s到达的,0.8~1.0s对应的计数器就会加1。

我们来看下滑动窗口是若何处理临界题目标?

假定我们1s内的限流阀值还是5个请求,0.8~1.0内(比如0.9s的时辰)来了5个请求,落在黄色格子里。时候过了1.0s以后,又来5个请求,落在紫色格子里。假如是牢固窗口算法,是不会限流的,可是滑动窗口的话,每过一个小周期,它会右移一个小格。过了1.0s后,会右移一小格,当前的单元时候段是0.2~1.2s,这个地区的请求已经跨越限制的5了,已触发限流啦,现实上,紫色格子的请求都被拒绝啦。

TIPS: 当滑动窗口的格子周期分别得越多,那末滑动窗口的转动就越平滑,限流的统计就会越切确。

漏桶算法

漏桶算法的道理很简单,可以以为就是注水漏水的进程。往漏桶中以肆意速度流入水,以牢固的速度流出水。当水跨越桶的容量时,会被溢出,也就是被抛弃。由于桶的容量是稳定的,保证了整体的速度。


后端法式员必备:四种限流算法,图文连系一篇搞定

  • 流水的水滴,可以看做是拜候系统的请求,这个流入速度是不肯定的。
  • 桶的容量一般暗示系统所能处置的请求数。
  • 假如桶的容量满了,就到达限流的阀值,就会抛弃水滴(拒绝请求)
  • 流出的水滴,是恒定熟虑的,对应办事依照牢固的速度处置请求。

在一般流量的时辰,系统依照牢固的速度处置请求,是我们想要的。可是面临突发流量的时辰,漏桶算法还是循规蹈矩地处置请求,这就不是我们想看到的啦。流量变突发是,我们必定希望系统只管快点处置请求,提升用户体验嘛。

令牌桶算法

面临突发流量的时辰,我们可以利用令牌桶算法限流。

令牌桶算法道理

  • 有一个令牌治理员,按照限流巨细,定速往令牌桶里放令牌。
  • 假如令牌数目满了,跨越令牌桶容量的限制,那就抛弃。
  • 系统在接管到一个用户请求时,城市先去令牌桶要一个令牌。假如拿到令牌,那末就处置这个请求的营业逻辑;
  • 假如拿不到令牌,就间接拒绝这个请求。

后端法式员必备:四种限流算法,图文连系一篇搞定

假如令牌发放的战略正确,这个系统即不会被拖垮,也能进步机械的操纵率。

作者:捡田螺的小男孩
链接:https://juejin.cn/post/6967742960540581918

高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

商业合作微信

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

精彩点评

查看全部评论>>

相关推荐

平台大洗牌,被限流该怎么办?

平台大洗牌,被限流该怎么办?

最近平台大洗牌,评论区问最多的就是,如果被限流了该怎么办,今天就详细的解答这个问

降级-熔断-限流-傻傻分不清楚

降级-熔断-限流-傻傻分不清楚

1. 熔断1.1 熔断来源我们家用电闸上都有保险丝模块,当电压出现短路问题时,自动跳闸

血泪教训:小红书被限流怎么办?怎么恢复正常?

血泪教训:小红书被限流怎么办?怎么恢复正常?

很多新手小白刚开始运营小红书的时候,多半会经历很长一段数据低迷的情况。一方面,是

小红书无故被限流了??这里有你不知道的小红书限流小 ...

小红书无故被限流了??这里有你不知道的小红书限流小 ...

自从有消息爆出小红书内测直播功能之后,小红书成为了当下最受关注的平台之一。而正在

《抖音限流/降权/违规词手册》

《抖音限流/降权/违规词手册》

为了让更多小伙伴能够自己找到并解决【抖音限流】问题,今天为大家梳理一份抖音「限流

闲鱼被限流了,教你恢复元气

闲鱼被限流了,教你恢复元气

作者:咸鱼暴增系统很多朋友在使用小闲的时候都有可能碰到没有流量了,或者流量降低了

司马南为何被限流?多篇文章和视频下架!

司马南为何被限流?多篇文章和视频下架!

连续两天,灵灵看世界针对司马南污蔑、挑衅张文宏和陶斯亮提出质疑和批评,结果是:司

一文搞清楚限流、熔断和降级

一文搞清楚限流、熔断和降级

限流是对系统的被请求频率以及内部的部分功能的执行频率加以限制,防止因突发的流量激

作品播放量低,账号是不是被限流了,该怎么办呢?

作品播放量低,账号是不是被限流了,该怎么办呢?

前天我新发布的视频的播放量创历史了,有史以来最低的,你是不是也遇到过这样的情况?

一招判断自己的微头条是否被限流,被限流后,到底该怎么解决呢?

一招判断自己的微头条是否被限流,被限流后,到底该怎么解决呢?

对于一个自媒体创作者来说,辛辛苦苦创作的内容,发表后阅读量寥寥无几,那种心痛只有

阿里巴巴开源限流系统 Sentinel 全解析

阿里巴巴开源限流系统 Sentinel 全解析

今年下半年阿里开源了自研的限流系统 Sentinel,官方对 Sentinel 的介绍中用到了一系

展现量少怀疑被限流,打开它让你一看究竟,稍做修改也许爆了

展现量少怀疑被限流,打开它让你一看究竟,稍做修改也许爆了

不少友友顽强坚持,笔耕不辍,作品不少,但展现量不高,毕竟展现量才是根本,没有展现

文章被限流了怎么办?如何采取行动进行补救?我以昨天的文章为例

文章被限流了怎么办?如何采取行动进行补救?我以昨天的文章为例

文章被限流,是大家一直以来热议的一个话题,往往也只能表示无奈,没有任何办法,毕竟

第一批蹦迪选手已经“阳康”?武汉夜店开始限流了。

第一批蹦迪选手已经“阳康”?武汉夜店开始限流了。

月初我们找了22位知名的夜店老板做了一期专访,话题是关于“放开后夜店生意变好了吗?

如何判断账号是否被限流?没流量?赶紧查看这个地方

如何判断账号是否被限流?没流量?赶紧查看这个地方

只要查看一个地方,就可以知道你的账号是不是被限流了,好多朋友播放量突然间大幅度降

头条被限流可能是因为这几个原因,浅谈一下头条推荐机制

头条被限流可能是因为这几个原因,浅谈一下头条推荐机制

前段时间写了一篇文章刚发第一天没什么流量,突然第二天流量暴涨了,随之问题也跟着来

一篇文章说清楚头条“限流”那些事儿

一篇文章说清楚头条“限流”那些事儿

相信很多创作者都遇到辛苦写的微头条没有展现,也没有阅读量的情况,有些创作者知道这

抖音限流原因归纳总结与破解之道

抖音限流原因归纳总结与破解之道

2022年随着5G的来临,短视频作为目前最高阶最有效的信息展现方式,风口期必将持续不断

5种限流算法,7种限流方式,挡住突发流量?

5种限流算法,7种限流方式,挡住突发流量?

最近几年,随着微服务的流行,服务和服务之间的依赖越来越强,调用关系越来越复杂,服

主流的四种限流策略,我都可以通过redis实现

主流的四种限流策略,我都可以通过redis实现

引言在web开发中功能是基石,除了功能以外运维和防护就是重头戏了。因为在网站运行期

商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信