做梦梦见很多蛇是什么意思| 喝老陈醋有什么好处| 剑桥英语和新概念英语有什么区别| 福建岩茶属于什么茶| 11月份什么星座| 身份证有x代表什么| 官方的意思是什么| 基础油是什么油| 斗拱是什么意思| 为什么一动就出汗| 送巧克力代表什么意思| honor是什么牌子的手机| 辽宁古代叫什么| 吃银耳有什么功效和作用| 梦见大风大雨预示什么| 肾结石是什么原因导致的| 水果之王是什么水果| 2009年是什么生肖| arg是什么氨基酸| 什么是高脂血症| 甲状腺适合吃什么食物| 亚临床甲亢是什么意思| 张信哲属什么生肖| 煤气是什么气体| 天贵星是什么意思| 普洱属于什么茶| 脑蛋白治疗什么病| 今年高温什么时候结束| 生小孩有什么补贴政策| 连续打喷嚏是什么原因| 青岛有什么好吃的| 速度是70迈心情是自由自在什么歌| 地中海贫血什么意思| 梦到蛇什么意思| 尿蛋白高吃什么食物好| 三维是什么| 自愈是什么意思| 大腿前侧肌肉叫什么| 对别人竖中指是什么意思| 农历四月是什么月| 叶酸对人体有什么好处| 什么是等位基因| 外包什么意思| 腋下有异味是什么原因| 脱髓鞘病变是什么意思| 腰疼吃点什么药| 雏形是什么意思| 降钙素原高是什么原因| 上皮内瘤变是什么意思| 10年什么婚| 什么是应届毕业生| 失代偿期是什么意思| 弱的部首是什么| 过敏性紫癜有什么危害| 什么的脸庞| 橙色代表什么| 空调除湿和制冷有什么区别| 阴毛长虱子用什么药| 蚂蝗怕什么| 旦上面加一横是什么字| 天热出汗多是什么原因| 什么时候上环是最佳时期| 河北有什么特产| 什么是冠心病| 冬虫夏草生长在什么地方| 墨菲定律什么意思| 海之蓝是什么香型| 男人吃什么壮阳最快| 皮下囊肿挂什么科| 肠胃紊乱吃什么药| 策反是什么意思| 挂急诊和门诊有什么区别| 枸杞搭配什么喝最好| 钦此是什么意思| 茶水费是什么意思| 魂牵梦萦是什么意思| 脑血管挂什么科| 什么仗人势| 胎儿偏小吃什么补得快| 农历今天属什么生肖| 胳膊上种花是什么疫苗| 颈椎轻度退行性变是什么意思| 河北有什么市| 私生饭什么意思| lodge是什么意思| 谷草谷丙低是什么原因| 算理是什么意思| 麦麸是什么意思| 老师家访需要准备什么| 什么是指标| 慢性咽炎有什么症状| 多西环素片主治什么| 五六点是什么时辰| 睡觉一直做梦是什么原因| 什么是活检检查| 查验是什么意思| 肚子上面疼是什么原因| ri是什么意思| 一花一世界一叶一菩提是什么意思| 肚子不舒服吃什么药| 什么东西越洗越脏答案| 借什么可以不还| 进贡是什么意思| 酸梅汤什么人不能喝| 反流性食管炎不能吃什么食物| 甲亢多吃什么食物比较好| 谷丙转氨酶高吃什么药可以降下来| 520送男朋友什么礼物| 血口喷人是什么意思| 一什么颜色| 屁多是什么原因造成的| 牙痛用什么止痛| 传导阻滞吃什么药| 带下病是什么病| 钙片什么时候吃好| 狗狗拉肚子是什么原因| 两个马念什么字| 什么样的空气| 孕期血糖高可以吃什么水果| 稀料对人体有什么危害| 身体铅超标有什么危害| 钱是什么单位| 迷津是什么意思| 脚板肿是什么原因引起的| 什么行业最赚钱投资小| 什么是尿蛋白| 柳絮是什么| 机电一体化学什么| 胆囊结石挂什么科| 为什么突然就细菌感染了| 贡品是什么意思| 噫气是什么意思| 天干指的是什么| 因果循环是什么意思| 激光脱毛有什么副作用| 营养神经吃什么药效果好| 早孕什么意思| titus手表属于什么档次| 来月经头晕是什么原因| 呆呆的笑是什么笑| 心脏肿大是什么原因| 总蛋白高是什么原因| 鲤鱼旗的含义是什么| 什么都能吃| 春天开的花都有什么花| 转氨酶高吃什么药| 梦见好多虫子是什么意思| 怕空调冷风什么原因| 长期吃优甲乐有什么副作用| 梦见偷菜是什么意思| 肚子痛吃什么药| 核磁共振是查什么的| 安宫牛黄丸治什么病| 双性恋是什么意思| 女人做梦哭醒预示什么| 16岁是什么年华| 喝什么解酒最快最有效| 手脚肿胀是什么原因引起的| 99足银是什么意思| 胆红素高吃什么药| 魏征字什么| 病毒性肺炎吃什么药| 痰多吃什么好| 桑叶泡水喝有什么好处| 3月份生日是什么星座| 仔仔是什么意思| 五月有什么节日| 欲仙欲死是什么意思| 肝硬化早期有什么症状| 爆竹声中一岁除下一句是什么| 心影增大是什么意思| 帕金森是什么| 昕字五行属什么| pyq是什么意思| 男人射的快是什么原因| 火龙果有什么功效| 身上有淤青是什么原因| 圆谎是什么意思| 莲子心泡水喝有什么功效和作用| 吃桂圆干有什么好处和坏处| 牙合是什么字| 梦见蛇是什么意思| 野生黄芪长什么样子的图片| 肿物是什么意思| 爱心是什么牌子| 公粮是什么意思| 毛肚是什么东西| 二氧化碳是什么| 不全纵隔子宫是什么意思| andy是什么意思| 体测是什么意思| 茭头是什么| 什么食物含叶酸| ufc什么意思| 身上没力气没劲是什么原因| essence是什么意思| 表述是什么意思| 月经可以吃什么水果| 属龙是什么星座| 剖腹产坐月子吃什么| 什么是历史虚无主义| 荷兰机场叫什么| 肺脓肿是什么病严重吗| 杀生电影讲的什么意思| 卡介苗为什么会留疤| 掉以轻心是什么意思| 鸡蛋粘壳是什么原因| 脾不好吃什么药最见效| 蟑螂中药名称叫什么| 脾胃虚弱吃什么药好| 1940年中国发生了什么| 胰腺在人体什么部位| 严重贫血吃什么补的快| 可可尼女装什么档次| 欲钱看正月初一是什么生肖| 牛蛙不能和什么一起吃| 化验血能查出什么项目| 吃东西感觉口苦是什么原因| 蚂蚁代表什么生肖| 椰子鞋是什么牌子| 人吃什么才能长胖| 肝藏血是什么意思| 湿疹是什么意思| 人的本质属性是什么| 什么是肛漏| 做梦梦见兔子是什么意思| 跑步对身体有什么好处| 疤痕憩室什么意思| 吃什么对胃最好| 爻是什么意思| 梦见家里着火了是什么征兆| 墨龟为什么只能养一只| 梦见自己拉了很多屎是什么意思| 什么映雪| 突然的反义词是什么| 脚背上长痣代表什么| 今年高温什么时候结束| 由加页念什么| 端午节在什么时候| 炫是什么意思| 四个又念什么| icu和ccu有什么区别| 层峦叠翠的意思是什么| 欣喜若狂的近义词是什么| 鼓刹和碟刹有什么区别| 咳嗽吐黄痰吃什么药| 什么的花灯| 硼砂是什么| 痛风什么原因引起| 医学生规培是什么意思| 挠头什么意思| 工种是什么意思| 痛风吃什么食物好得快| 皮肤发痒是什么原因| 韭菜什么时候种最好| 西葫芦炒什么好吃| 电表走的快是什么原因| 羊水多是什么原因造成的| 什么虫子咬了像针扎一样疼| 白羊女和什么星座最配| 西红柿对人体有什么好处| hoho是什么意思| 借条和欠条有什么区别| 潘多拉是什么意思| 百度

