ZAB协议

2021-04-12  本文已影响0人  matthewfly

ZAB(Zookeeper Atomic Broadcast)协议,即原子广播协议用于zookeeper实现分布式事务的一致性。
ZAB协议将zookeeper集群状态分为两个类型:崩溃恢复、消息广播。

实现以上两点就能保证崩溃时的数据一致性,怎么实现的呢?
实际上ZAB为集群中每个事务都分配了一个64位的唯一事务zxid,该zxid高32位是leader的epoch严格递增计数,低32位是该leader epoch周期每个事务严格递增计数。在leader选举时,优先选举zxid最大的作为leader就能保证leader包含集群中所有已提交事务(两次过半集合必定存在交集)。数据同步时,将新选举的leader事务同步给其他follower就可以完成数据一致性。

那么旧的leader恢复后重新加入集群,其未完成提交的事务会影响嘛?
不会,因为新选举的leader epoch更大。宕机的旧leader重新加入时,校验其epoch不统一,其为提交的事务也将进行丢弃。

上一篇 下一篇

猜你喜欢

热点阅读