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

Java面试43-常见的限流算法有哪些?

限流算法是一种系统保护策略,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。
常见的限流算法有五种:

  1. 计数器限流,一般用在单一维度的访问频率限制上,比如短信验证码每隔60s只能发送一次,或者接口调用次数等。它的实现方法很简单,每调用一次就加1,处理结束以后减1。
  2. 滑动窗口限流,本质上也是一种计数器,只是通过以时间为维度的可滑动窗口设计,来减少了临界值带来的并发超过阈值的问题。每次进行数据统计的时候,只需要统计这个窗口内每个时间刻度的访问量就可以了。Spring Cloud里面的熔断框架Hystrix,以及Spring Cloud Alibaba里面的Sentinel都采用了滑动窗口来做数据统计。
  3. 漏桶算法,它是一种恒定速率的限流算法,不管请求量是多少,服务端的处理效率是恒定的。基于MQ来实现的生产者消费者模型,其实算是一种漏桶限流算法。
  4. 令牌桶算法,相对漏桶算法来说,它可以解决突发流量的问题。它的核心思想是,令牌桶以恒定速率去生成令牌保存到令牌桶里面,桶的大小是固定的,令牌桶满了就不再生成令牌。每个客户端请求进来的时候,必须要从令牌桶获得一个令牌才能访问,否则排队等待。在流量低峰的时候,令牌桶会出现堆积,因此当出现瞬时高峰的时候,有足够多的令牌可以获取,因此令牌桶能够允许瞬时流量的处理。网关层面的限流、或者接口调用的限流,都可以使用令牌桶算法,像Google的GuavaRedisson的限流,都用到了令牌桶算法。

限流的本质是实现系统保护,最终选择什么样的算法,一方面取决于统计的精准度,另一方面考虑限流维度和场景的需求。

相关文章:

  • MySQL5.7数据库部署和安装
  • cesium项目之cesiumlab地形数据加载
  • 设计模式:依赖倒转原则 - 依赖抽象,解耦具体实现
  • UI测试流程与关键注意点解析
  • LLMs基础学习(七)DeepSeek专题(1)
  • 我的计算机网络(总览篇)
  • BERT - MLM 和 NSP
  • 2025最新数字化转型国家标准《数字化转型管理参考架构》 正式发布
  • 蓝桥杯python组备考3(b站课程笔记)超详细
  • Mac学习使用全借鉴模式
  • Java实现音频录音播放机功能
  • 基于yolov11的鱼新鲜度检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • 小白学习java第12天(中):IO流之字节输入输出流
  • 微服务无感发布实践:基于Nacos的客户端缓存与故障转移机制
  • C#网络编程(Socket编程)
  • 镜舟科技亮相 2025 中国移动云智算大会,展示数据湖仓一体创新方案
  • 面试之《websocket》
  • BusyBox 与 Toybox:嵌入式 Linux 的轻量工具集对比与解析
  • OCR API识别对比
  • AI比人脑更强,因为被植入思维模型【54】混沌与秩序思维模型
  • 德国购物网站大全/网站seo文章该怎么写
  • 如何做网站编辑/营销助手下载app下载
  • 专门做运动装备的网站/怎么开网店新手入门
  • 哪个网站可以做平面兼职/营销型网站建设多少钱
  • 网站地址栏/营销型网站外包
  • 企业网站经典案例/西安快速排名优化