分布式系统:一致性模型( 二 )

什么是一致性模型

首先我们要定义一下一致性模型的术语:

  1. 数据存储:在分布式系统中指分布式共享数据库、分布式文件系统等 。

  2. 读写操作:更改数据的操作称为写操作(包括新增、修改、删除) , 其他操作称为读操作 。

下面是一致性模型的定义:
一致性模型本质上是进程与数据存储的约定:如果进程遵循某些规则 , 那么进程对数据的读写操作都是可预期的 。

上面的定义可能比较抽象 , 我们用常见的强一致性模型来通俗的解释一下:在线性一致性模型中 , 进程对一个数据项的读操作 , 它期待数据存储返回的是该数据在最后一次写操作之后的结果 。 这在单机系统里面很容易实现 , 在 MySQL 中只要使用加锁读的方式就能保证读取到数据在最后一次写操作之后的结果 。 但在分布式系统中 , 因为没有全局时钟 , 导致要精确定义哪次写操作是最后一次写操作是非常困难的事情 , 因此产生了一系列的一致性模型 。 每种模型都有效限制了在对一个数据项执行读操作所应该返回的值 。 举个例子:假设记录值 X 在节点 M 和 N 上都有副本 , 当客户端 A 修改了副本 M 上 X 的值 , 一段时间之后 , 客户端 B 从 N 上读取 X 的值 , 此时一致性模型会决定客户端 B 是否能够读取到 A 写入的值 。

推荐阅读