Paxos 强一致吗?

H.H*_*H.H 3 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后,系统并不是强一致的。

我的问题是:如何解决这个矛盾?我是不是误会了什么?

Rak*_*kis 6

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