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

常见的限流算法有哪些?

好的,关于这个问题,我会从几个方面来回答。
首先,限流算法是一种系统保护策略,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。
常见的限流算法有 5 种。
1. (如图)计数器限流,一般用在单一维度的访问频率限制上,比如短信验证码每隔 60s 只能发送一
次,或者接口调用次数等
它的实现方法很简单,每调用一次就加 1,处理结束以后减一。

 

2. (如图)滑动窗口限流,本质上也是一种计数器,只是通过以时间为维度的可滑动窗口设计,来减
少了临界值带来的并发超过阈值的问题。
每次进行数据统计的时候,只需要统计这个窗口内每个时间刻度的访问量就可以了。
Spring Cloud 里面的熔断框架 Hystrix ,以及 Spring Cloud Alibaba 里面的 Sentinel 都采用了滑动
窗口来做数据统计。

 

3. (如图)漏桶算法,它是一种恒定速率的限流算法,不管请求量是多少,服务端的处理效率是恒定
的。基于 MQ 来实现的生产者消费者模型,其实算是一种漏桶限流算法。

 

4.(如图)令牌桶算法,相对漏桶算法来说,它可以处理突发流量的问题。
它的核心思想是,令牌桶以恒定速率去生成令牌保存到令牌桶里面,桶的大小是固定的,令牌桶满了以
后就不再生成令牌。
每个客户端请求进来的时候,必须从令牌桶获得一个令牌才能访问,否则排队等待。
在流量低峰的时候,令牌桶会出现堆积,因此当出现瞬时高峰的时候,有足够多的令牌可以获取,因此
令牌桶能够允许瞬时流量的处理。
网关层面的限流,或者接口调用的限流,都可以使用令牌桶算法,像Google的Guava,和Redisson
的限流,都用到了令牌桶算法
在我看来,限流的本质是实现系统保护,最终选择什么样的算法,一方面取决于统计的精准度,另一方
面考虑限流维度和场景的需求。
http://www.dtcms.com/a/53572.html

相关文章:

  • 社区智慧养老标准规范全解析
  • Java停车平台高并发抢锁技术方案设计 - 慧停宝开源停车管理平台
  • C语言番外篇(5)-------------->作用域与生命周期
  • 基于ANTLR4的大数据SQL编辑器解析引擎实践|得物技术
  • aws(学习笔记第三十一课) aws cdk深入学习(batch-arm64-instance-type)
  • 贪心算法一
  • python实现的生态模拟系统
  • 第5章:vuex
  • Linux部署java项目
  • NO.26十六届蓝桥杯备战|字符数组七道练习|islower|isupper|tolower|toupper|strstr(C++)
  • 支持多数据源的 MyBatis-Plus 实现
  • C语言基础之【指针】(下)
  • Python的那些事第四十二篇:Python的无人机监控环境监测系统研究
  • macos查询pip默认镜像地址
  • 基于Hadoop的热门旅游景点推荐数据分析与可视化系统(基于Django大数据技术的热门旅游景点数据分析与可视化)
  • 抽象类与普通类的核心区别
  • Leetcode 264-丑数/LCR 168/剑指 Offer 49
  • QT异步编程
  • 无显示器安装访问树莓派3B+
  • C语言基础系列【19】inline关键字
  • 鸿蒙开发:RelativeContainer 相对布局详解【全套华为认证学习资料分享(考试大纲、培训教材、实验手册等等)】
  • 能源行业标杆:信创系统在智能电网中的3个创新应用案例
  • com.android.tools.r8.CompilationFailedException: Compilation failed to complete
  • lamp平台的应用
  • Towards Precise and Explainable Hardware Trojan Localization at LUT Level
  • L33.【LeetCode笔记】循环队列(数组解法)
  • ASP.NET Core 6 MVC 文件上传
  • 蓝桥杯P1259-奇怪的馈赠 (贪心题解)
  • File文件和目录
  • Milvus JSON数据存储优化方案