2013-08-21 22 views
0

Node_1是领导者,node_2意外死亡,Node_1需要重新运行Paxos,因为Paxos值与当前节点死亡或生活有关。 但是只有1个节点(node_1本身)同意这个建议,node_2不会回应。这个条件不能达到“通过一半节点同意,即2个节点”。 它如何工作?paxos如何与2个节点一起工作?

+0

我不明白,node_1是接受者还是提议者? –

+0

node_1是提议者 – procr

回答

0

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

Paxos Paradigm

为了使我们的例子更加高效,公认的价值是投保人V”的值(已去世)。但在死亡之前,将v'值与最终决定的值2相关联。

算法有以下假设:

  • 网络可延缓包
  • 重新排序分组
  • 输包
  • 但不破坏分组

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

2

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

相关问题