设计一个高并发的分布式计数器系统,支持 incr(key, delta) 和 get(key) 操作,要求:1. 高并发下计数准确;2. 支持分布式部署;3. 最终一致性即可;4. 尽量减少单点压力。请说明核心设计思路和可能遇到的问题及解决方案。

分类: technical

难度: medium

标签:

答题技巧

常见方案有:1. Redis INCR(简单但有热点问题);2. 分片+本地聚合+定时同步;3. 数据库+消息队列异步写;4. 一致性哈希+多副本;重点考察分布式一致性、热点key处理、性能与准确性权衡。

参考答案

采用一致性哈希对key分片,每片部署多个计数节点(无状态),客户端使用一致性哈希路由;每个节点维护本地内存计数+Redis/数据库持久化;incr操作先更新内存,异步批量写入持久层;get操作返回当前节点内存值+最近一次同步值;热点key可通过多副本+读扩散解决;使用布隆过滤器或预分配减少无效请求。

技术面试
中等

设计一个高并发的分布式计数器系统,支持 incr(key, delta) 和 get(key) 操作,要求:1. 高并发下计数准确;2. 支持分布式部署;3. 最终一致性即可;4. 尽量减少单点压力。请说明核心设计思路和可能遇到的问题及解决方案。

16 次浏览

回答要点

常见方案有:1. Redis INCR(简单但有热点问题);2. 分片+本地聚合+定时同步;3. 数据库+消息队列异步写;4. 一致性哈希+多副本;重点考察分布式一致性、热点key处理、性能与准确性权衡。

参考答案

采用一致性哈希对key分片,每片部署多个计数节点(无状态),客户端使用一致性哈希路由;每个节点维护本地内存计数+Redis/数据库持久化;incr操作先更新内存,异步批量写入持久层;get操作返回当前节点内存值+最近一次同步值;热点key可通过多副本+读扩散解决;使用布隆过滤器或预分配减少无效请求。

开始模拟面试练习

通过 AI 模拟面试,提升你的面试技巧和自信心