You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
## 一、CAP
### 1.概念
**CAP定理( CAP theorem) **又被称作`布鲁尔定理(Brewer's theorem)`, 是回加州大学伯克得分校的计算机科学家埃里克·布鲁尔( Eric Brewer) 在2000年的ACM PODC上提出的一个猜想。2002 年, 麻省理工学院的赛斯·吉尔伯特( Seth Gilbert) 和南希·林奇( Nancy Lynch) 发表了布鲁尔猜想的证明, 使之成为分布式计算领域公认的一个定理**。
| ITEM | CONTENT | DESC |
| ---- | ---------- | ---------------------------------------------------------------- |
| C | 一致性 | 对某个指定的客户端来说,读操作保证能够返回最新的写操作结果 |
| A | 可用性 | 非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应) |
| P | 分区容错性 | 当出现网络分区后,系统能够继续履行职责 |
** 在一个分布式系统(指互相连接并共享数据节点的集合)中,当涉及读写操作时,只能保证`一致性( Consistence) `、`可用性( Availability) `、`分区容错性( Partition Tolerance) `三者中的两个,另外一个必须被牺牲。
#### 1.1 CP
如图1-1所示, 为了保证一致性, 当发生分区现象后, N1节点上的数据已经更新到y, 但由于N1和N2之间的复制通道中断, 数据y无法同步到N2, N2节点上的数据还是x。
这时客户端C访问N2时, N2需要返回Error, 提示客户端面C: “系统现在发生错误”, 这种处理方式违背了可用性( Availability) 的要求, 因此CAP三者只能满足CP。
![[Pasted image 20231022162827.png]]
#### 1.2 AP
如图1-2所示, 为了保证可用性, 当发生分区现象后, N1节点上的数据已经更新到y, 但由于N1和N2之间的复制通道中断, 数据y无法同步到N2, N2节点上的数据还是x。
这时客户C访问N2时, N2将当前自己拥有的数据x返回给客户端C了, 而实际上当前最新的数据已经是y了, 这就不满足一致性( Consistency) 的要求了, 因此CAP三者只能满足AP。
`注意:` 这里N2节点返回的x, 虽然不是一个“正确”的结果, 但是一个“合理”的结果, 因为x是旧的数据, 并不是一个错乱的值, 只是不是最新的数据而已。
![[Pasted image 20231022163757.png]]
### 2.在HDFS和Kafka中CAP的体现
## 二、BASE
## 三、ACID