CAP 定理(CAP theorem)

在计算机科学中,CAP 定理(CAP theorem), 又被称作 布鲁尔定理(Brewer’s theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:

  • 一致性 (Consistency) (所有节点在同一时间具有相同的数据)
  • 可用性 (Availability) (保证每个请求不管成功或者失败都有响应)
  • 分区容错性 (Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作) CAP 理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
  • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

cap theorem

CAP 理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

主流系统有两种:

  • CP 强一致性系统 (比如金融系统)
  • AP 高可用性系统 (互联网系统)

分布式系统中的一致性是强一致性,要么一起成功,要么一起失败,势必会影响性能,一致性对性能的打击非常大,所以我们要考虑高性能,为了尽可能满足一致性,要将这个C强一致性转为弱一致性。所以就有了BASE理论,基于CAP定理,主要讲的是数据一致性,数据同步的问题。

BASE理论

BASE:Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定义。

BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性,但应用可以采用适合的方式达到最终一致性(Eventual Consistency)

  • 基本可用(Basically Available):基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务,这就是损失部分可用性的体现
  • 软状态(Soft State):软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的表现。MySQL Replication的异步复制也是一种体现。
  • 最终一致性 (Eventual Consistency):最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

分布式系统成百上千个服务

ACID vs BASE

ACIDBASE
原子性 (Atomicity)基本可用 (Basically Available)
一致性 (Consistency)软状态 / 柔性事务 (Soft state)
隔离性 (Isolation)最终一致性 (Eventual consistency)
持久性 (Durable)