限流算法相关知识点

article/2025/6/12 9:20:32

目录

    • 固定窗口算法
    • 滑动窗口算法
    • 漏桶算法
    • 令牌桶算法
    • Sentinel限流例子

固定窗口算法

固定窗口算法的实现相对简单。系统维护一个计数器,每当请求到来时,计数器加一。当时间窗口结束时,计数器清零。如果在一个时间窗口内请求数量超过了预设的阈值,则拒绝后续的请求

public class FixedWindowRateLimiter {private AtomicInteger counter = new AtomicInteger(0);private volatile long lastRequestTime;private long windowUnit = 1000L; // 假设时间窗口为1000毫秒private int threshold = 10; // 阈值为10public synchronized boolean fixedWindowsTryAcquire() {long currentTime = System.currentTimeMillis();if (currentTime - lastRequestTime > windowUnit) {counter.set(0);lastRequestTime = currentTime;}if (counter.get() < threshold) {counter.incrementAndGet();return true;}return false;}
}

滑动窗口算法

  • 动态窗口划分‌

将时间切分为更细粒度的子窗口(如1秒分为10个100ms窗口),每个新请求触发窗口滑动,仅统计最近完整时间周期内的请求总量(如最近1秒的请求数)。‌‌

  • 精准流量控制‌

通过维护滑动窗口内的请求时间戳队列(如使用Redis的ZSET结构),实时计算有效请求数量,避免固定窗口算法在时间边界处允许双倍流量突发的缺陷

漏桶算法

桶有固定容量,水以固定速率从桶中流出
在这里插入图片描述

漏桶模式中的消费处理总是能以恒定的速度进行,可以很好的保护自身系统不被突如其来的流量冲垮;但是这也是漏桶模式的缺点,假设 QPS 为 2,同时 2 个请求进来,2 个请求并不能同时进行处理响应,因为每 1s / 2= 500ms 只能处理一个请求

令牌桶算法

令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。从原理上看,令牌桶算法和漏桶算法是相反的,一个“进水”,一个是“漏水”。

如 Guava RateLimiter

系统服务作为生产者,按照指定频率向桶(容器)中添加令牌,如 QPS 为 2,每 500ms 向桶中添加一个令牌,如果桶中令牌数量达到阈值,则不再添加。

请求执行作为消费者,每个请求都需要去桶中拿取一个令牌,取到令牌则继续执行;如果桶中无令牌可取,就触发拒绝策略,可以是超时等待,也可以是直接拒绝本次请求,由此达到限流目的。

Sentinel限流例子

在这里插入图片描述

  1. 定义资源
  • 通过代码定义资源
  • 通过注解定义资源
