单个 运行 中可以接受多个值吗?

Can multiple values be accepted in a single run?

考虑以下流程:

提议者准备一条消息,获得承诺,发送具有一定价值的提议,并获得接受。一切顺利。

接受后,另一个提议者出现并准备了一个更高id的消息,然后继续相同的流程。

这是 轮 paxos 算法的有效流程吗?或者这实际上是 multi paxos?

接受后,如果另一个提议者出现并准备消息,它将至少收到一个包含先前接受值的回复。 Paxos 规则要求第二个提议者必须提议先前接受的值。它想要建议的值被第一个值覆盖。这确保了只能为 Paxos 算法的单个实例选择单个值。

这取决于你的意思是在给定的一轮 Paxos 中“可以固定多个值”还是“任何给定节点可以接受多个值”。

根据@Rakis 接受的答案,您不能获得多个固定到一个位置的值。然而,由于消息丢失,您可以让节点在固定位置之前接受多个值到一个位置。

为了理解这是如何发生的,我们可以想象任意消息丢失任意节点崩溃。例如节点 {A, B, C, D, E},领导者 A。它发出准备,获得多数响应,发出 accept(Va) 然后崩溃并且永远无法恢复。由于消息丢失,接受消息只能被节点 B 看到。节点 E 超时并发出准备。由于消息丢失,这仅被节点 CDE 看到。节点 E 有多数响应,但不知道节点 A 发送并被节点 B 接受的值 Va。可以自由选择自己的价值和问题accept(Ve)。这次所有消息都通过了。节点 B 接受 Ve 以及节点 CDE.

在那种情况下,算法固定的唯一值是 Ve。然而节点 B 接受了两个不同的值 VaVb.

要回答你的问题是这个 multipaxos 答案是否定的。请参阅 this answer for the explanation about mutltipaxos is. Note it isn't helpful to call things Paxos and Multi-Paxos. In his 2019 lectures, the inventor talks about the Single Synod Algorithm for the minimal algorithm to fix a single value. Then the actual algorithm that is practically useful is the extension to choose many values from a stable leader. See 。如果您正在参加该主题的考试,您可能需要坚持使用旧的令人困惑的术语。