什么是Paxos算法中“编号最高的提案的价值”?

时间:2013-11-07 13:33:00

标签: algorithm distributed paxos consensus

Paxos简化 Lamport描述算法的第2阶段(a)如下:

  

如果提议者收到对其准备请求的回复   (来自大多数接受者的编号为n)然后它发送接受   请求每个接受者提交编号为n的提案   值v,其中v是其中编号最高的提案的值   回复,或者如果回复未报告任何提案,则为任何值。

  • 这是否意味着,一旦提出者收到大多数接受者的回复而无论提案号是多少,他们都可以发送接受请求? (我发现引用中强调的部分意味着这样,因为所有同等编号的提案应该具有相同的价值,对吗?)
  • 或者提议者是否需要来自大多数接受者的具有相同提案号的回复? (意味着带有 m 的数字的响应(小于 n )不会计入编号 n 的响应的大多数

2 个答案:

答案 0 :(得分:3)

  

这是否意味着提议者可以在收到大多数接受者的回复后立即发送接受请求,而不管他们的提案号码是什么? (我发现引用中强调的部分意味着这样,因为所有同等编号的提案都应该具有相同的价值,对吗?)

是的,提议者可以在收到大多数接受者的回复后立即发送接受请求。返回的提议编号告诉提议者在接受请求中发送哪个值。

如果没有提交提案编号,提议者可以自由选择自己的值。但是,如果返回任何提案编号,则提议者必须发送与最高提案编号关联的值。

这是一个例子。假设提议者向五个接受者发送Propose(4)并接收回Ack(abc, 2)Ack(abc, 2)Ack(xyz, 3) 必须发送Accept(xyz, 4)

答案 1 :(得分:2)

在pax​​os中,您必须区分提案号,承诺号码,接受号码。

回复包含提案编号和已接受的编号。在回复中,提案编号与提案相同,并且接受的编号是Acceptor之前接受的编号。

提议者可以在收集到大多数接受者的回复后立即发送接受请求。

每个提案都有一个唯一的提案编号,提议者在没有包含值的情况下发送提案。接受方将对提案编号,接受的编号和前几轮中接受的值作出相同的回复。然后,提议者选择值,作为响应中编号最高的提议的值,或者如果响应未报告任何提议,则选择任何值。