我正在学习 MIT 6.824 类(class),我有一个关于 paxos 的问题。当proposer向acceptor发送prepare时,acceptor将返回一个prepare_ok,其中n和v是最高accept看到的。我想知道为什么acceptor需要返回n和v?
最佳答案
简而言之,接受者必须返回 v,因为如果该值已经提交,那么新的提议者需要知道它是什么。没有全局“is_comfilled”标志,因此提议者从至少大多数接受者那里收集所有这些值及其相关轮次。然后,提议者将轮次最高的值发送给所有接受者。
正如你所看到的,当一个提议者从接受者那里收到一个值时,它总是会完成另一个提议者已经开始的事情。这有点类似于很多无等待算法。
关于distributed - 为什么 paxos 接受者必须发回他们已经接受的任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32556959/