ZooKeeper 怎样保证事务的先后顺序?
查看完整题解
参考回答
直接回答
Leader 给状态修改分配全局事务序号 zxid,跟随节点按这一顺序记录和应用已提交的修改。落后的副本也按这个序号对齐事务位置。
讲清原理
zxid 是 64 位值,高 32 位是 Leader 的 epoch,低 32 位是本 epoch 内的计数。不同 epoch 能把换 Leader 前后的历史分开。
例子与易错点
创建节点 X 发生在给 X 更新数据之前,跟随者不会先应用后面的修改。zxid 是事务位置,某个节点自己的 version 只记录它的数据改了几次。
延伸阅读 ZooKeeper 保证的读写一致性分别是什么? · ZAB 协议是什么,为什么分恢复与广播? · ZooKeeper 支持哪些事务操作?
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。