《火焰纹章回声》阿鲁姆和赛莉卡amiibo实物图

人工智能 算法
本篇介绍了四种常用的限流算法:固定窗口算法、滑动窗口算法、漏桶算法和令牌桶算法。每种算法都有其特点和适用场景。
百度 今年,中央继续加大整治群众身边腐败问题力度,推动全面从严治党向基层延伸。

在高并发访问下,比如电商大促活动,流量持续不断的涌入,服务之间的相互调用频率突然增加,引发系统负载过高,这时系统所依赖的服务的稳定性对系统的影响非常大,而且还有很多不确定因素引起雪崩,如网络连接中断,服务宕机等。一般微服务容错组件提供了限流、隔离、降级、熔断等手段,可以有效保护我们的微服务系统。本文主要说说限流。

限流,就是限制最大流量,防止操作频率超过定义的限制。系统能提供的最大并发有限,同时请求又太多,这就就需要限流,比如秒杀、大促活动业务,瞬时大量请求涌入,服务器服务不过来,就只好限流了。速率限制通过限制在给定时间段内可以到达 API 的请求数量来保护服务免受意外或恶意过度使用。在没有速率限制的情况下,任何用户都可以用请求轰炸您的服务器,从而导致其他用户饿死的情况。

为什么要限速?

  • 防止资源匮乏:速率限制的最常见原因是通过避免资源匮乏来提高基于 API 的服务的可用性。如果应用速率限制,则可以防止基于负载的拒绝服务 (doS) 攻击。即使一个用户用大量请求轰炸 API,其他用户也不会挨饿。
  • 安全性:速率限制可防止暴力破解登录、促销代码等安全密集型功能。对这些功能的请求数量在用户级别受到限制,因此暴力破解算法在这些场景中不起作用。
  • 防止运营成本:在按使用付费模式自动扩展资源的情况下,速率限制通过对资源扩展设置虚拟上限来帮助控制运营成本。如果不采用速率限制,资源可能会不成比例地扩展,从而导致指数级的账单。

