Skip to content

分布式限流面试题:窗口、令牌桶、Lua、并发与故障策略

问题标准回答原理页
限流限制什么在昂贵资源前按身份和业务维度分配速率、并发、突发或排队预算,保护可持续服务能力。定义
QPS不高为什么线程池满Little定律近似并发=QPS×耗时;20QPS、5秒就是约100个在途请求。容量
固定窗口问题实现简单,但窗口边界前后可短时间放过接近双倍流量。固定窗口
滑动日志和滑动计数区别日志保存每次时间戳更精确但成本高;滑动计数按小桶近似,在精度和存储间折中。滑动日志滑动计数
令牌桶和漏桶区别令牌桶按速率补充并允许桶容量内突发;漏桶通过有界队列按较稳定速率流出,偏流量整形。令牌桶漏桶
速率限制和并发限制区别速率限制单位时间到达量;并发限制当前in-flight,慢接口即使QPS低也需要并发保护。并发限制
本地和分布式限流怎么选本地低延迟但多实例总配额不精确;集中状态接近全局额度但增加网络依赖和热点,可用全局预算+本地子配额。对比
Redis Lua为什么原子读取、判断、递增/扣令牌和TTL在Redis一次脚本执行,不被其他命令穿插;不保证后续业务成功。Redis窗口
Redis Cluster限流要注意什么多Key脚本必须同Slot,热点Key会集中到一个分片,迁移、超时和故障切换影响精确性。Cluster
多层限流怎么设计全局、租户、接口和资源分别保护不同预算,并定义扣减顺序、可信身份与指标,避免相同阈值重复拒绝。分层限流
Sentinel怎样限流以资源为入口统计QPS、线程数等,根据规则在调用链前拒绝;集群、热点参数和系统规则有各自边界。Sentinel
限流器挂了放行还是拒绝按风险选择Fail-open或Fail-closed,并配本地保守上限、短超时和告警;支付、登录比普通查询更偏保守。故障策略
返回429后客户端怎么办返回稳定错误码和可选Retry-After,客户端退避加抖动;立即重试会制造限流重试风暴。响应契约
阈值怎样得到从SLO和被保护资源压测容量曲线确定拐点,保留故障安全余量,灰度上线后按生产指标校准。容量指标
明明限流为什么仍崩保护点可能在昂贵操作后、只限QPS没限并发、突发桶太大、本地阈值随实例倍增,或瓶颈是数据库锁/热点。Runbook

本章小结

限流面试要从容量证据、算法状态、分布式原子性、故障策略和客户端行为完整回答。