【架构设计】21-CAP理论

CAP理论

CAP定理又称作布鲁尔定理,是分布式计算领域公认的一个定理。采用Robert Greiner第二版对CAP定理的定义为:在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性、可用性、分区容错性三者中的二个,另外一个必然牺牲。

CAP三个约束的简单解释(以下解释来源于Robert Greiner第二版对CAP的分析):

  • 一致性(Consistency):对某个指定的客户端来说,读操作能够保证返回最新的写操作结果。

  • 可用性(Availability):非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。

  • 分区容错性(Partition tolerance):当出现网络分区后,系统能够继续”履行职责”。

::: tip 提示
分区指的是,你整个分布式系统不再是连通的,造成的原因可能是网络中断,可能是丢包,也可能是阻塞。
:::

CAP应用

虽然CAP理论中定义三者只能取二个,但是在分布式系统中,我们必需选择P要素,因为网络本身无法做到100%可靠,有可能出现故障,分区是一个必然的现象。因此只能选择CP或都AP

  • CP

    如下图所示,为了保证一致性,当发生分区现象后,N1节点的数据已经更新为y,由于复制通道中断,数据无法同步到N2节点,N2节点的数据还是x。这时客户端C访问N2时,N2需要返回Error,提示客户端系统发生了错误。这种处理方式违背了可用性的要求,因此只能满足CP。

    Alt CP

  • AP
    如下图所示,为了保证可用性,当发生分区现象后,N1节点的数据已经更新为y,由于复制通道中断,数据无法同步到N2节点,N2节点的数据还是x。这时客户端C访问N2时,N2将当前拥有的数据x返回给客户端C,而实际上当前最新的数据已经是y了,这就不满足一致性的要求,因为CAP只能满足AP。虽然x不再是一个”正确的”结果,但是仍然是一个”合理”的结果,因为x是旧的数据,不是一个错乱的数据,只是不是最新的数据而已。

    Alt  P


   转载规则


《【架构设计】21-CAP理论》 孤独如梦 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
【架构设计】22-CAP理论细节 【架构设计】22-CAP理论细节
CAP的关键细节 CAP关注的粒度是数据,而不是整个系统 CAP理论的定义和解释上,用的都是system、node这类的系统级概念,容易给我们造成误解,认为系统只能选择AP或者CP。但是在实际设计中,系统不可能只处理一种数据,有的数据需要
2019-05-29
下一篇 
【架构设计】20-高性能负载均衡:算法 【架构设计】20-高性能负载均衡:算法
前言负载均衡算法分类 任务平均类:负载均衡系统将任务平均分配给服务器进行处理,这里的平均可以是绝对的平均,也可以是加权的平均。 负载均衡类:负载均衡系统根据服务器的负载进行分配,这里的负载是指系统当前的压力,可以用CPU负载衡量,也可以用
2019-05-29
  目录