Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

ZooKeeper 怎样保证事务的先后顺序?

查看完整题解

参考回答

直接回答

Leader 给状态修改分配全局事务序号 zxid,跟随节点按这一顺序记录和应用已提交的修改。落后的副本也按这个序号对齐事务位置。

讲清原理

zxid 是 64 位值,高 32 位是 Leader 的 epoch,低 32 位是本 epoch 内的计数。不同 epoch 能把换 Leader 前后的历史分开。

ZAB 从提案、法定票数到按序应用
ZAB 从提案、法定票数到按序应用

例子与易错点

创建节点 X 发生在给 X 更新数据之前,跟随者不会先应用后面的修改。zxid 是事务位置,某个节点自己的 version 只记录它的数据改了几次。

延伸阅读 ZooKeeper 保证的读写一致性分别是什么? · ZAB 协议是什么,为什么分恢复与广播? · ZooKeeper 支持哪些事务操作?

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。