16、ZooKeeper数据同步

 

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

数据同步流程:(均以消息传递的方式进行)
Learner 向 Learder 注册
数据同步
同步确认 
Zookeeper 的数据同步通常分为四类: 
1、直接差异化同步(DIFF 同步)
2、先回滚再差异化同步(TRUNC+DIFF 同步)
3、仅回滚同步(TRUNC 同步)
4、全量同步(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

posted @   开源遗迹  阅读(198)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示