# 理论

CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

  • 一致性(C):对某个指定的客户端来说,读操作能返回最新的写操作结果
  • 可用性(A):非故障节点在合理的时间返回合理的响应
  • 分区容错性(P):分区容错性是指当网络出现分区(两个节点之间无法连通)之后,系统能否继续履行职责

CAP理论就是说在分布式系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以考虑最差情况,分区容忍性是一般是需要实现的

# 个人理解

满足之后:
如果选择C,则需要将数据同步更新到所有节点上,每次写操作就都要等待全部节点写成功,会导致A的降低。
如果选择A,就需要将数据复制到很多个节点,需要复制的数据很多,复制的过程缓慢,会导致C的降低

正常情况下,不存在CP还是AP的选择,可以做到CA,但如果网络出现分区(节点之间的网络连接不正常),就必须要为了满足P,而放弃C或A,放弃哪个?一般我们要保证的是系统不能挂掉(AP),然后通过同步数据的方式还原C,还可能让我们的系统挂一部分(CP),然后通过重启节点的方式还原A

对于不同业务也会需要考虑到不同的CAP选择,以电商网站为例,会员登录、个人设置、个人订单、购物车、搜索用AP,因为这些数据短时间内不一致不影响使用;后台的商品管理就需要CP,避免商品数量的不一致;支付功能需要CA,保证支付功能的安全稳定

BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。