这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
CAP & BASE
CAP理论
CAP指出一个分布式系统,涉及读写操作时,满足分区容错后,只能满足其余的一点
-
Consistency 一致性:所有节点访同一份最新的数据副本
-
Availablity 可用性:非故障的节点在合理的时间内返回合理的响应
-
Partition Tolerance 分区容错性:分布式系统出现网络分区的时候,仍能够对外提供服务
- 网络分区(network partition):存放数据的部分节点故障,导致网络分成几块,区之间无法通信
CP架构:ZooKeeper、HBase
AP架构:Cassandra、Eureka
为什么没有CAP? 如果系统出现了网络分区,某个节点正在写,如果为了保证C,就要禁止其他节点的读写操作,与A冲突;如果为了保证A,其他节点读写正常的话, 与C冲突。
如果没有发生P,那么CA是可以共存的。
BASE理论
一种对C和A的权衡
- Basically Available,基本可用
- Soft-State,软状态
- Eventually Consistent,最终一致性
核心思想
牺牲数据的一致性来满足系统的高可用性,系统中一部分数据不可用或者不一致是,仍需要保持系统整体“主要可用”
基本可用
系统在出现故障时,允许损失部分可用性
- 响应时间上的损失
- 系统功能上的损失
软状态
指系统中的数据存在中间状态(一段时间内数据不一致),并认为这个中间状态不会影响系统整体可用性
最终一致性
系统中的所有数据副本,在经过一段时间的同步后,最终能达到一致。
各种一致性要求对比
- 强一致性:任何时候,系统写入的数据会同步到所有的副本。
- 弱一致性:不一定可以读取到最新写入的值,也不保证多少时间之后读取到的数据是最新的,只是会尽量保证某个时刻达到数据一致的状态
- 最终一致性 :弱一致性的升级版,系统会保证在一定时间内达到数据一致的状态。