playground

CAP理论

CAP理论是指:在一个分布式数据存储系统中,一致性、可用性、分区容错性这3个指标中最多只能有2个同时成立。

所谓网络分区是指系统中的一些节点因为故障无法和其它节点进行通信,导致整个网络分成了几块区域。比如下图中的两台服务器G1和G2处在不同的网络中,它们之间的通讯很有可能失败。由于在分布式系统中,网络分区的情况无法避免,因此我们可以认为P总是成立。因此,更进一步,CAP定理告诉我们,C和A不能同时成立。

网络分区

一致性是指数据在多个副本之间是否能够保持一致的特性。在一个分布式系统中,当一个数据项更新后,用户从任意一个节点上都能读取到它的最新值,那么这个系统具备强一致性,也就是各个节点上的数据时刻保持同步。

比如当客户端向G1写入v1后,当它向G2发送请求时得到的值也是v1。

为了能让客户端访问G2时也能得到v1,G1必须把数据同步到G2。

可用性是指服务必须一直处于可用的状态,也就是说对于用户的请求能够在有限的时间内返回正确的结果。如果服务的响应时间超过了设计时的要求或者服务返回了错误的结果,比如返回系统异常等,那么此时服务是不可用的。

一致性和可用性的矛盾

在上面的例子中,为了保证一致性,G1必须在写入本机的同时还要把数据同步到G2,那么在这段时间内,G2是不能对外提供读服务的(满足C不满足A),否则客户端会读到和G1不同的数据(满足A不满足C)。

参考

  1. 《CAP定理的含义》