首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >顺序一致性和最终一致性有什么区别?

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

Stack Overflow用户
提问于 2017-09-25 07:09:47
回答 1查看 2.1K关注 0票数 6

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

顺序一致性--任何执行的结果都是相同的,就好像所有处理器的操作都是按某种顺序执行的,每个处理器的操作都是按照程序指定的顺序出现的。

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

这些定义对我来说是很清楚的。然而,当最终一致性不是连续的时候,我就不明白了。例如: mem中的初始val为0。水平轴是时间。

代码语言:javascript
复制
P1:      write 1             (x)
P2:  read 0    read 0 read 0     read 1   read 1    read 1

所以,有一些顺序,如果我们把“写1”放在(x)槽里,这就是序列一致性。我哪里错了?

EN

回答 1

Stack Overflow用户

发布于 2017-10-14 14:02:08

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

最终一致性并没有具体说明:

  • 如果对寄存器进行并发更新,会发生什么?
  • 不一致的时间持续多久?

因此,即使是单个客户端在修改寄存器但后续读取返回陈旧数据时也可能遇到这样的情况。

在定义顺序一致性的情况下,同样的情况是不可能的(总体顺序尊重子处理器的顺序)。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46399444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档