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

Paxos 怎么让多台机器对一个值达成一致?

查看完整题解

参考回答

直接回答

单值 Paxos 的目标是让多个接受者最终选出一个值,即使旧的提案者掉线,新提案也不能把已经选定的结果推翻。它靠带编号的两轮消息与多数派交集做到这一点。

讲清原理

提案者先用较大的编号发 Prepare。接受者承诺不再接更旧的编号,并回报自己接受过的、编号最高的提案。提案者拿到多数响应后,若有人报出已接受的值,就沿用其中提案号最大的值,再发 Accept。某个提案被多数接受后,该值已选定,学习者随后得知结果。

例子与易错点

第一轮在 A、B 上选出了“蓝”。第二轮即使只询问 B、C,仍会遇到至少一位保留先前信息的人。比较提案号,沿用它对应的值。多个提案者反复打断对方时,选值可能迟迟没有进展。

延伸阅读 ZAB 和 Paxos 有什么联系与区别? · ZooKeeper 怎么防止两边同时提交?

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

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