Zookeeper的核心是原子广播,这个机制保证了server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,分别是恢复模式和广播模式。当服务启动或者在领导者崩溃后,Zab就进入恢复模式。当领导者被选举出来,且大多数server的完成了和leader的状态同步之后,恢复模式就结束了。状态同步保证了leader和server具有相同的系统状态。
ZAB协议由崩溃(故障)恢复和消息广播组成
在ZAB协议中,每个事物都有一个编号ZXID,ZXID由两部分组成,高32位是epoch,底32位为递增计数器。
选举
只需要保证选举出来的leader服务器拥有集群中所有机器最高编码(ZXID最大)的事物proposal,那么就可以保证这个新选举出来的leader一定具有。
数据同步
leader会为每一个follower服务器准备一个队列,将那个没有被各个follower同步的事物以proposal的形式逐个发送给follower服务器,并在proposal后面紧接着发送一个Commit消息,以表示该事物已经被提交,当follower将数据同步完成之后,leader会将follower将数据同步完成之后,leader会将follower加入到真正可以的follower列表中。
故障恢复:算法描述
故障恢复:同步
在leader健在的时候由leader实现
原文:https://www.cnblogs.com/we9999/p/12398314.html