限流算法(固定窗口、滑动窗口、漏桶算法、令牌桶算法)

news2024/11/25 0:36:59

固定窗口算法

计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个
周期开始时,进行清零,重新计数。
如下图所示,每个三秒的时间区间内,限定访问次数150次,超过此请求次数则丢弃请求:
在这里插入图片描述
这个算法通常用于QPS限流和统计总访问量,对于秒级以上的时间周期来说,会存在一个非常严重
的问题,那就是临界问题。
假设3s内服务器的负载能力为150,因此一个周期的访问量限制在150,然而在第一个周期的最
后1秒和下一个周期的开始1秒时间段内,分别涌入100的访问量,虽然没有超过每个周期的限制
量,但是整体上2秒内已达到200的访问量,已远远超过服务器的负载能力,由此可见,计数器算
法方式限流对于周期比较长的限流,存在很大的弊端。

滑动窗口算法

滑动窗口算法是将固定窗口时间周期分为N个小周期,分别记录每个小周期内访问次数,并且根据时间滑动删除过期的小周期。
如下图,假设时间周期为3s,将3s再分为3个小周期,每个周期限制访问数为50次,则可以解决固定窗口的临界问题。
在这里插入图片描述
我再来回顾一下刚才的固定窗口算法,我们可以发现,固定窗口算法其实就是滑动窗口算法。只是它没有对时间窗口做进一步地划分,所以只有1格。
由此可见,当滑动窗口的格子划分的越多,那么滑动窗口的滚动就越平滑,限流的统计就会越精确。

漏桶算法

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

令牌桶算法

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1493524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

兰州做手机网站建设的8个注意点分享给大家

随着移动网络的日益发达,兰州移动网站建设已经成为移动互联网的热点,但很多用户对兰州移动网站制作仍然知之甚少。 今天小编总结了兰州手机网站建设的8个技巧,请关注,分享给大家。 1.根据用户需求分析网站 在兰州建设手机网站时…

FEP样品瓶透明聚四氟乙烯取样瓶

一、产品介绍 FEP试剂瓶,也叫FEP取样瓶、特氟龙样品瓶等,主要用于痕量分析、同位素检测,ICP-MS/OES/AAS分析等高端实验。本底值低,金属元素铅、铀含量小于0.01ppb,无溶出与析出。 常用尺寸(ml)&#xff1…

Stable Diffusion——Animate Diff一键AI图像转视频

前言 AnimateDiff 是一个实用框架,可以对文本生成图像模型进行动画处理,无需进行特定模型调整,即可为大多数现有的个性化文本转图像模型提供动画化能力。而Animatediff 已更新至 2.0 版本和3.0两个版本,相较于 1.0 版本&#xff…

电脑桌面悬浮窗便签哪个好?

在日常工作中,如何利用便签软件提高工作效率是许多人关心的问题之一。本文将介绍电脑桌面悬浮窗便签哪个好,让你的备忘录随时可见,提高工作效率。 电脑桌面悬浮窗便签是一种方便快捷的备忘录软件,它可以在电脑桌面上显示&#xf…

l从0开始学习NEON(2)

1、前言 继上一个例子,本次继续来学习NEON,本次学习NEON中向量拼接的操作,主要应用在图像的padding中。 https://blog.csdn.net/weixin_42108183/article/details/136440707 2、案例 2.1 案例1 在某些情况下,需要取在每个向量…

vue3页面内容切换(类似登录、注册内容切换)

一、内容描述 页面有俩块内容,分别是验证码登录页面内容,账号密码登录页面内容。有俩种处理方式,一个是写俩个页面跳转使用,还有一种是一个页面俩个内容,切换的只是不同的内容,相同的内容保留。一般都是选择…

14 程序地址空间

背景 kernel 2.6.32 32位平台 空间布局图 如何理解地址划分 地址划分,本质是调整地址空间的定义start和end,内存中定义了管理每个区域范围的结构体,叫mm_struct,每个进程都有一个这个结构体指针变量 验证上面划分的结构&#…

QCustomPlot 一个X轴多个Y轴

