顺序一致性和最终一致性之间有什么区别?

时间:2017-09-25 07:09:48

标签: distributed-computing distributed-system consistency eventual-consistency

我在互联网上找到了两个定义:

顺序一致性 - 任何执行的结果都与所有处理器的操作按某种顺序执行相同,并且每个处理器的操作按照其程序指定的顺序显示在此序列中。 / p>

最终一致性 - 如果没有对给定数据项进行新的更新,最终对该项的所有访问都将返回上次更新的值。

这些定义对我来说很清楚。但是,当最终的一致性不是连续的时候,我不会得到。 一个例子: mem中的初始值为0.水平轴是时间。

P1:      write 1             (x)
P2:  read 0    read 0 read 0     read 1   read 1    read 1

所以,有一些顺序订单,如果我们把#34;写1"在(x)槽中,这是按定义的顺序一致性。我哪里错了?

1 个答案:

答案 0 :(得分:1)

顺序一致性和最终一致性之间的区别在于它们提供的保证。

最终的一致性没有指定:

  • 如果寄存器有并发更新会怎样?
  • 不一致的时间有多长

因此,即使是单个客户端在修改寄存器时也会遇到这种情况,但后续读取会返回过时数据。

根据定义,顺序一致性也不可能出现同样的情况(整体顺序与子处理器顺序相关)。

此外,如果程序没有做出时间敏感的假设并且所有客户端(处理器)都不在系统外进行通信,则顺序一致性与线性化无法区分。相反,最终的一致性更接近缺乏一致性而不是线性化。