分布式系统-CAP理论

分布式系统的指标: CAP

  • C(Consistency): 一致性 // 分布式系统中多个节点(或多个副本)的数据保持一致, 一致性又分强一致性/弱一致性/最终一致性, CAP里的一致性指强一致性 分布式系统-Consistency
  • A(Availability): 可用性 // 当用户请求节点A, 节点A一定会回应
  • P(Partition tolerance): 分区容错, 在分布式节点之间网络断开时, 仍旧提供一致性和可用性。// 一般来说,分区容错无法避免,因此可以假定 CAP 的 P 总是成立, 剩下的是选择 AP 还是 CP的问题 (三个指标无法同时做到)

Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。

分布式系统只能满足CAP中的两个, 为什么?
假设P总是成立, 当写入新数据到node1, 为了实现一致性, 不得不锁定node2 直到数据同步完成, 那么此时node2就不满足可用性 …

CAP如何取舍:

  • CA without P: 单机系统 // 所以如果舍弃P,意味着要舍弃分布式系统。那也就没有必要再讨论CAP理论了
  • CP without A: 其中最典型的就是很多分布式数据库,他们都是设计成CP的。在发生极端情况时,优先保证数据的强一致性,代价就是舍弃系统的可用性。如Redis、HBase等,还有分布式系统中常用的Zookeeper也是在CAP三者之中选择优先保证CP的。
  • AP without C: 如果对可用性要求极高(N个9).. 但也并非完全舍弃C, 退而求其次保证最终一致性即可

@ref: