Zookeeper 的数据同步有几种方式

参考答案

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

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

  • 场景:peerLastZxid 介于 minCommittedLog 和 maxCommittedLog之间。

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

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

3.  仅回滚同步(TRUNC 同步)

  • 场景一:peerLastZxid 大于 maxCommittedLog全量同步(SNAP 同步)。
  • 场景二:peerLastZxid 小于 minCommittedLog。
  • 场景三:Leader 服务器上没有 Proposal 缓存队列且 peerLastZxid 不等于 lastProcessZxid。

4.  全量同步(SNAP 同步)

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

  • peerLastZxid:从 learner 服务器注册时发送的 ACKEPOCH 消息中提取 lastZxid(该Learner 服务器最后处理的 ZXID)。
  • minCommittedLog:Leader 服务器 Proposal 缓存队列 committedLog 中最小 ZXID。
  • maxCommittedLog:Leader 服务器 Proposal 缓存队列 committedLog 中最大 ZXID。

以上,是Zookeeper面试题【Zookeeper 的数据同步有几种方式】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