ZooKeeper 数据模型
某团队使用 ZooKeeper 实现服务注册与发现时,发现注册中心的节点数量随服务实例数线性增长,当实例数达到 10000+ 时,ZooKeeper 的性能急剧下降。
排查后发现:每个服务实例都创建了一个临时节点,而 ZooKeeper 的 Watch 机制每次都要通知所有订阅的客户端,当节点数量大时,通知风暴成为瓶颈。
这是 ZooKeeper 在大规模服务发现场景下的典型性能问题。
【架构权衡】 ZooKeeper 的数据模型适合"小规模、高一致性"场景,不适合"大规模、高并发"场景。在选择 ZooKeeper 之前,需要评估服务实例数量和调用量。
一、核心问题 🔴
1.1 ZooKeeper 节点类型
1.2 Watch 机制
二、Redis / etcd / ZooKeeper 对比
三、落地 Checklist
- 容量评估:评估节点数量和 Watch 数量
- 集群规模:生产环境至少 3 节点
- 数据限制:单节点数据不超过 1MB
- 监控部署:监控节点数量、Watch 数量