CAP理论的理解

CAP理论的由来

CAP理论是加州伯克利分校计算机科学家埃里·布鲁尔(Eric Brewer)于1998年提出的一个假说,并在2000年的分布式计算原则研讨会上发表。在2002年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)又完成了布鲁尔假说的证明,使之成为一个定理,但吉尔伯特和林奇证明的布鲁尔定理比布鲁尔假说狭义。

CAP理论的含义

一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance),最多只能同时满足其中两项。

  • 一致性:分布式系统每个节点同一时间能获取到相同数据。
  • 可用性:对于每个请求都能在有限的时间内返回成功或失败的响应。
  • 分区容错性:分布式系统在遇到某些节点故障或网络分区问题时,仍能对外提供满足一致性或可用性的服务。

网络分区:由于某种原因网络被分成若干个孤立的互不相通区域,导致分布式系统只有部分节点能够进行正常的通信。

C、A、P的取舍

CAP理论的理解_第1张图片
假设分布式系统有三个节点,彼此间能够正常的通信,此时三个节点v均为1,如果此时由于某种原因发生了网络分区导致节点2与节点1、3之间无法正常通行,如果此刻节点1的v变化为了2,节点3感知到了变化v也为2,而节点2却无法感知到变化v依旧为1。
1)满足CP,放弃A
为保证数据的一致性,此时将不再提供服务,直到节点2恢复正常数据同步后再重新提供服务。
2)满足AP,放弃C
为保证可用性,此时节点2虽然数据和其他节点不一致但仍能提供服务,也就是放弃强一致性,保证最终一致性。
3)满足CA,放弃P
为保证可用性,节点2需要提供服务,为保证一致性,各节点必须等待数据同步,此时无法提供服务,CA相矛盾,因此这种情况在分布式系统下是不存在的。同时在分布式系统中网络问题是难以避免的,因此通常是在C与A之间寻求平衡。

借鉴:陈明. 分布系统设计的CAP理论[J]. 计算机教育, 2013(15):113-116.

如有错误,欢迎指正!

你可能感兴趣的:(CAP理论的理解)