一、写入确认机制
**ZooKeeper 写入需超过半数节点确认才算成功。**这是 ZooKeeper 保证数据一致性的核心机制之一。
- 过半确认:写请求需超过半数节点确认才算成功,这是 ZooKeeper 保证数据一致性的核心机制。
- 容错能力:只要集群中超过半数节点存活,即可继续对外提供服务。
二、ZooKeeper 数据一致性保证
ZooKeeper 通过以下机制保证数据一致性:
- Leader 选举:集群通过选举机制选出 Leader 节点。
- 事务广播:所有写请求都交给 Leader 处理,Leader 生成全局唯一的递增事务 ID(ZXID),然后广播给所有 Follower。
- 过半写入确认:当超过半数的 Follower 成功写入后,Leader 才会提交该事务,确保数据一致性。
三、ZooKeeper 数据文件
- 事务日志(Transaction Log):记录所有事务操作,用于数据恢复。
- 快照(Snapshot):定期生成的数据状态快照,加速恢复过程。
四、ZooKeeper 高可用配置
- 集群节点配置:使用奇数个节点,并考虑跨域部署(如跨机柜、跨机房),提高容灾能力。
- 存储优化:将事务日志目录(dataLogDir)与数据目录(dataDir)放在不同的物理磁盘上,避免 I/O 竞争。
- SSD 存储:由于 ZooKeeper 写操作频繁,建议使用 SSD 存储提升性能。
五、客户端连接问题排查
客户端频繁超时、连接断开可能由以下原因导致:
- Full GC 问题:服务端频繁 Full GC 会导致停顿,从而引发客户端超时。建议调整 JVM 堆内存配置,优化垃圾回收策略。
- 网络带宽瓶颈:检查是否有大量突发流量导致带宽被打满,影响网络通信。