分布式系统:一致性模型

text":"

分布式系统中一个重要的问题就是数据复制 , 数据复制一般是为了增强系统的可用性或提高性能 。 而实现数据复制的一个主要难题就是保持各个副本的一致性 。 本文首先讨论数据复制的场景中一致性模型如此重要的原因 , 然后讨论一致性模型的含义 , 最后分析常用的一致性模型 。

为什么需要一致性模型

数据复制主要的目的有两个:可用性和性能 。 首先数据复制可以提高系统的可用性 。 在保持多副本的情况 , 有一个副本不可用 , 系统切换到其他副本就会恢复 。 常用的 MySQL 主备同步方案就是一个典型的例子 。 另一方面 , 数据复制能够提供系统的性能 。 当分布式系统需要在服务器数量和地理区域上进行扩展时 , 数据复制是一个相当重要的手段 。 有了多个数据副本 , 就能将请求分流;在多个区域提供服务时 , 也能通过就近原则提高客户端访问数据的效率 。 常用的 CDN 技术就是一个典型的例子 。
但是数据复制是要付出代价的 。 数据复制带来了多副本数据一致性的问题 。 一个副本的数据更新之后 , 其他副本必须要保持同步 , 否则数据不一致就可能导致业务出现问题 。 因此 , 每次更新数据对所有副本进行修改的时间以及方式决定了复制代价的大小 。 全局同步与性能实际上是矛盾的 , 而为了提高性能 , 往往会采用放宽一致性要求的方法 。 因此 , 我们需要用一致性模型来理解和推理在分布式系统中数据复制需要考虑的问题和基本假设 。

推荐阅读