设计一个支持每秒10万QPS的分布式限流系统,要求全局精确限流(误差不超过1%),支持多种限流算法(令牌桶、漏桶、滑动窗口、固定窗口),并能动态调整限流阈值和热key隔离。说明核心数据结构、存储选择、一致性保证方案、容错与性能优化点。
分类: technical
难度: hard
标签:
答题技巧
["说明为什么Redis+Lua不适合超高精度全局限流","对比讨论多级缓存(本地+分布式)、CRDT、数据库 vs Redis HyperLogLog+布隆+Redis等组合方案","滑动窗口实现时如何处理边界问题和内存爆炸","热Key隔离的几种常见做法及其优劣","动态调整阈值的控制平面设计(配置中心、push vs pull)","容错考虑:单点故障、脑裂、网络分区下的行为","性能压测关注点:QPS、P99、内存、CPU、网络带宽"]
参考答案
推荐方案:本地令牌桶/滑动窗口 + Redis Bitmap/HyperLogLog 做粗限 + 中心化精确计数器(多副本+CRDT或Raft强一致小集群)。热Key通过一致性哈希+本地缓存+请求染色实现隔离。动态阈值通过配置中心+长轮询/变更监听实现秒级生效。容错采用多活+读写分离+降级本地限流策略。