主要是根据这三个参数的大小对比结果,选择对应的数据同步方式。
- peerLastZxid:Learner服务器(Follower或observer)最后处理的zxid。
- minCommittedLog:Leader服务器proposal缓存队列committedLog中的最小的zxid。
- maxCommittedLog:Leader服务器proposal缓存队列committedLog中的最大的zxid。
Zookeeper中数据同步一共有四类,如下:
- DIFF:直接差异化同步
peerlastZxid介于minCommittedLog和maxCommittedLog之间
- TRUNC+DIFF:先回滚再差异化同步
当Leader服务器发现某个Learner包含了一条自己没有的事务记录,那么就需要让该Learner进行事务回滚到Leader服务器上存在的
- TRUNC:仅回滚同步
peerlastZxid大于maxCommittedLog,Leader会要求Learner回滚到ZXID值为maxCommitedLog对应的事务操作
- SNAP:全量同步
peerLastZxid小于minCommittedLog
在初始化阶段,Leader服务器会优先初始化以全量同步方式来同步数据。learner先向leader注册,上报peerLastZxid
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END