【问题标题】:Paxos made simple choosing proposing valuePaxos 让选择提议值变得简单
【发布时间】:2020-04-20 10:37:50
【问题描述】:

论文说:

1.提议者选择一个新的提议号 n 并向一组接受者中的每个成员发送请求,要求其响应:

(a) 承诺不再接受编号小于 n 的提案,并且

(b) 它已经接受的小于 n 的最大数的提案,如果有的话。

我会将这样的请求称为编号为 n 的准备请求。

2.如果提议者收到大多数接受者的请求响应,那么它可以发出 > 一个编号为 n 且值为 v 的提议, 其中 v 是所有提案中编号最高的提案的值 响应,或者是提议者选择的任何值,如果响应者 报告没有提案。

我的问题是,如果提议者在响应中选择了 v,那么新的轮次将始终使用之前保存的值,我们如何更新值?

说我们有:

v=1

在所有节点中。然后客户想要更新它

v=2

每个准备阶段都会用v=1收集回复,然后用v=1提议,所以v=2永远不会被使用!

许多实现在接收客户端请求的节点上以v=2 响应,因此建议v=2。但是这种实现方式违反了规则

(b)它已经接受的小于n的最大数量的提案,如果有的话。

因为v=2从未被接受!我不能作为提案得到答复。

【问题讨论】:

  • 哪张纸?有一些请用链接编辑问题。

标签: paxos


【解决方案1】:

我认为您正在寻找的是一种在成功设置为 1 后更新 V 的方法。您是正确的,一旦大多数同行同意 v=1,该 Paxos 实例就会被锁定为 v=1它永远不会改变。您需要的是另一个 paxos 实例来更新 v=2。这通常被称为“Multi-Paxos”,其中有一个 Paxos 实例的线性链,用于更新节点之间的共享状态。每个实例都是谨慎的,并且需要新的 Paxos 轮次,但尚未提出任何建议。在上面的示例中,将为实例 A 选择 v=1,而为实例 B 选择 v=2。

【讨论】:

  • 这是正确的答案,但考虑到问题的上下文,有一些令人困惑的术语值得指出。在 Lamport 的著作(特别是 Paxos Made Simple 和较长的兼职议会论文)中,每个实例的协议称为 Synod 协议,而实例链称为 Paxos。在其他地方,每个实例都称为 Paxos,而实例链称为 Multi-Paxos。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多