@RequestMapping("/getuser")
public String getUser() {try (Entry entry = SphU.entry("getuser")) {// 被保护逻辑return "User";} catch (Exception e) {// 限流之后的业务逻辑return "被限流了";}
}
  1. 定义限流规则
private static void initFlowRules() {List<FlowRule> rules = new ArrayList<>();FlowRule rule = new FlowRule();rule.setResource("resourceName"); // 资源名称rule.setGrade(RuleConstant.FLOW_GRADE_QPS); // 根据 QPS 限流rule.setCount(1); // QPS 阈值【每秒只允许通过一个请求】rule.setStrategy(RuleConstant.STRATEGY_DIRECT); // 调用关系限流策略【非必须设置】rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT); // 流控效果【非必须设置】rule.setClusterMode(false); // 是否集群限流【非必须设置,默认非集群】rules.add(rule);FlowRuleManager.loadRules(rules);
}

http://www.hkcw.cn/article/rFMKFbRLEI.shtml

相关文章

第N个泰波那契数列 --- 动态规划

目录 一&#xff1a;题目 二&#xff1a;算法原理 三&#xff1a;代码实现 一&#xff1a;题目 题目链接&#xff1a;1137. 第 N 个泰波那契数 - 力扣&#xff08;LeetCode&#xff09; 二&#xff1a;算法原理 三&#xff1a;代码实现 class Solution { public:int trib…

【题解-洛谷】P3467 [POI 2008] PLA-Postering

题目&#xff1a;P3467 [POI 2008] PLA-Postering 题目描述 Byteburg 城市的东区所有建筑都是按照旧式建筑风格建造的&#xff1a;它们一个接一个地紧挨在一起&#xff0c;中间没有任何间隔。它们从东到西排列&#xff0c;形成了一排高度各异的建筑长廊。 Byteburg 的市长 B…

樊振东加盟 德国俱乐部:他主动的 新挑战迎期待

当樊振东在社交媒体上发布观赛欧冠的照片时,另一条消息也震惊了乒乓球圈。6月1日,德国乒乓球甲级联赛FC萨尔布吕肯乒乓球俱乐部宣布,奥运冠军樊振东将加盟球队。樊振东表示,他非常期待在萨尔布吕肯和德甲的新挑战,体验新的环境,并与球队一起赢得更多胜利。球队体育总监埃…

雷军祝儿童节快乐 分享健身照送祝福

6月1日,小米科技创始人、董事长雷军在微博分享了健身打卡照片,并向小朋友送上儿童节祝福,祝所有小朋友都有一个快乐的童年。他还附上了一张富有童趣的AI图片,图片中“Q版雷军”坐在旋转木马上,双手紧握拳头,呈现出加油打气的动作。责任编辑:zx0176

Vue ①-实例 || 指令

Vue Vue 是一个构建用户界面的渐进式框架&#xff0c;也就是 UI 框架。 创建 Vue 实例 创建 Vue实例&#xff0c;初始化渲染&#xff1a; 准备容器&#xff08;Vue所管理的范围&#xff09;引包&#xff08;开发版本包 / 生产版本包&#xff08;官网找&#xff09;&#xf…

尚硅谷redis7 93-97 springboot整合reids之总体概述

93 springboot整合reids之总体概述 总体概述 jedis-lettuce-RedisTemplate三者的联系 名称类型作用描述和其它的关系JedisRedis 客户端早期主流的 Java Redis 客户端&#xff0c;基于阻塞 I/O&#xff0c;同步操作可作为 RedisTemplate 的底层连接实现LettuceRedis 客户端基…

两个女首富杠起来了 医美巨头争议不断

巨子生物和华熙生物近期陷入了各自的尴尬境地。市值745亿港元的医美新贵巨子生物因一位博主的视频面临了广泛的造假质疑。与此同时,业绩下滑的玻尿酸巨头华熙生物发文痛斥券商研报“踩一捧一”,试图证明玻尿酸还未过时,但显得有些无力。一些曾鼓吹重组胶原蛋白和巨子生物的券…

屈原的老家端午要过三次 三次端午的独特庆祝

端午节作为我国最古老的节日之一,在众多习俗中,以纪念屈原影响最为广泛。屈原出生于战国时期的湖北秭归,当地不仅保留着典型的屈原故里端午习俗,还有“端午比年大”的说法。在屈原的家乡湖北秭归乐平里,这里位于山谷中央,四面群山环抱,不远处是长江的支流香溪河。古籍记…

张若昀一家三口现身伦敦过六一 异国街头温馨同游

6月1日,张若昀和唐艺昕带着女儿在伦敦游玩时被网友偶遇。一家三口走在异国街头,画面十分温馨。张若昀推着婴儿车,尽显父爱;唐艺昕穿着黑色衣服,皮肤白皙气质出众;女儿坐在小车上乖巧可爱。明星们在国内逛街容易受到关注,因此他们更倾向于在国外享受私人时光。这次张若昀…

黄石公园车祸致5华人身亡司机涉酒驾 肇事司机酒精含量超标两倍

美国警方于5月30日透露,5月初在黄石国家公园附近发生的一起导致7人死亡的交通事故中,肇事皮卡司机的血液酒精含量超过法定驾驶限值的两倍。这起事故发生在5月1日晚,地点位于美国爱达荷州黄石国家公园附近。事故造成7人死亡、多人受伤。中国驻旧金山总领馆在5月2日确认,死者…

叶童回应与陈丽君合作 虚实共生演绎许仙

5月31日晚,陈丽君与叶童在央视端午晚会上同框,共唱戏歌《浮生一白》。叶童随后在微博发文表示,这次与陈丽君的合作非常特别,虚实共生,共同演绎了这首歌曲。陈丽君也转发了这条微博,表达了与叶童老师合作的喜悦。叶童曾在经典剧作《新白娘子传奇》中成功塑造许仙一角。此次…

AI时代,大公司如何创新?

大模型时代&#xff0c;以OpenAI&#xff0c;DeepSeek为首的一些创业公司迅速崛起&#xff0c;微软、苹果、谷歌、华为等大公司跟他们相比&#xff0c;明显迟缓。所以自己最近一直在思考和观察创业公司的创新模式&#xff0c;看看有什么启发。 “强大的物种追求繁殖能力强。”是…

混沌映射(Chaotic Map)

一.定义 混沌映射是指一类具有混沌行为的离散时间非线性动力系统&#xff0c;通常由递推公式定义。其数学形式为 &#xff0c;其中 f 是非线性函数&#xff0c;θ 为参数。它们以简单的数学规则生成复杂的、看似随机的轨迹&#xff0c;是非线性动力学和混沌理论的重要研究对象…

Python训练营打卡Day41

DAY 41 简单CNN 知识回顾 1.数据增强 2.卷积神经网络定义的写法 3.batch归一化&#xff1a;调整一个批次的分布&#xff0c;常用与图像数据 4.特征图&#xff1a;只有卷积操作输出的才叫特征图 5.调度器&#xff1a;直接修改基础学习率 卷积操作常见流程如下&#xff1a; 输入…

Java中的继承

1.继承的语法 2.如何访问父类的成员变量和方法 3.super的使用 4.继承中的构造函数 5.父类和子类代码块调用顺序 6.protected的使用 7.final的使用 1.继承的语法 在日常生活的&#xff0c;我们一听到继承&#xff0c;就会想到继承家里的财产&#xff0c;所以继承的本质就…

2022年 能源统计年鉴Excel电子版

2022年 能源统计年鉴Excel电子版.ziphttps://download.csdn.net/download/2401_84585615/89772876 https://download.csdn.net/download/2401_84585615/89772876 《中国能源统计年鉴2022》是由国家统计局能源统计司主编的权威性资料书&#xff0c;全面反映了中国能源建设、生产…

牛客小白月赛117

依旧掉分场, 疯狂wa, 感觉越打越菜了.... A. 好字符串 题目描述 给你一个长度为 n 的字符串 s&#xff0c;如果一个小写字母为好字符&#xff0c;当且仅当该小写字母对应的大写字母和它同时在字符串 s 中出现 或者 同时不在字符串 s 中出现&#xff1b;而如果一个字符串为好…

【数据分析】基于Cox模型的R语言实现生存分析与生物标志物风险评估

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理生存分析画图输出图片其他标记物的分析总结系统信息介绍 分析生存数据与多种生物标志物之间的关系。它通过Cox比例风险模型来评估不同生物标志物…

“长大设计歼-90” 小孩哥、小孩姐,尽管大胆畅想

“这里面能装核弹吗?”“叔叔,这炮真能打一万发吗?你们数过吗?”“我长大以后,要设计太空战机歼-90!”小朋友们你们尽情畅想未来国防力量的新篇章将由你们去开创大朋友们且接稚子剑,斩尽暮气来孩子们的奇思妙想还需要你们守护今天,“六一”国际儿童节祝所有大朋友、小朋…

商家炮轰美团神券活动 强制补贴引发争议

一位名为“天才外卖运营课堂”的博主在抖音上表达了对美团618活动的不满,称其为“拿商家的钱,办美团的事”。该活动规定,18元的优惠券中,商家需承担12元,平台补贴6元。面对京东外卖的竞争压力,美团推出了这项举措,但结果却引发了商家和消费者的广泛争议。市场人士指出,…