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

常见的限流算法有哪些?

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

 

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

 

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

 

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

相关文章:

  • 社区智慧养老标准规范全解析
  • 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关键字
  • 凤阳鼓楼瓦片脱落背后:涉事公司十年前曾因违规施工致文保建筑被烧毁
  • F4方程式上海站引擎轰鸣,见证中国赛车运动不断成长
  • 特朗普亲家有了新工作:美国驻法大使
  • 最高法:依法惩治损害民营企业合法权益的串通投标行为
  • 牛市早报|上市公司重大资产重组新规出炉,4月经济数据将公布
  • 墨西哥海军帆船纽约撞桥事故已致2人死亡19人受伤