设计一个高并发的分布式计数器系统,支持 incr(key, delta) 和 get(key) 操作,要求:1. 高并发下计数准确;2. 支持分布式部署;3. 最终一致性即可;4. 尽量减少单点压力。请说明核心设计思路和可能遇到的问题及解决方案。
分类: technical
难度: medium
标签:
答题技巧
常见方案有:1. Redis INCR(简单但有热点问题);2. 分片+本地聚合+定时同步;3. 数据库+消息队列异步写;4. 一致性哈希+多副本;重点考察分布式一致性、热点key处理、性能与准确性权衡。
参考答案
采用一致性哈希对key分片,每片部署多个计数节点(无状态),客户端使用一致性哈希路由;每个节点维护本地内存计数+Redis/数据库持久化;incr操作先更新内存,异步批量写入持久层;get操作返回当前节点内存值+最近一次同步值;热点key可通过多副本+读扩散解决;使用布隆过滤器或预分配减少无效请求。