常见限流算法有哪些,各自原理是什么?

未标记

询问 AI

考查重点:时间窗、漏桶与令牌容量。固定窗按周期计数易在边界突发,滑窗统计最近窗口更平滑;令牌桶按速率补令牌允许有限突发,漏桶以固定速率出队,按是否允许突发与排队选择

本题目录

参考答案

核心回答

常见限流算法有四类:固定窗口统计每个固定时间段的请求数;滑动窗口持续统计最近一段时间;漏桶按较稳定的速率放行或输出;令牌桶按固定速率补充令牌,请求消耗令牌,因此可在桶容量内允许短时突发。

选择取决于希望约束什么:粗粒度配额可用固定窗口,滚动时间段统计可用滑动窗口,下游要求平滑请求可用漏桶,平均速率受控且允许突发可用令牌桶。请求速率限制还应配合并发数、队列长度和等待超时。

四种机制的边界

固定窗口简单、状态少,但存在交界突刺:每分钟100次,如果上一分钟末尾100次、下一分钟开头100次,两个窗口都合规,极短时间内却通过200次。

滑动日志保留请求时间戳,精确删除窗口外记录,统计较准但空间与请求量相关;分桶计数或前后窗口加权更省资源,但有粒度误差。滑动窗口是限制整个观察区间的总量,不要求每个小格都平均分配固定配额。

漏桶若以排队整形实现,入口可以突发,但出口按设定间隔放行;队列满或等待超过预算就拒绝。它限制的不是任务实际执行耗时,因此仍要关注下游并发。

令牌桶以速率r积累令牌,最多存B个,每个请求按成本取令牌。空闲后可立即放过最多B个单位成本的突发,之后受补充速率约束;B不是另一个持续QPS阈值。

追问

  • 多实例各限100是否全局100? 不是,需集中状态、分配配额或容忍近似误差;状态检查和扣减要原子化。
  • 按什么维度限? 可按租户、用户、接口、下游或全局组合,先明确公平性和容量边界。
  • 被限后怎么处理? 明确拒绝或有限排队,并返回可理解的重试信息;客户端退避,避免立即重试形成更大流量。

参考资料

相关面经

5 篇

快手

AI Agent 开发
一面
查看原面经 →
漏桶算法是什么?
滑动窗口和令牌桶相比有什么区别?

阿里巴巴

后端开发
日常实习一面
查看原面经 →
了解哪些限流方案

美团

后端开发
暑期实习一面
查看原面经 →
还知道哪些常见的限流算法?原理分别是什么?

京东

Agent 开发工程师
查看原面经 →
c. 知道限流吗?限流怎么做?

京东

AI 后端 / Agent 开发
日常实习二面
查看原面经 →
c. 知道限流吗?限流怎么做?

收录题集

3 份

相关题目

4 题