速率限制策略速率限制可应用于以下参数:

  • 用户:限制在给定时间段内允许用户的请求数。基于用户的速率限制是最常见和最直观的速率限制形式之一。
  • 并发性:这里限制了在给定时间范围内用户可以允许的并行会话数。并行连接数量的限制也有助于缓解 DDOS 攻击。
  • 位置/ID:这有助于运行基于位置或以人口统计为中心的活动。可以限制不是来自目标人口统计的请求,以提高目标区域的可用性
  • 服务器:基于服务器的速率限制是一种利基策略。这通常在特定服务器需要大部分请求时使用,即服务器与特定功能强耦合

下面介绍下四种常?的限流算法。

1、漏桶算法

漏桶算法的思路,是一种简单直观的算法,就是?个固定容量的漏桶,按照常量固定速率流出?滴。如果桶是空的,则不需流出水滴。可以以任意速率流入水滴到漏桶。如果流入水滴超出了桶的容量,则流入的水滴溢出了(被丢弃),而漏桶容量是不变的。

这种算法的优点是它可以平滑请求的突发并以恒定的速率处理它们。它也很容易在负载均衡器上实现,并且对每个用户来说都是高效的内存。无论请求的数量如何,都保持到服务器的恒定接近均匀的流量。

缺点是请求的爆发可能会填满存储桶,导致新请求的匮乏。它也不能保证请求在给定的时间内完成。

优点:

  • 平滑流量。由于漏桶算法以固定的速率处理请求,可以有效地平滑和整形流量,避免流量的突发和波动(类似于消息队列的削峰填谷的作用)。
  • 防止过载。当流入的请求超过桶的容量时,可以直接丢弃请求,防止系统过载。

缺点:

  • 无法处理突发流量:由于漏桶的出口速度是固定的,无法处理突发流量。例如,即使在流量较小的时候,也无法以更快的速度处理请求。
  • 可能会丢失数据:如果入口流量过大,超过了桶的容量,那么就需要丢弃部分请求。在一些不能接受丢失请求的场景中,这可能是一个问题。

2、令牌桶算法

