f 云原生-架构必知的限流算法 - Powered by qidao123.com技术社区

架构必知的限流算法

打印 上一主题 下一主题

主题 1751|帖子 1751|积分 5253

Hello 我是方才,10人团队leader、4年架构履历,曾备考1个月拿下软考架构师(49/53/50)
文末,方才送你一份25年最新的架构师备考资料,记得领取哟!

   
首先我们思考下,为什么需要限流呢?

  
前面在负载平衡架构中和架构的演化中,方才提到,负载平衡的作用是将流量均分,让集群节点尽可能的均分负载,从而包管对全部效户的可用性

  
但系统的资源始终是有限的,不可能一直无穷增加资源,所以就可能出现流量太大,服务器直接瓦解的环境。那这个时候,相比让整个服务器瓦解,就只能牺牲部分用户的体验,通过限流,包管服务器的整体稳定运行,为绝大数用户提供正常服务

  
比如说:Trae 的排队机制,就是一种限流手段(大概通过产物层面的计划,比如个税app的提前预约机制,也是限流思维的应用)。

  
    限流的算法

  
算法原理优点缺点适用场景
固定窗口计数器固定时间窗口内统计请求数,超限拒绝。
实现简单,内存消耗低。
窗口边界可能出现流量突刺。
对流量突发不敏感的低频接口限流。
滑动窗口计数器将**时间窗口分别为小窗口,**统计滑动窗口内总请求数。
精度高,缓解边界突刺题目。
实现复杂,内存占用略高。
API网关、高频接口限流。
漏桶算法以恒定速率处置惩罚请求,桶满则拒绝。
流量绝对平滑,避免突发打击。
无法使用系统空闲资源处置惩罚突发流量。
音视频流控等严格平滑场景。
令牌桶算法固定速率生成令牌,请求需获取令牌。
允许突发流量,机动性高。
突发可能耗尽令牌导致后续限流
网络流量控制等需兼顾突发本领的场景。
分布式令牌桶(就是令牌桶的差别实现)
使用中央化存储(如Redis)维护全局令牌桶,原子操作包管一致性。
支持全范围流,多节点协同。
依靠中央存储的性能和可用性。
分布式系统全范围流(如秒杀运动)。
  固定时间窗口

  
    滑动窗口计数

  
    漏桶算法

  
    令牌桶算法

  
    限流计谋

  
限流计谋是基于限流算法的更加复杂的应用。

  
计谋原理优点缺点适用场景
自顺应限流
根据系统负载(CPU、内存、相应时间)动态调整阈值。
机动顺应系统状态变化。
实现复杂,依靠监控指标。
云原生、微服务动态资源分配场景。
基于相应时间的限流
根据请求相应时间调整限流阈值(如相应超长则触发限流)。
直接掩护系统免受过载影响。
存在滞后性(相应变长时可能已过载)。
延长敏感的服务(如支付系统)。
分片限流
按用户、服务或地域分片,各分片独立限流。
避免全范围流的单点瓶颈。
配置复杂度高。
多租户系统或地理分布服务。
排队等待
超限请求放入队列等待处置惩罚,而非直接拒绝。
提升用户体验(减少拒绝)。
队列过长可能导致延长飙升。
异步使命处置惩罚(如消息队列)。
预热启动
系统冷启动时逐步增加限流阈值,避免瞬间流量压垮系统。
平滑过渡到高负载状态。
冷启动阶段可能限制吞吐量。
服务启动或长时间低负载后规复。
  
对比阐明

  

  • 1. 流量控制精度:滑动窗口 > 固定窗口 > 漏桶/令牌桶。
  • 2. 突发处置惩罚本领:令牌桶 > 漏桶 > 滑动窗口。
  • 3. 实现复杂度:自顺应限流 > 分布式限流 > 基础算法。
  • 4. 适用扩展性:分布式限流 > 分片限流 > 单机算法。
  
可根据实际场景组合使用(如令牌桶+滑动窗口提升突发处置惩罚与精度)。

  
  2025最新的架构师备考资料和备考交流群,扫码即可领取加入:
  

  
末了,方才软考架构师刷题系统已经上线了,欢迎各人使用(公众号后台回复【666】,即可一键体验,pc端地点:https://fangcaicoding.cn/papers)。

  

  保举阅读
:2025-软考架构教程专栏,助你高效备考

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表