ZK的数据同步原理

主要是根据这三个参数的大小对比结果,选择对应的数据同步方式。

  • peerLastZxid:Learner服务器(Follower或observer)最后处理的zxid。
  • minCommittedLog:Leader服务器proposal缓存队列committedLog中的最小的zxid。
  • maxCommittedLog:Leader服务器proposal缓存队列committedLog中的最大的zxid。
图片[1]-ZK的数据同步原理-不念博客

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