CAP
理论
一致性 Consistency
对某个指定客户端来说,读操作保证能够返回最新的写操作结果
可用性 Availability
非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)
分区容错性Partition Tolerance
当出现网络分区后,系统能够继续“履行职责”
应用
分布式环境下 P 是必须得,否则当出现网络分区时,C 和 A 就会冲突
CP
当 N1 节点数据在同步到 N2 节点时,复制通道出现问题,导致未复制到N2,为了保证 C,此时系统访问 N2 的时候会提示不可用(违反了 A)
AP
当 N1 节点数据在同步到 N2 节点时,复制通道出现问题,导致未复制到N2,为了保证 A,此时系统访问 N2 可以正常使用,但是会导致数据不一致(违反了 C)
细节
- CAP 关注的粒度是数据而不是系统;在整个系统中可以某些数据是 CP,某些数据是 AP
- CAP 是忽略网络延迟的
- 正常情况下不存在CP 和 AP 的选择,可以同时满足 CA
- CA
- 可通过数据库的同步,虽然有延迟,但是某些实时性不是很高的较适合
- 可通过 MQ 实现最终数据一致性
- 放弃并不等于什么都不做,需要为分区恢复后做准备
- CA
与 BASE 理论对比
CP
CAP 理论是忽略网络延迟的,但是现实中肯定会存在延迟,这和 BASE 的最终一致性不谋而合
AP
牺牲一致性是指系统出现分区时,当分区问题结束时也要完成数据的一致性。 BASE 理论其实是 AP的延伸