Zookeeper面试题

题目

请给我们讲一下 ZAB 协议。

答案

zookeeper 里面通过 ZAB 协议来保证分布式事务的最终一致性。它是一种支持崩溃恢复和原子广播的协议。当整个 zookeeper 集群刚刚启动或者 leader 服务器宕机、重启或者网络故障导致 leader 服务器不能与过半的服务器保持正常的通信时,所有进程(服务器)进入崩溃恢复模式。

他们会选举一个 leader 服务器,选举的时候先判断 zxid,选出 zxid 值最大的机器作为 leader。如果 zxid 一样,就选择 myid 大的作为 leader。然后 leader 服务器会将自己与 flower 之间的 zxid 差值来决定怎么样同步数据。这样保证了 leader 和 flower 之间的数据一致。等所有的服务器数据一致之后就进入了消息广播模式,leader 服务器开始接受客户端事务请求。