1、一致性(Consistency)(C): 在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
2、 可用性(Availability)(A): 在集群中一部分节点故障后,在一定时间内,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
3、分区容错性(Partition tolerance)(P): 以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
ACID:
Automaticy 原子性
Consistency 一致性
Isolation 隔离性
Durability 持久性
CAP:
Consistency 最终一致性
Availability 可用性
Partition tolerance 分区容错性
BASE:
Basically Available 基本可用
Soft state 软状态
Eventually consistent 最终一致性
分布式事务:
2PC: Two-Phase Commit
阶段一: 提交事务请求
阶段 二: 执行事务请求
3PC: Three-Phase Commit
阶段一: CanCommit
阶段二: PreCommit
阶段三: DoCommit
定理: 任何分布式存储系统只可同时满足两点,没法三者兼顾。
忠告: 架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍
原因总的来说就是: 数据存在的节点越多,分区容错性(P)越高,但要复制更新的数据就越多,一致性(C)就越难保证。为了保证一致性,更新所有节点数据所需要的时间就越长,可用性(A)就会降低。
MySQL: 满足CA
Zookeeper: 满足CP