问题
- 分别代表什么含义,尤其 P (分区容错)代表什么意思
网络分区:由于网络故障 导致 集群出现 多个独立的小分区,比如 n1和n2,之间网络不同。
分区容错指即使在出现这种情况下,系统仍然能继续运行
- 为什么基本上都是CP 和 AP ,一般不可能出现CA
网络故障是不可避免的。如果选择了 CA 而放弃了 P,当出现网络故障时,为保障C,一般是禁止写入请求的,这样就导致系统在此场景下的不可用,与A相违背。
- CAP 与 ACID的区别
完全不同,不用对比;ACID中的C是数据库的完整性
CAP
CAP(C:一致性;A:可用性;P: 分区容忍性)是分布式系统的架构设计理论;
分布式系统的设计原则:横向可扩展和高可用;横向可扩展解决单机性能瓶颈问题,高可用解决单机故障问题;这里的可用性就是指A;
为保障可用性,一个分布式系统由多个节点组成,每个节点拥有相同的数据,为了达到这个效果,每个节点收到写请求后需要将数据同步到其他节点,以保证数据的一致性,这里的一致性就是指C,用户访问系统时可以读到最近写入的数据;
由于网络必然有延迟,数据同步不可能完全实时,绝对的C是不可能的;
网络故障是不可避免的,出现网络分区时,多个节点数据是不一致的,但可以选择对用户表现出一致性,代价是牺牲可用性,有问题的数据节点收到请求直接返回不可用。也可以选择可用性,不同的节点返回不同的数据,就牺牲了一致性。这里的选择就是P
BASE
- 基本可用(Basically Available)
- 保证核心功能可用
- 软状态(Soft State,中间状态)
- 允许存在中间状态,中间状态数据不一致
- 最终一致性(Eventual Consistency)
- 经过一定时间后,最终一致
BASE 是 CAP理论的眼神,严格意义上讲是CAP中AP的延伸,保证最终一致