关于CAP定理的简单理解

CAP定理简介

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

  1. 一致性(Consistency):同一个数据在集群中的所有节点,同一时刻是否都是同样的值。
  2. 可用性(Availability):集群中一部分节点故障后,集群整体是否还能处理客户端的更新请求。
  3. 分区容忍性(Partition tolerance):是否允许数据的分区,分区的意思是指是否允许集群中的节点之间无法通信。

我的个人理解

我觉得,理解CAP可以从两个阶段去考虑。

只考虑CP

比如,一个数据在两台机器上,然后这两台机器之间无法通信了,即我们首先选择了P;然后,此时,我认为已经不可能做到C了。因为这两台机器之间已经无法通信,那就无法保证两台机器之间的数据一致性了。也就是说,要在P的情况下,做到C是不可能的。【这点相信有很多人会有意见,欢迎大家和我交流】

把A也考虑进来

这个会复杂很多。由于分布式系统,我们无法不选择P,因为由于网络的不可靠性,必定会导致两个机器节点之间无法进行网络通信,从而导致数据无法同步。这样的现实导致我们必须选择P。然后,在这个前提下,我们要么选择A,要么选择C。下面分析一下原因:

  1. 当两台机器节点之间无法通信时(即选择了P),如果我们继续允许客户端写入数据到其中一台,那就必然导致数据不一致,因为这个数据无法同步到另一台机器;这种做法就是选择了A,牺牲了C;
  2. 当两台机器节点之间无法通信时(即选择了P),如果我们不允许客户端写入数据到任何一台,那数据虽然是一致的,但系统就不可用了;这种做法就是选择了C,牺牲了A;

如何在保证PC的情况下,尽量提高A?

答案就是NRW算法。

假设总共有五个节点(N),我们只要保证写入数据的节点数(W)+ 读取数据的节点数(R)大于总节点数。即保证W+R>N,那就能保证对客户端而言,总是能读取到最新的数据。比如写入节点数为3,那读取节点数也只要为3,那就能保证总是能读取到最新的数据。有了这样的数据公式的保证。我们就可以根据情况灵活选择W,R了。

因为我们不需要保证5台机器全部都写入成功,只需要保证3台写入成功即可。这就意味着,我们允许5台机器中的2台出现问题,也就是提高了系统的可用性。

时间: 2024-10-19 10:38:53

关于CAP定理的简单理解的相关文章

谈谈对CAP定理的理解

谈谈对CAP定理的理解 CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二.这个解释很让人费解,笔者在看了一些文章后谈谈我对它的理解,还请斧正. 从问题出发 假设我们用一台服务器A对外提供存储服务,为了避免这台服务器宕机导致服务不可用,我们又在另外一台服务器B上运行了同样的存储服务.每次用户在往服务器A写入数据的时候,A都往服务器B上写一份,然后再返回客户端.一切都运行得很好,

正确理解CAP定理

简介 定义 原文:In a distributed system (a collection of interconnected nodes that share data.), you can only have two out of the following three guarantees across a write/read pair: Consistency, Availability, and Partition Tolerance - one of them must be s

佳文分享:CAP定理

1976年6月4号,周5,在远离音乐会大厅的一个楼上的房间内,在位于Manchester的Lesser Free Trade Hall ,Sex Pistols 乐队(注:Sex Pistols的经理人Malcolm McLaren 2010.4.8去世)開始了他们的第一次演出(gig, 注:规模太小称不上演唱会 ).关于当晚谁出席了那场演出有些混乱,部分是由于6周后的还有一场音乐会,但最基本的还是由于,这场演出被觉得是永久改变西方音乐文化 的一场演出.这场演出是如此的重要且富有象征意义,以至于

CAP定理(原则)以及BASE理论

CAP定理(原则)以及BASE理论 CAP定理(原则)概念 CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. 1. 数据一致性(consistency) 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值.(等同于所有节点访问同一份最新的数据副本) 2. 服务可用性(availability) 可用性(A):在集群中一部分节点故障后,集

CAP定理

from wikipedia CAP定理 CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consistency) 可用性(Availability) 容忍网络分区(Partition tolerance) 根据定理,分布式系统只能满足三项中的两项而不可能满足全部三项. 理解CAP理论的最简单方式是想象两个节点分处分区两侧.允许至少一个节点更新状态会导致数据不一致,即丧失了C性质.如

「系统架构」CAP 定理的含义

分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的. 分布式系统的最大难点,就是各个节点的状态如何同步.CAP 定理是这方面的基本定理,也是理解分布式系统的起点. 本文介绍该定理.它其实很好懂,而且是显而易见的.下面的内容主要参考了 Michael Whittaker 的https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/ 分布式系统的三个指标1998年,加州

CAP 定理的含义

分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的. 分布式系统的最大难点,就是各个节点的状态如何同步.CAP 定理是这方面的基本定理,也是理解分布式系统的起点. 本文介绍该定理.它其实很好懂,而且是显而易见的.下面的内容主要参考了 Michael Whittaker 的文章. 一.分布式系统的三个指标 1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标. Consistency Availability Partit

【转】CAP 定理的含义

原文链接:CAP 定理的含义 作者: 阮一峰 日期: 2018年7月16日 分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的. 分布式系统的最大难点,就是各个节点的状态如何同步.CAP 定理是这方面的基本定理,也是理解分布式系统的起点. 本文介绍该定理.它其实很好懂,而且是显而易见的.下面的内容主要参考了 Michael Whittaker 的文章. 一.分布式系统的三个指标 1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统

张大胖和CAP定理(分布式系统、可用性 Availability、一致性 Consistency、分区容错性 Partition tolerance)

原文链接:https://mp.weixin.qq.com/s/J1WH4ZYyVWGgXx9g2siocw 转自:码农翻身(微信号:coderising) 计算机界有很多高大上又难于理解的术语,CAP就是其中之一, 什么一致性(Consistency), 可用性(Availability), 分区容错性(Partition tolerance) 就很难理解了, 再加上CAP定理更是让人云里雾里, 今天咱们试图通俗的演绎一下. 张大胖在公司奋发图强,经过多年的努力,终于做到了架构师的位置. 架构