1. 首页
  2. 编程面试题
  3. Java
  4. Zookeeper

Zeekooper数据同步



整个集群完成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

场景:peerLastZxid介于minCommittedLog和maxCommittedLog之间

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

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

**仅回滚同步**(TRUNC同步)

场景:peerLastZxid 大于 maxCommittedLog

**全量同步**(SNAP同步)

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

发布者:admin,如若转载,请注明出处:https://ai1024.vip/27256.html

QR code
//