我对“一致性”一词感到困惑。它已被用于许多不同的上下文,即分布式系统,内存模型和数据库。人/维基百科在同一页面中汇总了所有不同的一致性模型。但我并不认为它们被用来描述同样的问题。
例如,顺序/放松/弱/严格/处理器一致性等在内存模型中有意义(由现代架构和现代语言编译器提供)。另一方面,顺序/最终一致性在分布式系统中是有意义的(当您尝试构建复制状态机时)。 Paxos / raft like共识算法可帮助您构建SC模型,DynamoDB是EC模型的一个示例。
但是,在构建复制日志以及讨论内存模型中的最终一致性时,谈论发布/弱一致性确实没有意义。
就传统的关系数据库而言,它让我更加困惑。因为在ACID模型中,一致性似乎意味着不同的概念。它只需要在事务之后,数据库应处于有效/一致状态。但是,ACID的隔离部分听起来更像是一致性模型,特别是顺序一致性模型。
我在这里误解了什么吗?或计算机人员只是喜欢滥用术语和让人困惑......
如果我错了,请纠正我,即使这只是一个小细节。我真的想要正确理解这些概念。谢谢你:))
答案 0 :(得分:0)
在所有三种情况下,一致性实际上归结为内存可见性。
处理器和编译器只能重新排序内存到目前为止内存模型规定它必须保证内存在程序中定义的点上对世界可见。
在分布式系统中,每次读取都应该接收最近的写入以使其一致。即写入必须对后续读取可见。
数据库必须能够在执行操作之前查看所有内存效应,才能进行有效的状态转换。