CAP 定理
CAP 包含三个指标
-
一致性(Consistency): 各个节点数据保持一致。
-
可用性(Availability): 当用户访问一个正常工作的节点时,系统保证该节点必须给用户一个响应。
-
分区容错性(Partition Tolerance): 分区故障或分区间通信异常时,系统仍然要正常对外提供服务。
CAP 定理支出,分布式系统只能满足三项中的两项,而不能满足全部三项。
CAP 的三种可能性
将 C 理解为状态一致,A 理解为同一时间,P 理解为不同空间。CAP 的三种可能性可以这么理解。
- CP
不同空间的数据,如果要状态一致,则必然要在不同的时间达到。
- AP
不同空间的数据,如果在同一时间读取,则必然不能保证数据一致。
- CA
如果要求从任意时间任意空间拿到的数据一致,则空间数只能为1。
而对于一个分布式系统来说,这是不能接受的。CAP 定理告诉我们剩下的 C 和 A 无法同时做到。只能在 CP 和 AP 中选择。
C 和 A 的矛盾
假设有两个数据分区 P1 与 P2,客户端向 P1 更新了一条记录。
如果要保证 P2 的一致性,就要在 P1 的写操作中,锁定 P2 的读写操作。 只有同步完成后才能重新开放读写。期间 P2 就失去了可用性。
如果保证 P2 的可用性,数据就可能不一致。
各类型产品
- CP
- etcd
- ZooKeeper
- Consul
- AP