0

我对“一致性”一词感到困惑。它已在许多不同的环境中使用,即分布式系统、内存模型和数据库。People/Wikipedia 在同一页面中总结了所有不同的一致性模型。但我真的不认为它们被用来描述同一个问题。

例如,顺序/放松/弱/严格/处理器一致性等在内存模型中是有意义的(由现代架构和现代语言编译器提供)。另一方面,顺序/最终一致性在分布式系统中有意义(当您尝试构建复制状态机时)。类似 Paxos/raft 的共识算法可以帮助你建立 SC 模型,而 DynamoDB 是 EC 模型的一个例子。

但是,在构建复制日志时谈论发布/弱一致性以及谈论内存模型中的最终一致性确实没有意义。

就传统的关系数据库而言,它让我更加困惑。由于在 ACID 模型中,一致性似乎意味着不同的概念。它只要求在事务之后,数据库应该处于有效/一致的状态。但是,ACID 的隔离部分听起来更像是 Consistency Model,特别是 Sequential 一致性模型。

我在这里有什么误解吗?或者计算机人只是喜欢滥用术语和混淆人们......

如果我错了,请纠正我,即使只是小细节。我真的很想正确理解这些概念。谢谢 : )

4

1 回答 1

0

在所有三种情况下,一致性实际上归结为内存可见性。

到目前为止,处理器和编译器只能对内存进行重新排序,以至于内存模型规定它必须保证内存在程序中的定义点对世界是可见的。

在分布式系统中,每次读取都应该接收到最近的写入才能被认为是一致的。即写入必须对后续读取可见。

数据库必须能够在执行有效状态转换的操作之前看到所有内存效应。

于 2018-02-22T00:15:03.040 回答