最近一个小时内访问频率最高的10个IP
题目
实时输出最近一个小时内访问频率最高的 10 个 IP,QPS 可能达到 10W/s,怎么设计?
参考答案
思路通常是:
- 按秒或按分钟做滑动窗口分桶
- 每个桶统计 IP 次数
- 定时淘汰一个小时前的数据
- 用最小堆维护 Top10
如果流量很大,可以先按 hash 分片统计,再做全局聚合。
回答展开
- 系统设计题建议先讲目标和约束,再给核心链路,最后补高可用与降级。
- 回答时尽量体现读写路径、热点、容量、故障处理和扩展性。
- 如果能说明为什么这样拆层、为什么这样选型,会更像真实设计。
实际场景
这些都是典型系统设计题。比如秒杀要解决削峰和防超卖,排行榜要解决实时排序,通知系统要解决模板、多渠道和失败重试。