paxos如何使用2个节点?

时间:2013-08-21 07:49:42

标签: paxos

Node_1是领导者,node_2意外死亡,Node_1需要重新运行Paxos,因为Paxos值具有当前节点死亡或生存的东西。 但是只有1个节点(node_1本身)同意这个提议,node_2将不会响应。这种条件无法达到“通过一半节点同意,即2个节点”。 它怎么样?

2 个答案:

答案 0 :(得分:2)

除非两个节点都正常工作,否则Paxos不能与两个节点一起使用。为了使F节点失效,您需要总共n> = 2F + 1个节点。这意味着在一个节点出现故障后,您需要一个三节点集群。两个故障需要五个节点。这是因为只有在接受多数时才选择一个值。如果我们有两个节点,则大多数节点为2,并且两个节点都必须接受要选择的值。如果我们有三个节点,那么大多数是两个,我们可以在单个节点故障中存活。

答案 1 :(得分:0)

如果node_1只是提议者,则系统无法决定提案。如果node_1(比方说v)和node_2(比如说v')都是接受者和提议者,那么算法可以决定接受的提议。假设节点v试图提出v值,而节点v'试图提出v'值。那么,让我们看看下面的例子。 Proposer v发送编号为3的准备。接受者具有先前的值,因此请将ACK-prepare与之前的提案一起发回。然后v'意外死亡。但是“v”接受者继续运行并接受由v proposaler提出的提议v'。然后,接受者发送ACK-proposal,系统以决定结束。

Paxos Paradigm

为了使我们的示例更有效,接受的值是proposer v'(已经死亡)的值。但在死亡之前发送v'值为2,这是最终确定的值。

该算法具有以下假设:

  • 网络可以延迟数据包
  • 重新订购数据包
  • 丢包
  • 但没有损坏数据包

如果您还没有阅读this,请查看..