当前位置:网站首页>分布式CAP理论
分布式CAP理论
2022-07-04 06:01:00 【詹Sir(开源字节)】
CAP理论是分布式系统、特别是分布式存储领域中被讨论的最多的理论。其中C代表一致性 (Consistency),A代表可用性 (Availability),P代表分区容错性 (Partition tolerance)。CAP理论告诉我们C、A、P三者不能同时满足,最多只能满足其中两个。
CAP 理论简介
CAP理论是分布式系统、特别是分布式存储领域中被讨论的最多的理论。其中C代表一致性 (Consistency),A代表可用性 (Availability),P代表分区容错性 (Partition tolerance)。CAP理论告诉我们C、A、P三者不能同时满足,最多只能满足其中两个。
CAP 三选二
一致性 (Consistency)
: 一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据。所有节点访问同一份最新的数据。可用性 (Availability)
: 对数据更新具备高可用性,请求能够及时处理,不会一直等待,即使出现节点失效。分区容错性 (Partition tolerance)
: 能容忍网络分区,在网络断开的情况下,被分隔的节点仍能正常对外提供服务。
对CAP理论的理解
理解CAP理论最简单的方式是想象两个副本处于分区两侧,即两个副本之间的网络断开,不能通信。
- 如果允许其中一个副本更新,则会导致数据不一致,即丧失了C性质。
- 如果为了保证一致性,将分区某一侧的副本设置为不可用,那么又丧失了A性质。
- 除非两个副本可以互相通信,才能既保证C又保证A,这又会导致丧失P性质。
一般来说使用网络通信的分布式系统,无法舍弃P性质,那么就只能在一致性和可用性上做一个艰难的选择。
CAP理论的表述很好地服务了它的目的,开阔了分布式系统设计者的思路,在多样化的取舍方案下设计出多样化的系统。在过去的十几年里确实涌现了不计其数的新系统,也随之在一致性和可用性的相对关系上产生了相当多的争论。
CAP理论深入理解
在CAP理论提出十二年之后,其作者又出来辟谣。“三选二”的公式一直存在着误导性,它会过分简单化各性质之间的相互关系:
- 首先,由于分区很少发生,那么在系统不存在分区的情况下没什么理由牺牲C或A。
- 其次,C与A之间的取舍可以在同一系统内以非常细小的粒度反复发生,而每一次的决策可能因为具体的操作,乃至因为牵涉到特定的数据或用户而有所不同。
- 最后,这三种性质都可以在程度上衡量,并不是非黑即白的有或无。可用性显然是在0%到100%之间连续变化的,一致性分很多级别,连分区也可以细分为不同含义,如系统内的不同部分对于是否存在分区可以有不一样的认知。
所以一致性和可用性并不是水火不容,非此即彼的。Paxos、Raft等分布式一致性算法就是在一致性和可用性之间做到了很好的平衡的见证。
如若转载,请注明出处:开源字节 https://sourcebyte.cn/article/176.html
边栏推荐
- How to choose the middle-aged crisis of the testing post? Stick to it or find another way out? See below
- 配置交叉编译工具链和环境变量
- SQL injection - injection based on MSSQL (SQL Server)
- QT QTableWidget 表格列置顶需求的思路和代码
- Take you to quickly learn how to use qsort and simulate qsort
- Arc135 C (the proof is not very clear)
- 如何避免 JVM 内存泄漏?
- 复合非线性反馈控制(二)
- 实用的小工具指令
- Nexus 6p从8.0降级6.0+root
猜你喜欢
JSON web token -- comparison between JWT and traditional session login authentication
JS how to convert seconds into hours, minutes and seconds display
Kubernets first meeting
(4) Canal multi instance use
Grounding relay dd-1/60
BUU-Reverse-easyre
C # character similarity comparison general class
如何展开Collapse 的所有折叠面板
Uninstall Google drive hard drive - you must exit the program to uninstall
Review | categories and mechanisms of action of covid-19 neutralizing antibodies and small molecule drugs
随机推荐
How to get the parent node of all nodes in El tree
C语言中的函数(详解)
JS arguments parameter usage and explanation
JS flattened array of number shape structure
Install pytoch geometric
How to choose the middle-aged crisis of the testing post? Stick to it or find another way out? See below
检漏继电器JY82-2P
Steady! Huawei micro certification Huawei cloud computing service practice is stable!
js如何将秒转换成时分秒显示
QT 获取随机颜色值设置label背景色 代码
509. 斐波那契数、爬楼梯所有路径、爬楼梯最小花费
BUU-Crypto-[GUET-CTF2019]BabyRSA
ES6 modularization
Halcon图片标定,使得后续图片处理过后变成与模板图片一样
How to expand all collapse panels
BUU-Reverse-easyre
JS扁平化数形结构的数组
1.1 history of Statistics
Actual cases and optimization solutions of cloud native architecture
LC weekly 300