Consistency一致性、Availability可用性、Partition-tolerance分区可容忍性。三者不可兼得。
如果我们选择了 CA 而放弃了 P,那么当发生分区现象时,为了保证一致性,这个时候必须拒绝请求,但是 A 又不允许,所以分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。
CP:放弃可用性,追求一致性和分区容错性,我们的 ZooKeeper 其实就是追求的强一致(分布式锁ZooKeeper )。
AP:放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性,这是很多分布式系统设计时的选择,后面的 BASE 也是根据 AP 来扩展(分布式锁redis)。