CAP、BASE 理论

CAP 理论

CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer’s theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000 年的 ACM PODC 上提出的一个猜想。2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。该定理指出一个分布式系统不可能同时满足以下3点情况:

  • C:consistency,一致性。等同于所有节点访问同一份最新的数据副本。
  • A:availability,可用性。每次请求都能获取到非错的响应,但不能保证数据是最新的。
  • P:partition tolerance,分区容错性。允许网络丢失从一个服务节点到另外一个服务节点的任意信息,系统仍能继续运行。

CAP必要条件关系

CAP定理表明,当不同服务节点间发生了网络故障或高延迟时,可能使得网络消息丢失。此时,要么失去一致性(即使消息丢失,仍正常响应对外提供服务),要么失去可用性(若消息丢失,即没有接收到消息消费成功的响应,则停止服务)。所以对于一个分布式系统来说,不可能同时完全满足以上三点,最多只能保证两点

必要条件解释

下面构建一个简单的分布式系统:假设有两个服务节点,并保存相同变量v,双方及客户端之间都可以相互访问。更详细的分别看一下什么是一致性、可用性、分区容错性。

一致性

在保证一致性的系统中,如果客户端向某个节点上的某个变量写入了任意值,并且服务节点进行了确认响应。那么客户端在从任意服务节点读取该变量,都应是最新值。

一致性

可用性

在保证可用性的系统中,向任意没有宕机的服务节点进行访问,服务节点必须能够正常响应客户端(响应数据可能不是最新的)。

可用性

分区容错性

先解释一下什么是分区:当系统不能在时限内达成数据一致性,则认为产生了分区。通俗的理解:比如有两个服务节点A、B,由于底层网络设备故障使得 A 、B 节点无法通信,或 A、B 某个节点宕机使得二者不能进行通信,即可称之为 A、B 发生了分区。

在保证分区容错性的系统中,允许网络丢失从一个服务节点到另外一个服务节点的任意信息,系统仍能继续运行。
假设所有的消息都丢失了,我们的系统变成了这样:

分区容错性-1
为了保证分区容错性,我们的系统必须在任意个不通的网络分区下正常工作。
分区容错性-2

为什么不能同时满足

讨论完 CAP 的三个必要条件后,在证明一下,为什么在分布式系统中,三者不能同时具备。

  1. 既然是分布式架构,那么高可用即单服务多节点部署这一点是一定要具备的,否则与单机部署服务没有差异。
  2. 既然是多节点部署的,那么就一定要满足分区容错性。
  3. 又因为网络故障、高延迟的这一客观问题的存在,当发生网络问题时,如何做到既要保证一致性也保证可用性?是做不到的,因为二者是互相冲突不相容的。

C与A的决策
如果继续等待,则满足 CP。
如果立即返回,则满足 AP。

无论选择哪个,都会失去另一个。

BASE 理论

BASE理论是对CAP的一种解决思路,包含三个思想:

  1. Basically Available (基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
  2. Soft state (软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态
  3. Eventually Consistent (最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致

BASE 理论的三个思想,主要针对 CAP 理论中 CA 矛盾的一种调和。

  1. CP:如果达到了强一致性,就必须牺牲可用性。但是在 BASE 中的思想是:基本可用。服务节点并不是一直不可用,仅是临时的不可用,优先保障核心功能节点可用。
  2. AP:如果达到了强可用性,就必须牺牲一致性。但是在 BASE 中的思想是:软状态 + 最终一致性。即在短时间内允许数据出现不一致,但最终会达到数据一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值