原文同步至 http://waylau.com/cap-theorem/数据库
本文介绍了介绍了分布式系统著名的 CAP 理论。什么是 CAP 理论?为何说 CAP 只能三选二?了解 CAP 对于系统架构又有什么指导意义?本文将一一做答。缓存
在计算机科学理论,CAP 定理(也称为 Brewer 定理),是由计算机科学家 Eric Brewer 提出的,即在分布式计算机系统不可能同时提供如下所有三个保证:安全
下面分别举例说明了为何说 CAP 只能三选二。网络
上面的图显示了在一个网络中,N1 和 N2 两个节点。他们都共享数据块 V,其中有一个值 V0 。运行在 N1 的 A 程序能够认为是安全的、无 bug、可预测的和可靠的。运行在 N2 是 B 程序。这个例子中,A 将写入 V 新值,而 B 从 V 读取值架构
系统预期执行下面的操做分布式
若是网络是分区的,当 N1 到 N2 的消息不能传递时,执行上面的第三步,会出现虽然 N2 能访问到 V 的值(可用性),但其实与 N1 的 V 的值已经不一致了(一致性)。网站
举例:rem
实现方式:部署
举例:get
实现方式:
举例:
实现方式:
在系统架构时,应该根据具体的业务场景,来权衡 CAP。好比,对于大多数互联网应用来讲(如门户网站),由于机器数量庞大,部署节点分散,网络故障是常态,可用性是必须须要保证的,因此只有舍弃一致性来保证服务的 AP。而对于银行等,须要确保一致性的场景,一般会权衡 CA 和 CP 模型,CA 模型网络故障时彻底不可用,CP 模型具有部分可用性。