Ser*_*gey 6 consistency distributed-computing distributed-system eventual-consistency
我在网上找到了两个定义:
顺序一致性——任何执行的结果都是一样的,就好像所有处理器的操作都是按某种顺序执行的,每个处理器的操作都按照其程序指定的顺序出现在这个序列中。
最终一致性——如果没有对给定数据项进行新的更新,最终对该项目的所有访问都将返回最后更新的值。
这些定义对我来说很清楚。但是,当最终一致性不是连续的时,我不明白。一个例子:mem 中的初始值是 0。横轴是时间。
P1: write 1 (x)
P2: read 0 read 0 read 0 read 1 read 1 read 1
Run Code Online (Sandbox Code Playgroud)
因此,有一些顺序顺序,如果我们在 (x) 槽中放置“写入 1”,这就是顺序一致性的定义。我哪里错了?
顺序一致性和最终一致性之间的区别在于它们提供的保证。
最终一致性没有指定:
因此,即使是单个客户端也可能会遇到这样的情况:她修改了寄存器,但后续读取返回了过时的数据。
根据定义,相同的情况不可能具有顺序一致性(整体顺序尊重子处理器的顺序)。
此外,如果程序不做出时间敏感的假设,并且所有客户端(处理器)都不在系统外部进行通信,那么顺序一致性与线性化就没有区别。相反,最终一致性更接近于缺乏一致性,而不是线性化。
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |