博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CAP理论
阅读量:5162 次
发布时间:2019-06-13

本文共 1158 字,大约阅读时间需要 3 分钟。

简介:

      在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

类别:


一致性(Consistency)

概念:

同一个数据在集群中的所有节点,同一时刻是否都是同样的值。
说明:
对于一致性,可以分为从客户端和服务端两个不同的视角。从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。一致性是因为有并发读写才有的问题,因此在理解一致性的问题时,一定要注意结合考虑并发读写的场景。从客户端角度,多进程并发访问时,更新过的数据在不同进程如何获取的不同策略,决定了不同的一致性。对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。


可用性(Availability

概念:

集群中一部分节点故障后,集群整体是否还能处理客户端的更新请求。
说明:
对于一个可用性的分布式系统,每一个工作正常的节点必须对每一个请求作出响应。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。

 


分区容忍性(Partition tolerance

概念:

是否允许数据的分区,分区的意思是指是否允许集群中的节点之间无法通信。
说明:
分区容错性和扩展性紧密相关。在分布式应用中,某些原因会导致系统无法正常运转。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,或者是机器之间有网络异常,将分布式系统分隔未独立的几个部分,各个部分还能维持分布式系统的运作,这样就具有良好的分区容错性。


选择:

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

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

转载于:https://www.cnblogs.com/jamesf/p/4751437.html

你可能感兴趣的文章
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>
Codeforces Round #277 (Div. 2)
查看>>
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>