立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 134|回复: 2

[分享] CAP理论中CP和CA场景有什么区别?

[复制链接]
发表于 2024-12-14 17:32 | 显示全部楼层 |阅读模式

登陆有奖并可浏览互动!

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录 手机动态码快速登录

×
比如,在2015年,支付宝的一个机房的网线电缆被挖掘机挖断了,造成全球范围都用不了支付宝。
当时支付宝也做了异地灾备,但为了数据一致性并不敢切换到灾备中心的数据库。
那么这种场景下可以认为支付宝是一个CP的系统,即为了数据一致性,牺牲了可用性;
还是认为支付宝是一个CA的系统,即一处网线断裂就导致整个系统挂掉,不具备分区容忍性?

原文地址:https://www.zhihu.com/question/665488353
楼主热帖
回复

使用道具 举报

发表于 2024-12-14 17:33 | 显示全部楼层
如果把本地机房和异地机房看成是分布式的两个节点,那么他就是CP。
如果认为异地机房不属于分布式系统中的一个履职节点,也就是说异地机房本来也不是设计用来提供服务,仅仅是备份而已。那么相当于支付宝是一个单节点的,这时候再讨论CAP就没有意义了。
为什么一般说P是必选的,因为不选P的意思就是我接受不了分区,分区的意思就是你多个节点中有一部节点硬件或者网络出问题,然而分区在分布式系统中必然可能发生。所以一旦放弃P,其实是在讨论一个单节点系统。
回复 支持 反对

使用道具 举报

发表于 2024-12-14 17:33 | 显示全部楼层
其实CAP可以用一句非常简单的话来描述:
在分布式系统中,一致性和可用性不可兼得。

所以根本就不存在所谓的CA,除非不是分布式系统。P的含义是,系统中的所有节点可以出现非连通图而系统不受影响。

所以说P在分布式系统中是不可被排除的(是必选的),所以A和C只能二选一,这就是上面那句话。

选择C,就是强一致性,如果不连通,那么系统就不可用。
选择A,就是UUID生成算法,不需要系统之间时刻连通。在不能连通之时,理论上存在不一致的可能。
当然很多人根本无法理解什么叫做理论上存在不一致的可能。他们通常认为什么设备ID的唯一性就可以保证UUID的唯一性。但是仔细想想就知道,设备ID的唯一性也是一致性。如果我们的设备在两个不能通信的宇宙生产的,那么设备ID同样不具备理论上的唯一性。

但很多时候,我们的非连通性是短暂的,可恢复的。所以,其实CAP理论除了装逼之外并没有什么实际的指导意义。它只是告诉那些读书少而又想太多的人。无论如何在分布式系统中你不能同时(在同一时刻)满足A和C,这是理论上的不可能,不是什么奇思妙想能解决的。


事实上CAP可以用于非常多的场景。比如说比特币。根据CAP我们可以知道,如果比特币在任意时刻都可以完成交易(A),那么理论上就存在交易数据不一致的问题(C)。反之要交易数据全球唯一,那么比特币就不是在任何时刻都能交易成功。
美国总统大选也是一样,如果选民可以在任何时候投票成功,那么就不能保证任意时刻都能准确的统计出选票。所以投票必须有截止时间,截止时间之后的投票作废,这样才能统计得票数。除非你让所有投票的人都到国会门口去投票。
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

关闭

官方推荐 上一条 /3 下一条

快速回复 返回列表 客服中心 搜索 官方QQ群 洽谈合作
快速回复返回顶部 返回列表