zab协议
zab协议 的全称是 Zookeeper Atomic Broadcast (zookeeper原子广播)。zookeeper 是通过 zab协议来保证分布式事务的最终一致性
基于zab协议,zookeeper集群中的角色主要有以下三类,如下表所示:
| 角色 | 说明 |
|---|---|
| Leader | 负责提议和发起投票,事务的唯一调度者和决策者 |
| Follower | 接收客户端请求,转发给 Leader,参与投票 |
| Observer | 接收客户端请求,将请求转发给 Leader,不参与投票,提高集群读性能 |
zab广播模式工作原理,通过类似两阶段提交协议的方式解决数据一致性:
leader从客户端收到一个写请求
leader生成一个新的事务并为这个事务生成一个唯一的ZXID
leader将这个事务提议(propose)发送给所有的follows节点
follower节点将收到的事务请求加入到历史队列(history queue)中,并发送ack给leader
当leader收到大多数follower(半数以上节点)的ack消息,leader会发送commit请求
当follower收到commit请求时,从历史队列中将事务请求commit
上次更新: 2025/07/23, 07:26:30