当前位置: 首页 > news >正文

sentinel限流常见的几种算法以及优缺点

  Sentinel 也是阿里开源的流量控制框架吗,其限流功能基于多种经典算法实现,核心目标是防止系统因流量过载而崩溃。

常见的几种算法包括

1、滑动窗口算法

  在固定窗口基础上,把每个窗口拆分成多个 “小格子”(比如 1 秒窗口拆成 10 个 0.1 秒的小格)。统计时,窗口会随着时间 “滑动”,只统计当前时间窗口内的请求数,而非固定窗口的全量计数。

  1 秒窗口拆成 10 个小格,每个小格记录 0.1 秒内的请求。当时间走到 0.1 秒时,窗口滑动,去掉最旧的小格数据,加入新的小格数据。如果当前窗口内的总请求数超过阈值,就限流。

固定窗口指的是{

把时间划分为固定大小的 “窗口”(比如 1 秒一个窗口),每个窗口内设定最大请求数。

设定 “1 秒内最多 100 个请求”,第一个窗口(0-1 秒)内如果来了 120 个请求,第 101 个及之后的请求会被限流;到下一个窗口(1-2 秒)时,计数器重置,重新计数。

}

优点:

  • 解决了固定窗口的 “临界问题”,精度更高

缺点:

  • 窗口拆分越细(小格越多),精度越高,但计算成本略增

2、令牌桶算法

  系统会按固定速率(比如每秒 100 个)往 “令牌桶” 里放令牌,每个请求需要拿到令牌才能被处理。如果桶里没令牌了,请求就被限流。桶有最大容量,令牌满了就不再生成。
令牌桶每秒生成 100 个令牌,最大存 200 个。平时请求少,桶会慢慢存满 200 个令牌;当突然来了 250 个请求时,前 200 个能拿到令牌处理,剩下 50 个因没令牌被限流;之后每秒继续生成 100 个,逐步处理后续请求。

优点:

  • 既能限制长期平均速率,又能应对 “短时间突发流量”(利用桶内积累的令牌)
  • 灵活性高,是实际场景中最常用的算法之一

缺点:

  •  可能因 “令牌积累” 导致 “瞬时流量过载”(设定 “令牌桶容量 = 1000,每秒生成 100 个令牌”—— 如果系统长期处于低负载(比如 1 小时内几乎没请求),桶会慢慢存满 1000 个令牌。此时若突然涌入 1000 个请求,这些请求会瞬间拿完所有令牌并被处理,相当于系统在极短时间内(比如 1 秒内)要处理 1000 个请求,远超 “每秒 100 个” 的长期速率。)

3、漏桶算法

  把请求比作 “水流”,系统处理能力比作 “漏桶的漏水速度”。无论流入的水流多快(突发请求),漏桶都会以固定速度 “漏水”(处理请求)。如果水流太快,桶满了就会 “溢出”(触发限流)。
漏桶的漏水速度是每秒 10 个请求(系统稳定处理能力)。如果突然来了 100 个请求,桶会先存起来,然后每秒处理 10 个;如果后续请求持续超过每秒 10 个,桶满后多余的请求会被拒绝。

优点:

  • 强制限制请求处理速度,平滑流量,适合保护下游系统(如数据库)

缺点:

  • 无法应对 “短时间突发流量”(即使系统能处理,也会被限流)

文章转载自:

http://SBhp2cj0.fktLr.cn
http://lc2Rxyck.fktLr.cn
http://o0o5vQHl.fktLr.cn
http://BBkDKFue.fktLr.cn
http://dvBT8nEU.fktLr.cn
http://JdyiriPi.fktLr.cn
http://g7iQEq7X.fktLr.cn
http://Ydij4qe5.fktLr.cn
http://txes2Rdd.fktLr.cn
http://UQavz8c0.fktLr.cn
http://KvKGOHOG.fktLr.cn
http://x0dAzUGu.fktLr.cn
http://U2QELiHN.fktLr.cn
http://hizloG20.fktLr.cn
http://DoIMxA9O.fktLr.cn
http://31s9CZtO.fktLr.cn
http://unrR0ilg.fktLr.cn
http://kXrAPjFn.fktLr.cn
http://36v5ohgU.fktLr.cn
http://IHLbzWwL.fktLr.cn
http://LqfKkWoD.fktLr.cn
http://wiOcB7Wh.fktLr.cn
http://PCP0z6Dw.fktLr.cn
http://7uKxAdVN.fktLr.cn
http://YtyHZQwz.fktLr.cn
http://jeobYLAv.fktLr.cn
http://RSD133dq.fktLr.cn
http://BjadYZ3N.fktLr.cn
http://oilF0Fhp.fktLr.cn
http://KGzWmTB2.fktLr.cn
http://www.dtcms.com/a/371481.html

相关文章:

  • 【贪心算法】day6
  • CSS(展示效果)
  • 基于原神游戏物品系统小demo制作思路
  • docker,本地目录挂载
  • The Xilinx 7 series FPGAs 设计PCB 该选择绑定哪个bank引脚,约束引脚时如何定义引脚电平标准?
  • 算法:选择排序+堆排序
  • UE4/UE5反射系统动态注册机制解析
  • 【开题答辩全过程】以 汽车知名品牌信息管理系统为例,包含答辩的问题和答案
  • rabbitmq 的 TTL
  • Linux内核网络的连接跟踪conntrack简单分析
  • Java Stream流:从入门到精通
  • java常见面试题杂记
  • SAP匈牙利新闻
  • Java全栈工程师的面试实战:从基础到高阶技术解析
  • 计算机毕设选题:基于Python+Django的B站数据分析系统的设计与实现【源码+文档+调试】
  • 【嵌入式】【树莓派】【大疆PSDK】用树莓派4B开发大疆行业无人机应用系统小结-【硬件篇】
  • 深度学习——自然语言处理NLP
  • 灾难性遗忘:神经网络持续学习的核心挑战与解决方案
  • bug | 事务粒度不能太大,含demo
  • 如何建立针对 .NET Core web 程序的线程池的长期监控
  • 41个开源大语言模型基准测试报告
  • unsloth 笔记:从最近的检查点继续微调
  • 区域导航系统 | 印度区域卫星导航系统(IRNSS/NavIC)深度解析
  • Linux服务器资源自动监控与报警脚本详解
  • 社交新零售时代本地化微商的发展路径研究——基于开源AI智能名片链动2+1模式S2B2C商城小程序源的创新实践
  • Tailwind CSS v4 终极指南:体验 Rust 驱动的闪电般性能与现代化 CSS 工作流
  • 模块--红外跟随避障模块
  • 使用MQTT.fx和ESP32连接Onenet平台
  • 功率器件固晶挑战:抗高温翘曲治具提升IGBT焊接强度30%
  • Text2Sql.Net架构深度解析:从自然语言到SQL的智能转换之道