Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
晶之木
advanced-java
提交
e24a9542
A
advanced-java
项目概览
晶之木
/
advanced-java
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
advanced-java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
e24a9542
编写于
5月 14, 2020
作者:
Q
Qimiao Chen
提交者:
GitHub
5月 14, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #167 from caiquan-github/distributed-system-cap
add CAP theorem
上级
ac7cdaab
7f1e5280
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
24 addition
and
0 deletion
+24
-0
README.md
README.md
+1
-0
docs/distributed-system/README.md
docs/distributed-system/README.md
+1
-0
docs/distributed-system/distributed-system-cap.md
docs/distributed-system/distributed-system-cap.md
+22
-0
未找到文件。
README.md
浏览文件 @
e24a9542
...
@@ -89,6 +89,7 @@
...
@@ -89,6 +89,7 @@
*
[
分布式服务接口的幂等性如何设计(比如不能重复扣款)?
](
./docs/distributed-system/distributed-system-idempotency.md
)
*
[
分布式服务接口的幂等性如何设计(比如不能重复扣款)?
](
./docs/distributed-system/distributed-system-idempotency.md
)
*
[
分布式服务接口请求的顺序性如何保证?
](
./docs/distributed-system/distributed-system-request-sequence.md
)
*
[
分布式服务接口请求的顺序性如何保证?
](
./docs/distributed-system/distributed-system-request-sequence.md
)
*
[
如何自己设计一个类似 Dubbo 的 RPC 框架?
](
./docs/distributed-system/dubbo-rpc-design.md
)
*
[
如何自己设计一个类似 Dubbo 的 RPC 框架?
](
./docs/distributed-system/dubbo-rpc-design.md
)
*
[
CAP定理的P是什么
](
./docs/distributed-system/distributed-system-cap.md
)
### 分布式锁
### 分布式锁
...
...
docs/distributed-system/README.md
浏览文件 @
e24a9542
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
*
[
分布式服务接口的幂等性如何设计(比如不能重复扣款)?
](
/docs/distributed-system/distributed-system-idempotency.md
)
*
[
分布式服务接口的幂等性如何设计(比如不能重复扣款)?
](
/docs/distributed-system/distributed-system-idempotency.md
)
*
[
分布式服务接口请求的顺序性如何保证?
](
/docs/distributed-system/distributed-system-request-sequence.md
)
*
[
分布式服务接口请求的顺序性如何保证?
](
/docs/distributed-system/distributed-system-request-sequence.md
)
*
[
如何自己设计一个类似 Dubbo 的 RPC 框架?
](
/docs/distributed-system/dubbo-rpc-design.md
)
*
[
如何自己设计一个类似 Dubbo 的 RPC 框架?
](
/docs/distributed-system/dubbo-rpc-design.md
)
*
[
CAP定理的P是什么
](
/docs/distributed-system/distributed-system-cap.md
)
## 分布式锁
## 分布式锁
...
...
docs/distributed-system/distributed-system-cap.md
0 → 100644
浏览文件 @
e24a9542
## 分布式系统CAP定理P代表什么含义
作者之前在看CAP定理时抱有很大的疑惑,CAP定理的定义是指在分布式系统中三者只能满足其二,也就是存在分布式CA系统的。作者在网络上查阅了很多关于CAP文章,虽然这些文章对于P的解释五花八门,但总结下来这些观点大多都是指P是不可缺少的,也就是说在分布式系统只能是AP或者CP,这种理论与我之前所认识的理论(存在分布式CA系统)是冲突的,所以才有了疑惑。
> 这个定理起源于加州大学柏克莱分校(University of California, Berkeley)的计算机科学家埃里克·布鲁尔在2000年的分布式计算原理研讨会(PODC)上提出的一个猜想。 在2002年,麻省理工学院(MIT)的赛斯·吉尔伯特和南希·林奇发表了布鲁尔猜想的证明,使之成为一个定理。
### 什么是CAP定理(CAP theorem)
在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
*
一致性(Consistency) (等同于所有节点访问同一份最新的数据副本)
*
可用性(Availability)(每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据)
*
分区容错性(Partition tolerance)(以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。)
### 分区容错性(Partition tolerance)
理解CAP理论的最简单方式是想象两个节点分处分区两侧。允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质。
*
P指的是分区容错性,分区现象产生后需要容错,容错是指在A与C之间选择。如果分布式系统没有分区现象(没有出现不一致不可用情况) 本身就没有分区 ,既然没有分区则就更没有分区容错性P。
*
无论我设计的系统是AP还是CP 系统如果没有出现不一致不可用。 则该系统就处于CA状态
*
P的体现前提是得有分区情况存在
> 文章来源:[维基百科CAP定理](https://zh.wikipedia.org/wiki/CAP%E5%AE%9A%E7%90%86)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录