逻辑象限

浅谈分布式系统中的CAP理论

CAP三要素定义

为何只能实现二者?

在分布式系统中,由于网络的不稳定性,分区(P)是必然存在的。因此系统设计者必须在C和A之间做出取舍:

若选择强一致性(CP),在网络断开时,为了保证数据绝对一致,系统必须拒绝客户端的写请求直至网络恢复(牺牲可用性)。ZooKeeper、etcd属于CP模型。
若选择高可用性(AP),在网络断开时,系统允许向未同步数据的节点写入或读取旧数据(牺牲一致性),随后依靠最终一致性协议恢复。Eureka、Cassandra属于AP模型。

工程实践:BASE理论

为解决CAP的严格互斥,工程界提出了BASE理论(Basically Available, Soft state, Eventually consistent)。核心思想是:即使无法做到强一致性,也可以通过业务逻辑使系统达到最终一致性,这成为了目前绝大多数高并发系统的指导思想。