paxos是否提供真正的线性化一致性?

时间:2019-12-08 21:47:46

标签: distributed-computing distributed-system consistency paxos

我想我可能会在这里混淆概念,但在我看来,paxos会为实现它的系统提供线性化的一致性。

我知道Cassandra使用它。我不是100%清楚如何做,但假设当选一个领导者,并且由单个领导者完成所有写操作,然后通信是同步的,并且实现了实时线性化,对吗?

但是像paxos这样的共识算法通常被认为是部分同步的,因为存在法定人数(不是节点通信的100%)-这还意味着它也不能真正线性化吗?

也许是因为只有一个法定数量的节点可能会失去同步,这会破坏线性化?

2 个答案:

答案 0 :(得分:0)

线性化系统不需要同步。线性化是一个安全属性:它说“什么也没有发生”,但是如果什么也没有发生,它也不会影响线性化。检查线性化性时,任何不返回(或返回错误)的读取或写入操作都可以忽略。这意味着即使一个或多个节点出现故障,分区或运行缓慢,也完全有可能使系统线性化。

Paxos通常用于实现复制状态机:该系统可一次在多个节点上执行一系列操作。由于这些操作是确定性的,并且所有节点都同意要运行的操作以及运行它们的顺序,因此所有节点(最终)都收敛到相同的状态。

您可以使用Paxos实现线性化系统,方法是将操作序列按Paxos置于完全有序的序列(即线性化)中,从而使序列中的操作为写入和读取协议。

将读取和写入置于顺序中很重要。想象一下,相反,您仅使用Paxos同意写入,并直接从节点的本地状态提供读取。如果为读取提供服务的节点与其他节点进行了分区,则它将为过时的读取提供服务,从而违反了线性化能力。每个读取必须包含一定数量的节点,以确保返回的值是新鲜的,这意味着(有效地)将读取与写入一起放入序列中。

(您可以使用一些技巧来使读取比写入更有效率,因为读取可以相互交换并且不需要持久化到磁盘上,但是您无法逃避联系仲裁的需要进行读写操作的节点数)

答案 1 :(得分:-1)

我不认为香草Paxos是可线性化的。它不能保证客户端的请求以FIFO方式执行。领导者故障转移可能导致请求混乱。