文章目录 大致效果如下: 相关代码如下: centerWidgetLayout->addLayout(hboxLayout,1);customplot new QCustomPlot(centerWidget);centerWidgetLayout->addWidget(customplot,100);int xPointNum 1300 ;customplot->plotLayout()->clear…

鸿蒙Harmony应用开发—ArkTS声明式开发(手势处理:绑定手势方法)

为组件绑定不同类型的手势事件,并设置事件的响应方法。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 绑定手势识别 通过如下属性给组件绑定手势识别,手势识别成功后可以通过事…

Docker容器数据卷使用

创建容器 将本地的/home/ceshi和容器的/home目录进行一个挂载,文件内容会进行同步 -v参数就是进行一个卷的挂载 主机路径:容器内的路径 [rootwq ~]# cd /home/ [rootwq home]# ll total 8 drwx------ 3 admin admin 4096 Dec 29 10:16 admin drwx------ 2 www www 4096…

如何使用DS file+cpolar内网穿透实现远程访问本地群晖NAS传输文件

文章目录 1. 群晖安装Cpolar2. 创建TCP公网地址3. 远程访问群晖文件4. 固定TCP公网地址5. 固定TCP地址连接 DS file 是一个由群晖公司开发的文件管理应用程序,主要用于浏览、访问和管理存储在群晖NAS(网络附加存储)中的文件。这个应用程序具有…

【C++】类和对象(中)一篇文章带你学会六大默认成员函数

目录 一、类的6个默认成员函数二、 构造函数2.1 概念2.2 特征 三、析构函数3.1 概念3.2 特性 四、拷贝构造函数4.1 概念4.2 特征 五、赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 前置和后置重载 六、日期类的实现七、const成员八、取地址及const取地址操作符重载结尾 …

新品发布会媒体邀请,邀约记者现场报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 新品发布会媒体邀请及记者现场报道邀约流程: 一、策划准备 明确新品发布会时间、地点和主题。 制定媒体邀请计划,确定目标媒体。 二、邀请媒体 向目标媒体发送…

关于制作Python游戏全过程(汇总1)

目录 前言: 1.plane_sprites模块: 1.1导入模块: 1.1.1pygame:一个用于创建游戏的Python库。 1.1.2random:Python标准库中的一个模块,用于生成随机数。 1.2定义事件代号: 1.2.1ENEMY_EVENT:自定义的敌机出场事件代号&#xf…

TypeScript 哈希表

文章目录 概念哈希化冲突链地址法开放地址法 装填因子(loadFactor)效率对比哈希函数字符串转数字算法 —— 幂的连乘压缩数字范围 —— 取余优秀哈希算法的优点快速计算:霍纳法则均匀分布 —— 质数Java 中的 HashMapN次幂的底数 实现哈希函数…

基于QGIS的研究区域遥感影像裁切下载方法-以岳麓区为例

目录 前言 一、数据说明 1、遥感影像 2、矢量范围 二、按矢量范围导出 1、第一步、导出影像 2、第二步、设置输出格式 3、设置裁切范围 4、设置分辨率 三、按矢量范围掩膜 1、第一步、打开裁剪工具 2、第二步、参数设置 ​编辑 3、执行掩膜 四、webgis支持 1、生成运行…

NineData云原生智能数据管理平台新功能发布|2024年2月版

SQL开发:全功能支持百度云 GaiaDB 介绍:支持通过 SQL 开发所有能力管理 GaiaDB 实例。更多信息,请参见:真香!NineData SQL 开发全面适配 GaiaDB 场景:企业使用 GaiaDB 管理企业数据,需要一个一…

【EI会议征稿通知】第三届信息经济、数据建模与云计算国际学术会议 (ICIDC 2024)

第三届信息经济、数据建模与云计算国际学术会议 2024 3rd International Conference on Information Economy, Data Modeling and Cloud Computing(ICIDC 2024) 第三届信息经济、数据建模与云计算国际学术会议(ICIDC 2024)定于2024年6月21-23日在中国…

javaWebssh药品进销存信息管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh药品进销存信息管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOM…

YOLOv8-Openvino-ByteTrack【CPU】

纯检测如下: YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 注:YOLOv8和YOLOv9代码内容基本一致! 全部代码Github&…