当前位置:首页>编程知识库>后端开发知识>面试官:什么是CAP 定理,为什么CAP不能同时被满足?
面试官:什么是CAP 定理,为什么CAP不能同时被满足?
阅读 1
2021-06-06

目录:


什么是 CAP 定理

为什么只能 32

能不能解决 32 的问题

引用

1. 什么是 CAP 定理

2000 年的时候,Eric Brewer 教授提出了 CAP 猜想,2年后,被 Seth GilbertNancy Lynch 从理论上证明了猜想的可能性,从此,CAP 理论正式在学术上成为了分布式计算领域的公认定理。并深深的影响了分布式计算的发展。
CAP 理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错性(PPartition tolerance)这三个基本需求,最多只能同时满足其中的2个。
什么是分区?
在分布式系统中,不同的节点分布在不同的子网络中,由于一些特殊的原因,这些子节点之间出现了网络不通的状态,但他们的内部子网络是正常的。从而导致了整个系统的环境被切分成了若干个孤立的区域。这就是分区。

2. 为什么只能 3 选 2

为什么只能 32
首先问,能不能同时满足这三个条件?
假设有一个系统如下:
整个系统由两个节点配合组成,之间通过网络通信,当节点 A 进行更新数据库操作的时候,需要同时更新节点 B 的数据库(这是一个原子的操作)。
上面这个系统怎么满足 CAP 呢?C:当节点A更新的时候,节点B也要更新,A:必须保证两个节点都是可用的,P:当节点 A,B 出现了网络分区,必须保证对外可用。
可见,根本完成不了,只要出现了网络分区,A 就无法满足,因为节点 A 根本连接不上节点 B。如果强行满足 C 原子性,就必须停止服务运行,从而放弃可用性 C
所以,最多满足两个条件:

3. 能不能解决 3 选 2 的问题

难道真的没有办法解决这个问题吗?
CAP 理论已经提出了 13 年,也许可以做些改变。
仔细想想,分区是百分之百出现的吗?如果不出现分区,那么就能够同时满足 CAP。如果出现了分区,可以根据策略进行调整。比如 C 不必使用那么强的一致性,可以先将数据存起来,稍后再更新,实现所谓的 “最终一致性”。
这个思路又是一个庞大的问题,同时也引出了第二个理论 Base 理论,我们将在后面的文章中详细介绍。

4. 引用


《从 PaxosZookeeper —— 分布式一致性原理实践》倪超

CAP理论十二年回顾:"规则"变了

维基百科CAP定理



感谢阅读,希望对你有所帮助 :)
来源:cnblogs.com/stateis0/p/9062121.html


 
  END
 


 十期推荐
 
  【271期】面试官:Spring MVC的处理流程是怎样的?
  

 
 
  【272期】数据结构:哈希表原理以及面试中的常见考点
  

 
 
  【273期】告诉面试官,我能优化groupBy,而且知道得很深!
  

 
 
  【274期】面试官:怎么保证缓存和数据库一致性
  

 
 
  【275期】面试官:你对MySQL中的索引了解多少?
  

 
 
  【276期】面试官:你分析过@Annotation注解的实现原理吗?
  

 
 
  【277期】面试官:说几种常用的分布式 ID 解决方案
  

 
 
  【278期】面试官:都说 select * 效率低下,你知道什么原因吗?
  

 
 
  【279期】面试官:Java遍历Map集合有哪几种方式?各自效率怎么样?
  

 
 
  【280期】k8s面试问什么?
  

 
 
  

 
? ~
以上数据来源于网络,如有侵权,请联系删除。
评论 (0)