首页 > 编程语言 >各种限流算法对比

各种限流算法对比

时间:2024-09-19 16:27:30浏览次数:1  
标签:令牌 窗口 请求 算法 限流 漏桶 对比


算法 实现 优缺点
固定窗口算法 固定窗口算法通过在单位时间内维护一个计数器,能够限制在每个固定的时间段内请求通过的次数,以达到限流的效果。 固定窗口算法的优点是实现简单,但是可能无法应对突发流量的情况,比如每秒允许放行100个请求,但是在0.9秒前都没有请求进来,这就造成了在0.9秒到1秒这段时间内要处理100个请求,而在1秒到1.1秒间可能会再进入100个请求,这就造成了要在0.2秒内处理200个请求,这种流量激增就可能导致后端服务出现异常
滑动窗口算法 滑动窗口算法在固定窗口的基础上,进行了一定的升级改造。它的算法的核心在于将时间窗口进行了更精细的分片,将固定窗口分为多个小块,每次仅滑动一小块的时间。 滑动窗口算法通过将时间片进行分片,对流量的控制更加精细化,但是相应的也会浪费一些存储空间,用来维护每一块时间内的单独计数,并且还没有解决固定窗口中可能出现的流量激增问题
漏桶算法 漏桶是一个很形象的比喻,外部请求就像是水一样不断注入水桶中,而水桶已经设置好了最大出水速率,漏桶会以这个速率匀速放行请求,而当水超过桶的最大容量后则被丢弃 漏桶算法同样也有缺点,不管当前系统的负载压力如何,所有请求都得进行排队,即使此时服务器的负载处于相对空闲的状态,这样会造成系统资源的浪费。由于漏桶的缺陷比较明显,所以在实际业务场景中,使用的比较少
令牌桶算法 它的主要思想是系统以恒定的速度生成令牌,并将令牌放入令牌桶中,当令牌桶中满了的时候,再向其中放入的令牌就会被丢弃。而每次请求进入时,必须从令牌桶中获取一个令牌,如果没有获取到令牌则被限流拒绝 基本完美

具体项目中使用的时候我们可以采用谷歌的guvalimiter(单机),阿里的Sentinel(集群),springcloud gateway的RedisRateLimiter(集群)。

标签:令牌,窗口,请求,算法,限流,漏桶,对比
From: https://www.cnblogs.com/leecoder5/p/18420847

相关文章

  • 从方法、操作流程等方面对Windows和Linux的命令进行对比
    Windows和Linux是两个常见的操作系统,它们都有自己的命令行接口。尽管两者的目的都是相同的——执行特定的任务,但它们的命令之间存在一些差异。下面将从方法、操作流程等方面对Windows和Linux的命令进行对比。一、文件和目录操作:列出目录中的文件:–Windows命令:dir–Linux命......
  • (6-2-02)模型训练:文生图大模型的训练策略(2)对比学习+数据增强+迁移学习
    6.2.4 对比学习对比学习(ContrastiveLearning)通过构造正负样本对,让模型学习到不同模态之间的相似性和差异性。例如,在“图像-文本”匹配任务中,可以使用对比学习方法让模型区分匹配和不匹配的“图像-文本”对。请看下面的例子,演示了使用对比学习方法训练模型来学习“图像-文......
  • ASP.NET Core中如何对不同类型的用户进行区别限流
    老板提出了一个新需求,从某某天起,免费用户每天只能查询100次,收费用户100W次。这是一个限流问题,聪明的你也一定想到了如何去做:记录用户每一天的查询次数,然后根据当前用户的类型使用不同的数字做比较,超过指定的数字就返回错误。嗯,原理就是这么简单。不过真正写起来还要考虑更多问题......
  • 限流器的实践
    背景我们有一个业务场景是给学生发布考试,发布的过程不复杂,就是一个老师传递一些考试相关的参数过来,服务器自动给所有学生生成一份任务,但是在学生上交的时候会有个问题,就是成百上千的学生一起上交,会有并发流量的问题。这里由于我们的考试可能会设计多个班级的联考,乃至一个学校或......
  • 什么是轻量应用服务器?与云服务器CVM对比有哪些区别?
    对比云服务器CVM,轻量应用服务器TencentCloudLighthouse更聚焦于中小企业、开发者、云计算入门者、学生等用户群体。相比云服务器CVM更加简单易用,精简了云服务器CVM的高阶概念及功能,提供高带宽流量包并以高性价比的套餐形式整体售卖基础云资源,将热门开源软件融合打包实现一......
  • 常见滤波算法
    下面是10种经典的软件滤波方法的程序和优缺点分析:1、限副滤波A、方法:根据经验判断,确定两次采样允许的***大偏差值(设为A),每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值B、优点:能有效克服因......
  • 机器学习-贝叶斯算法的研究和实践(评论检测)
    项目背景:★我们公司的应用有个需求是对用户发表的评论进行过滤,除了人工审核干预以外,我们还需要自动化检测评论来规避这些行为,为此我们研究贝叶斯算法,写了评论检测的项目用于过滤垃圾评论。贝叶斯算法介绍​贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识......
  • 代码随想录算法训练营,9月19日 | 39. 组合总和,40.组合总和II,131.分割回文串
    39.组合总和题目链接:39.组合总和文档讲解︰代码随想录(programmercarl.com)视频讲解︰组合总和日期:2024-09-19想法:组合总和类型题,允许重复使用元素,递归不+1就行。Java代码如下:classSolution{List<Integer>path=newArrayList<>();List<List<Integer>>res=n......
  • 算法-两数相加(150)
     我们首先创建一个虚拟头节点dummy,它的主要作用是简化边界条件的处理。然后,我们使用一个循环来遍历两个链表,同时考虑进位。在循环中,我们计算当前位的和(包括从上一个计算中可能遗留下来的进位),然后更新进位和当前节点。如果两个链表中的某个链表已经遍历完,我们将对应的值视为0......
  • 算法设计与分析(整数划分问题
    目录整数拆分问题的递归解法问题描述解决方案递归函数设计边界条件递归公式实现代码示例输出小结:整数拆分问题的递归解法在今天的博客中,我们将探讨一个经典的数学问题:整数拆分。具体地说,我们要解决的问题是:将整数n拆分成若干个不大于m的正整数之和,问有多少种不同的拆分方式。这个......