特种部队生存模拟手机版
115MB · 2025-10-04
文章内容收录到个人网站,方便阅读:hardyfish.top/
ZAB(Zookeeper Atomic Broadcast)是 ZooKeeper 专门设计的一种原子广播协议,用于保证 数据一致性 和 故障恢复。它主要用于 主从复制(Leader-Follower) ,并确保 写请求(事务)严格有序,同时保证集群在发生 Leader 失效 时能正确恢复。
保证数据一致性
支持主从复制
故障恢复(Crash Recovery)
ZAB 主要由两个阶段组成:
如果 ZooKeeper 发现 Leader 宕机或发生了网络分区,它会进入 恢复模式,重新选举新的 Leader 并确保数据一致。
选举 Leader:
同步数据:
当 Leader 进入 正常状态(Broadcasting) 后,它会通过 ZAB 原子广播协议 处理事务请求。
客户端发送写请求到 Leader。
Leader 生成全局递增的事务 ID(ZXID) :
ZXID = [epoch(时期) | counter(递增计数)]
Leader 发送 PROPOSAL
给所有 Follower :
PROPOSAL
形式广播给所有 Follower。Follower 接收 PROPOSAL
并返回 ACK
:
Quorum
) 确认后,Leader 发送 COMMIT
。Leader 发送 COMMIT
并持久化:
COMMIT
给所有 Follower。示例
客户端 -> Leader -> Follower1, Follower2, Follower3
写请求 -> 事务 ZXID=0x10001 (Proposal) -> Ack
<- 事务已提交 (Commit) <-
全局唯一
事务 ID,格式如下:
ZXID = [epoch | counter]
示例
0x10000001
代表 epoch=1, counter=1
0x10000002
代表 epoch=1, counter=2
作用
ZXID
选举 Leader(拥有最大 ZXID 的服务器会当选)。ZXID
顺序执行,确保一致性。ZooKeeper 采用 Fast Leader Election(FLE) 选举算法:
ZAB 采用 过半确认机制(Quorum) ,确保 Leader 提交事务前,至少半数 Follower 先收到:
N/2 + 1
以上的 Follower 确认后,事务才会 COMMIT
。协议 | 用途 | 特点 |
---|---|---|
ZAB | ZooKeeper 强一致性 | 适用于 主从复制,支持崩溃恢复 |
Paxos | 分布式共识协议 | 适用于 分布式数据库,但实现复杂 |
Raft | 简化版 Paxos | 适用于 分布式 KV 存储,选举更高效 |
ZXID
严格有序提交,通过 过半确认(Quorum)机制 确保强一致性。ZXID
服务器作为新的 Leader。总结一句话: ZAB 通过 Leader-Follower 复制 + 事务广播,确保 ZooKeeper 在 高可用、强一致 的分布式环境下正确运行。