CAP定理
- 场景
例如A、B、C两个节点,集群部署,A节点写数据,会通过网络同步到B、C节点,他们存储的数据一样,很像MYSQL的主从复制。
- 一致性(Consistency)
这里一定要注意,指的是“强一致性”,即每次无论从哪个节点读取都获得最新的数据即最近写入数据,否则就返回一个错误;
- 可用性(Availability)
每次请求无论到那个节点上,都能获得一个(非错误)响应,但不能不保证返回的是最新写入的数据
- 分区容忍性(Partition Tolerance)
指服务节点之间,若发生网络故障,系统仍能继续运行,提供服务;
以上三个原则指的是分布式的数据的存储,他们不可能同时满足三个条件
组合介绍
-
CA
这种系统关注一致性和可用性,不支持分区容忍性,也就是在节点之间网络出现故障时候,服务是不对外提供服务的,或者仅仅提供读数据的功能。 例如2PC两阶段提交就是这样 -
CP
表示即遍在节点网络故障时候(例如A和B故障,A和C正常)仍能提供部分服务,意思是若某些节点未同步到最新数据,则这些节点(B节点)变为不可用(因此不满足A可用性),其他是最新数据的节点继续(A和C)提供服务,这样仅仅是节点的部分可用; -
AP
这种系统,因为节点之间网络问题,即便数据不同步,他们每次无论请求那个节点都会返回数据,虽然有些数据因为未同步是旧的数据;