CAP

image.png

  • C: Consistency 一致性
  • A: Availability 可用性(指的是快速获取数据)
  • P: Tolerance of network Partition 分区容忍性(分布式)


分布式系统不可能同时满足下面三项

  • Consistency: all nodes see the same data at the same time. 所有节点在同一时间读到相同的数据。也就是说当数据写入成功后,所有节点会同时看到这个新的数据。

  • Availability: a guarantee that every request receives a response about whether it was successful or failed.保证无论成功与否,每个请求在有限时间内都能够收到一个反馈。这就是数据的可用性,这个重点是系统一定有响应。

  • Partition-Tolerance: the system continues to operate despite arbitrary message loss or failure of part of the system. 分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。

分布式系统只能同时满足 CAP 中的两项

选择 说明
CA 放弃分区容错性,加强一致性和可用性,其实就是传统的单机数据库的选择
AP 放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性,这是很多分布式系统设计时的选择,例如很多NoSQL系统就是如此
CP 放弃可用性,追求一致性和分区容错性,基本不会选择,网络问题会直接让整个系统不可用

BASE 模型

  • Basically Available: 基本可用,允许分区失败;
  • Soft state: 软状态,接受一段时间的状态不同步;
  • Eventually consistent: 最终一致,保证最终数据的状态是一致的。

对 CAP 理论的补充,即使分布式系统无法做到实时一致,也要做到系统基本可用,数据最终达到一致性的状态。

参考 : CAP 的证明