如何理解 CAP 定理

163 阅读1分钟

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

参考文章