Paxos是否高度一致?

时间:2019-06-08 17:30:51

标签: concurrency distributed-computing distributed-system consensus paxos

考虑一个具有3个节点的分布式系统-n1,n2,n3。节点之间存在共享数据x。 Paxos在节点上运行。开头,x等于4。

客户端向n1发送更新请求,以将x的值更改为5。n1和n2通过运行Paxos达成对新值的共识,但是n3发生了某些链接故障,因此n3没有x的最新值

我们知道Paxos具有很强的一致性。另一方面,如果客户端向n1发送读取请求,并且向n3发送另一个读取请求,则返回的值也不相同(其中一个为5,另一个为4)。因此,运行Paxos后,系统不一致。

  

我的问题是:我们如何解决这一矛盾?我误会了吗?

1 个答案:

答案 0 :(得分:3)

在多人游戏中,同伴可能会落后于您。如果您可以确保从仲裁中读取值,但可以保证看到的是最新值,则诀窍是找出哪个值。并非所有的应用程序都需要它,但是如果您的需要,那么非常简单的扩充就足够了。只需使用元组代替原始值,其中第一项是更新计数器,第二项是原始值。每次对等方尝试更新值时,它也会更新计数器。因此,当您从仲裁中读取数据时,保证具有最高更新计数器的元组是最新的值。