Concurrency Paxos是强一致的吗?

Concurrency Paxos是强一致的吗?,concurrency,distributed-computing,distributed-system,consensus,paxos,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后,系统的一致性不强 我的问题是:我们如何解决这一矛盾?我误解了什

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

客户端向n1发送更新请求,将x的值更改为5。n1和n2通过运行Paxos就新值达成共识,但n3出现一些链路故障,因此n3没有最新的值x

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

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


在multi-paxos中,正如您所注意到的,同龄人可能会落后。如果您从仲裁中读取值,尽管您保证会看到最新的值,但关键是要找出哪一个是最新的值。并非所有应用程序都需要此功能,但如果您的应用程序需要此功能,那么一个非常简单的扩展就足够了。只需使用元组而不是原始值,其中第一项是更新计数器,第二项是原始值。每次对等机尝试更新值时,它也会更新计数器。因此,当您从仲裁中读取时,更新计数器最高的元组保证是最新的值。

在multi-paxos中,对等方可能会落后于您所注意到的。如果您从仲裁中读取值,尽管您保证会看到最新的值,但关键是要找出哪一个是最新的值。并非所有应用程序都需要此功能,但如果您的应用程序需要此功能,那么一个非常简单的扩展就足够了。只需使用元组而不是原始值,其中第一项是更新计数器,第二项是原始值。每次对等机尝试更新值时,它也会更新计数器。因此,当您从仲裁中读取时,更新计数器最高的元组保证是最新的值