Zookeeper数据同步-杂谈-IT技术博客

Zookeeper数据同步

时间:2019-08-26 20:29:03 浏览: 字体: 放大 缩小


整个集群完成Leader选举之后,Learner(Follower和Observer的统称)回向Leader服务器进行注册。当Learner服务器想Leader服务器完成注册后,进入数据同步环节。

数据同步流程:(均以消息传递的方式进行)

i. Learner向Learder注册

ii. 数据同步

iii. 同步确认

Zookeeper的数据同步通常分为四类

  • 直接差异化同步(DIFF同步)

  • 先回滚再差异化同步(TRUNC+DIFF同步)

  • 仅回滚同步(TRUNC同步)

  • 全量同步(SNAP同步)

在进行数据同步前,Leader服务器会完成数据同步初始化:

  • peerLastZxid:从learner服务器注册时发送的ACKEPOCH消息中提取lastZxid(该Learner服务器最后处理的ZXID)

  • minCommittedLog:Leader服务器Proposal缓存队列committedLog中最小ZXID

  • maxCommittedLog:Leader服务器Proposal缓存队列committedLog中最大ZXID

直接差异化同步(DIFF同步)

场景:peerLastZxid介于minCommittedLog和maxCommittedLog之间

先回滚再差异化同步(TRUNC+DIFF同步)

场景:当新的Leader服务器发现某个Learner服务器包含了一条自己没有的事务记录,那么就需要让该Learner服务器进行事务回滚--回滚到Leader服务器上存在的,同时也是最接近于peerLastZxid的ZXID

仅回滚同步(TRUNC同步)

场景:peerLastZxid 大于 maxCommittedLog

全量同步(SNAP同步)

场景一:peerLastZxid 小于 minCommittedLog
场景二:Leader服务器上没有Proposal缓存队列且peerLastZxid不等于lastProcessZxid

标签: Zookeeper数据同步