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

ZooKeeper 怎么防止两边同时提交?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

默认集群只接受达到多数票的提案,而且每轮 Leader 要在同步足够成员后才能推进。两组多数派至少有一名共同的投票成员,协议利用这份交集接续已提交历史。

讲清原理

分区少的一边收不到足够 ACK,旧 Leader 无法单独提交。新 Leader 要依据新的轮次和恢复过程接手。修改成员也要走正式重配置,不能靠随意改列表制造两套有效票数。

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

例子与易错点

五台需要三票,五台无论怎么分,都凑不出两组彼此独立的三票。两票侧恢复连通后应追赶集群现有历史。

延伸阅读 ZooKeeper 集群为什么通常至少三台? · ZooKeeper 里的脑裂指什么? · ZooKeeper 能动态添加机器吗?

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

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