CAP

发布时间 2023-07-10 13:52:32作者: 张家豪

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 实现最终数据一致性
      • 放弃并不等于什么都不做,需要为分区恢复后做准备

与 BASE 理论对比

CP

CAP 理论是忽略网络延迟的,但是现实中肯定会存在延迟,这和 BASE 的最终一致性不谋而合

AP

牺牲一致性是指系统出现分区时,当分区问题结束时也要完成数据的一致性。 BASE 理论其实是 AP的延伸