CAP原理分别表示一致性(Consistency), 可用性(Available), 分区(Partition Tolerance)。其中分区是分布式系统避免单点失败的必要手段,所以一般分布式系统都具备P这个属性,而在C和A之前做取舍。CP系统有Zookeeper、etcd等。
分区(Partition Tolerance)
单点失败(网络不通、节点crash等)不会导致整个分布式系统的失败,是分布式系统必不可少的属性。
一致性(Consistency)
同一时刻所有节点对整个分布式系统的 认知 是相同的,即同一时刻分布式系统保持一致。因为要保持一致性,数据获取可能有延迟,因为要等待分布式系统内部的同步。
可用性(Available)
这里的可用性和一般意义上服务器的可用性是不一样的,这里的可用性是非常细粒度的,指数据的可用性。在任意时刻都可以立刻获取到数据,但不一定所有的节点获取到一样的数据,往往以牺牲一致性为前提。
所以我们常见的分布式系统一般有两种,一种是CP,另一种是AP。但是CAP只是对分布式系统的高层次的概括,在分布式系统的实现细节上会有些许差异,并不会严格遵守CAP定理。