问题

  1. 分别代表什么含义,尤其 P (分区容错)代表什么意思

网络分区:由于网络故障 导致 集群出现 多个独立的小分区,比如 n1和n2,之间网络不同。
分区容错指即使在出现这种情况下,系统仍然能继续运行

  1. 为什么基本上都是CP 和 AP ,一般不可能出现CA

网络故障是不可避免的。如果选择了 CA 而放弃了 P,当出现网络故障时,为保障C,一般是禁止写入请求的,这样就导致系统在此场景下的不可用,与A相违背。

  1. CAP 与 ACID的区别

完全不同,不用对比;ACID中的C是数据库的完整性


CAP

CAP(C:一致性;A:可用性;P: 分区容忍性)是分布式系统的架构设计理论;

分布式系统的设计原则:横向可扩展和高可用;横向可扩展解决单机性能瓶颈问题,高可用解决单机故障问题;这里的可用性就是指A

为保障可用性,一个分布式系统由多个节点组成,每个节点拥有相同的数据,为了达到这个效果,每个节点收到写请求后需要将数据同步到其他节点,以保证数据的一致性,这里的一致性就是指C,用户访问系统时可以读到最近写入的数据;

由于网络必然有延迟,数据同步不可能完全实时,绝对的C是不可能的;

网络故障是不可避免的,出现网络分区时,多个节点数据是不一致的,但可以选择对用户表现出一致性,代价是牺牲可用性,有问题的数据节点收到请求直接返回不可用。也可以选择可用性,不同的节点返回不同的数据,就牺牲了一致性。这里的选择就是P

BASE

  1. 基本可用(Basically Available)
  • 保证核心功能可用
  1. 软状态(Soft State,中间状态)
  • 允许存在中间状态,中间状态数据不一致
  1. 最终一致性(Eventual Consistency)
  • 经过一定时间后,最终一致

BASE 是 CAP理论的眼神,严格意义上讲是CAP中AP的延伸,保证最终一致