首 页IT知识库翔宇问吧收藏内容
当前位置:翔宇亭IT乐园IT知识库网络技术网络基础

分布式系统的CAP原理

减小字体 增大字体 作者:本站  来源:本站整理  发布时间:2022-06-25 18:36:44

CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性、数据可用性,分区耐受性(系统具有网络分区的伸缩性)这三个条件。

一致性是指更新操作成功后,所有节点在同一时间的数据完全一致。

可用性是指用户访问数据时,系统是否能正常响应时间内返回数据。

分区容错性是指分布式系统在遇到某个节点或网络分区故障时,仍然能够对外提供满足一致性和可用性的服务。

CAP理论基本可以定义为,以上的三个指标不能全部做到,即只能同时满足CA, CP, AP。

CAP理论

1. 分区容错性

分布式系统存在多个子系统,每个子系统子网络可以叫做区。各个节点之间的数据需要同步,子系统之间也需要通信。而分区容错指的是某个节点出现故障,而整个服务不会受到大的影响。

若一个服务为单节点服务,那么它可以说是满足CA。

C表示任何时间点读取的数据都是相同的,保证了一致性。

A表示只要有节点可以用,那么就可以提供服务

由于是单节点服务,那么总是满足CA的条件。

而在分布式系统中,大多时候,单节点出问题之后,我们是需要保障整个系统都是可以使用的。所以可以认为CAP中的P总是需要成立的。

2. 一致性

一致性指的是分布式系统中所有节点在同一时间访问时,返回数据完全一致。

从客户端看,就是并发访问时获取数据的一致性。

服务端来看,就是数据节点之间的同步问题,即节点之间通过通信保持数据的实时更新。

也有对一致性分成强,弱以及最终一致性三类。

强一致性 要求数据更新后,对于其他节点,必须立马同步,并可见。

弱一致性 可以允许在数据更新后,部分节点不能访问到最新的数据。

最终一致性 要求一段时间内不能访问最新数据,但是一段时间后,分布式系统的所有数据需要统一

3. 可用性

相对来说,可用性比较容易理解,就是说任何时候,我们都可以从系统中获取数据。系统可以提供正常的用户服务。不会出现操作失败,访问超时等情况

CA without P

如果不要求 Partition Tolerance,即不允许分区,则强一致性和可用性是可以保证的。其实分区是始终存在的问题,因此 CA 的分布式系统更多的是允许分区后各子系统依然保持 CA。

CP without A

如果不要求可用性,相当于每个请求都需要在各服务器之间强一致,而分区容错性会导致同步时间无限延长,如此 CP 也是可以保证的。很多传统的数据库分布式事务都属于这种模式。

AP without C

如果要可用性高并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了实现高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。

为什么没办法同时达到CAP呢?

CAP是没办法同时达到的,要么是CP,要么是CA,要么是AP,是不可能存在CAP的,因为如下:假如分布式情况下数据库1和数据库2,用户上传一张图片必须同时同步成功才满足一致性(Consistency),并且用户可以看到信息也满足了(可用性),当突发场景数据库1和数据库2突然间因为网络断电原因,某一个直接宕机,那还有另外一个数据库可以提供分区容错性,但是这时候已经无法满足一致性了,所以这种没办法实现。

参考资料:

51CTO:https://network.51cto.com/article/712293.html

知乎:https://zhuanlan.zhihu.com/p/20399316

CSDN博主「WD技术」:https://blog.csdn.net/qq_44761854/article/details/123269836

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2022 biye5u.com. All Rights Reserved.