令牌桶算法:假设限制2r/s,则按照500毫秒的固定速率往桶中添加令牌。桶中最多存放b个令牌,当桶满时,新添加的令牌被丢弃或拒绝。当一个n个字节大小的数据包到达,将从桶中删除n个令牌,接着数据包被发送到网络上。如果桶中的令牌不足n个,则不会删除令牌,且该数据包将被限流(要么丢弃,要么缓冲区等待)。令牌桶限流原理,如图所示。


令牌桶限流服务器端可以根据实际服务性能和时间段改变生成令牌的速度和?桶的容量。 一旦需要提高速率,则按需提高放入桶中的令牌的速率。

生成令牌的速度是恒定的,而请求去拿令牌是没有速度限制的。这意味着当面对瞬时大流量,该算法可以在短时间内请求拿到大量令牌,而且拿令牌的过程并不是消耗很大。

每次新请求到达服务器时,都会发生两个操作:

  • 获取令牌:获取该用户的当前令牌数。如果它大于定义的限制,则丢弃请求。
  • 更新令牌:如果获取的令牌小于持续时间 d 的限制,则接受请求并附加令牌。

该算法具有内存效率,因为我们为我们的应用程序为每个用户节省了更少的数据量。这里的问题是它可能导致分布式环境中的竞争条件。当来自两个不同应用程序服务器的两个请求同时尝试获取令牌时,就会发生这种情况。

优点:

  • 可以处理突发流量:令牌桶算法可以处理突发流量。当桶满时,能够以最大速度处理请求。这对于需要处理突发流量的应用场景非常有用。
  • 限制平均速率:在长期运行中,数据的传输率会被限制在预定义的平均速率(即生成令牌的速率)。
  • 灵活性:与漏桶算法相比,令牌桶算法提供了更大的灵活性。例如,可以动态地调整生成令牌的速率。

缺点:

  • 可能导致过载:如果令牌产生的速度过快,可能会导致大量的突发流量,这可能会使网络或服务过载。
  • 需要存储空间:令牌桶需要一定的存储空间来保存令牌,可能会导致内存资源的浪费。
  • 实现稍复杂:相比于计数器算法,令牌桶算法的实现稍微复杂一些。

3、固定时间窗?算法

在固定的时间窗口内,可以允许固定数量的请求进入。超过数量就拒绝或者排队,等下一个时间段进入。这种实现计数器限流方式由于是在一个时间间隔内进行限制,如果用户在上个时间间隔结束前请求(但没有超过限制),同时在当前时间间隔刚开始请求(同样没超过限制),在各自的时间间隔内,这些请求都是正常的,但是将间隔临界的一段时间内的请求就会超过系统限制,可能导致系统被压垮。

由于计数器算法存在时间临界点缺陷,因此在时间临界点左右的极短时间段内容易遭到攻击。比如设定每分钟最多可以请求100次某个接口,如12:00:00-12:00:59时间段内没有数据请求,而12:00:59-12:01:00时间段内突然并发100次请求,而紧接着跨入下一个计数周期,计数器清零,在12:01:00-12:01:01内又有100次请求。那么也就是说在时间临界点左右可能同时有2倍的阀值进行请求,从而造成后台处理请求过载的情况,导致系统运营能力不足,甚至导致系统崩溃。

缺点:

  • 限流不够平滑。例如:限流是每秒3个,在第一毫秒发送了3个请求,达到限流,窗口剩余时间的请求都将会被拒绝,体验不好。
  • 无法处理窗口边界问题。因为是在某个时间窗口内进行流量控制,所以可能会出现窗口边界效应,即在时间窗口的边界处可能会有大量的请求被允许通过,从而导致突发流量。

例如:限流是每秒3个,在第一秒的最后一毫秒发送了3个请求,在第二秒的第一毫秒又发送了3个请求。在这两毫米内处理了6个请求,但是并没有触发限流。如果出现突发流量,可能会压垮服务器。

4、滑动时间窗?算法

滑动窗?算法是把固定时间间进行划分,并且随着时间移动,移动方式为开始时间点变为时间列表中的第二时间点,结束时间点增加一个时间点,不断重复,通过这种方式可以巧妙的避开计数器的临界点的问题。

