zookeeper选举完成后,leader会与follower进行数据同步,保证每个节点的数据保证一致。
一、交互过程
集群的follower节点与leader节点会首先建立网络链接,然后会确定主进程周期和同步日志操作,交互过程如下,箭头方向表示时间方向。
1、follower发送类型为followerInfo的数据到leader节点,内容包括自己的acceptEpoch、sid以及协议版本等信息。acceptEpoch表示接收的主进程编号,它与currentEpoch略有不同。acceptEpoch是在数据同步时确定的,如果同步失败,这个值可能变化多次,而currentEpoch在这个阶段并不会随着acceptEpoch变化。
2、leader节点接收followerInfo数据,只要收到过半的消息便可认为得到了最大的主进程周期。
3、对这个主进程周期加一得到新的周期号。
4、leader节点向follower节点发送leaderInfo消息,zxid是使用新的主进程周期得到的id。
5、follower节点收到leaderInfo后,解析得到新的主进程周期,并重新设置自己的acceptEpoch。
6、设置完成后,follower节点会向leader节点发送反馈消息ackEpoch,表明自己已经成功收到