CAP介绍及思考
创始人
2025-05-29 16:11:03
0

一、定义

CAP定理:前提是分布式系统中,CAP三个只能满足两个,不能同时满足三个特性。

1.1 CAP

  • Consistency (一致性):所有节点在同一时间的数据都是完全一致的。
  • Availability (可用性):服务一直是可用的。
  • Partition Tolerance (分区容错性): 分布式系统在某个节点或分区故障时,仍然能对外提供满足一致性或可用性的服务。
    在这里插入图片描述

二、 CAP为何不能同时满足

首先说分区容错性,基本上分布式系统都要满足这个,否则当某个节点挂了,就不对外提供服务了,那还能叫分布式系统么,挂一个就都挂了,那就是单机系统啊,分布式就没意义了。

好了,那么如果一般情况下都要满足分区容错性,那么就看看一致性和可用性能不能再同时满足。

比如说有3台机器ABC,正常情况下,3台机器互相数据同步,对外提供服务

如果某一时刻,A机器和BC机器断开了,那么应该怎么办?

要么就是继续都对外提供服务,那么此时就会出现ABC三台机器对外数据不一致的情况,这就是满足了可用性,但不满足一致性

另一种情况就是一旦发现机器不可用了,就暂停对外服务,直到ABC互相连通,再对外提供服务,这就是满足了一致性,但不满足可用性了,因为暂定服务这段时间服务就不可用了

所以说这种情况下,同时要满足可用性和一致性是不可能的,具体舍弃哪个,得看业务情况

三、思考

上面举的例子,其实并不能很好解释为何不能同时满足,看着解释清楚,细想全是漏洞

  1. A和BC断开了,那可以把A踢出集群,让BC仍然保持可用并且数据一致,A一旦离开集群自己就处于不可用状态;
  2. 更新数据时,更新单个节点数据和同步到整个集群,这两个操作放在一个事务里,要成功都成功,要失败都失败,在成功前,访问到的都是旧数据;
  3. A节点恢复后,先同步数据,再接入结群

如果做到以上三点是不是同时满足CAP?

其实并不是,满足以上三点后,也仅仅是CP, 集群一旦被分割成两部分,那么让哪部分保持可用呢?由于互相之间无法通信,只能通过数量来决定,剩余集群节点数量过半的保持可用,少于半数停止服务。这个时候其实不满足A,因为一旦集群宕机数量过半数,集群就无法访问了,而A的要求是一直可用。

C的要求是强一致

CAP不能同时满足最关键的原因是要求都太高了

  • C:强一致
  • A:一直可用
  • P:部分宕机仍可用

在宕机数量不过半的情况下,我觉得是可以同时满足CA的

相关内容

热门资讯

跨境电商高发!多部门共织“天罗... 东方网11月23日消息:11月21日,上海市人民检察院第三分院与上海海关缉私局、上海海警局、上海市第...
法律顾问能处理旅游法律事务吗 在旅游行业蓬勃发展的当下,各类旅游法律事务也日益增多,许多人会疑惑法律顾问是否能处理旅游法律事务。答...
法律顾问能处理哪些法律事务 在当今复杂多变的商业环境中,企业面临着各种各样的法律风险和挑战,法律顾问的重要性日益凸显。那么,法律...
原创 美... 美军的撤离速度印证了威慑效果。“尼米兹”号10月中旬进入南海后,10月26日接连发生两起舰载机坠机事...
王毅:中方绝不允许日本右翼势力... 当地时间2025年11月22日,中共中央政治局委员、外交部长王毅在杜尚别同塔吉克斯坦外长穆赫里丁举行...
上海特大案件曝光!涉案金额超亿... 今年以来,公安部会同金融监管总局开展打击金融领域黑灰产违法犯罪专项工作,对保险等领域违法犯罪进行重点...
关于单方面免签政策常见问题,国... 今天(11月23日),国家移民管理局针对单方面免签政策常见问题进行解答。 1.哪些国家人员可适用单方...
“最快护士”张水华再夺冠 新京报记者 刘锦涵
 制作 葛佳丹 ▲新京报我们视频出品(ID:wevideo) 11月23日,“最...
原创 沉... 在国际关系的复杂舞台上,每一个动作都可能引发连锁反应。近期,高市早苗的发言无疑是这一舞台上的一次重要...