滑动窗口算法可以有效的规避计数器算法中时间临界点的问题,但是仍然存在时间片段的概念。同时滑动窗口算法计数运算也相对固定时间窗口算法比较耗时。

缺点: 还是存在限流不够平滑的问题。例如:限流是每秒3个,在第一毫秒发送了3个请求,达到限流,剩余窗口时间的请求都将会被拒绝,体验不好。

总结

介绍了四种常用的限流算法:固定窗口算法、滑动窗口算法、漏桶算法和令牌桶算法。每种算法都有其特点和适用场景,下面我们来对它们进行简单的总结和比较。

  • 令牌桶算法既能平滑流量,又能处理突发流量,适用于需要处理突发流量的场景。
  • 漏桶算法的优点是流量处理更平滑,但是无法应对突发流量,适用于需要平滑流量的场景。
  • 固定窗口算法 实现简单,但是限流不够平滑,存在窗口边界问题,适用于需要简单实现限流的场景。
  • 滑动窗口算法解决了窗口边界问题,但是还是存在限流不够平滑的问题,适用于需要控制平均请求速率的场景。
责任编辑:姜华 来源: 今日头条
相关推荐

2025-08-05 09:22:03

限流算法数量

2025-08-05 17:55:40

Python 开发编程语言

2025-08-05 10:24:00

分布式限流算法

2025-08-05 20:17:22

推荐算法系统

2025-08-05 12:07:57

智慧城市智能建筑物联网

2025-08-05 16:27:01

2025-08-05 21:13:00

索引SQL工具

2025-08-05 07:01:46

限流算法令牌

2025-08-05 09:00:24

REST API身份认证密钥

2025-08-05 12:24:10

恶意软件逃避技术

2025-08-05 17:20:01

C#排序算法

2025-08-05 09:31:21

DB2循环语句

2025-08-05 15:13:20

PHP基本排序算法代码实现

2025-08-05 08:04:00

2025-08-05 13:04:35

数据挖掘分析分析方法数据分析师

2025-08-05 00:00:00

权限模型RBAC

2025-08-05 08:37:18

网络监控网络架构网络

2025-08-05 14:33:22

限流算法微服务

2025-08-05 17:21:31

百兆交换机

2025-08-05 19:10:18

跨域Web开发
点赞
收藏

51CTO技术栈公众号

下午两点是什么时辰 9点到11点是什么经络 四十年是什么婚 烧心吃点什么药 小白和兽神什么关系
感冒咳嗽一直不好是什么原因 肝气郁结喝什么茶 loser是什么意思 反射弧太长是什么意思 女人阳虚吃什么药效果最好
芒果是什么季节的 桑葚泡水喝有什么好处 吃南瓜子有什么好处 革兰氏阳性菌是什么病 驴肉不能和什么一起吃
全身是宝的动物是什么生肖 首发是什么意思 吃杨梅有什么好处 拉磨是什么意思 指什么
皖鱼是什么鱼hcv8jop7ns9r.cn 过敏性鼻炎吃什么药好hcv8jop7ns1r.cn 8月24号是什么星座beikeqingting.com 做梦梦见别人怀孕是什么意思zhongyiyatai.com 手淫有什么坏处hcv8jop3ns5r.cn
拔智齿当天可以吃什么jinxinzhichuang.com 胰腺ca是什么意思hcv8jop2ns5r.cn 脑门痒痒是什么预兆hcv9jop3ns5r.cn 拉肚子肚子疼吃什么药hcv7jop9ns0r.cn 机缘是什么意思hcv9jop3ns8r.cn
男生适合学什么专业hcv8jop9ns3r.cn 术前八项检查是什么hcv7jop6ns7r.cn 肥胖纹什么样子cl108k.com 第一次什么感觉hcv8jop8ns9r.cn 红细胞高说明什么hcv8jop5ns1r.cn
吃海参有什么好处hcv7jop5ns0r.cn ucs是什么意思hcv9jop6ns7r.cn 手麻脚麻吃什么药hcv8jop3ns0r.cn 心率过快吃什么药最好hcv8jop3ns2r.cn 脑电图能检查出什么疾病hcv9jop3ns9r.cn
百度