初探CAP定理及其不可兼得性

一、对CAP定理的理解

CAP定理是分布式系统设计的核心理论。由Eric Brewer在2000年提出,后由Gilbert和Lynch在2002年严格证明。分别是指Consistency一致性,Aavailability可用性,Partition Tolerance分区容忍性。

  • Consistency一致性,是指数据在多个副本间是保持一致的。或者说节点在同一时间看到相同的数据,即强一致性。
  • Availability可用性,指每个请求都能得到非错的响应。非错是指不保证获得的数据是最新的。
  • Partition Tolerance是指当分布式系统出现网络分区时,仍然能提供对外服务。

二、为什么说CAP不可兼得?

Cap理论表示一个分布式系统不可能同时满足不能CAP三个条件。分布式系统一定要满足Partition Tolerance分区容忍性。如果不满足p,也就是不存在分区,那么就意味着要将所有的服务都放在一个服务器上,这时这个系统也不能称为分布式系统了。

C和A权衡和选择最主要看要达到什么样程度的一致性。

如果要达到强一致性,那么就必须满足C;如果要达到一般一致性,更多考虑可用性,那么就更多要考虑A。

而C和A是不可能同时共存的。如果要保证C强一致性,因为主节点与副本之间存在数据同步的过程,必然导致系统的阻塞,这时候的系统处于不可用的状态即不满足A。

如果要保证A可用性,则不允许系统存在阻塞的情况,此时会出现访问到旧数据的情况,即会导致短暂的不一致。

综合考虑下来。总共只有两种模型存在,即CP和AP。

相关推荐
蜂蜜黄油呀土豆5 天前
分布式基础知识:分布式事务完整解析(背景、模式、协议、优缺点)
数据库·微服务·分布式事务·架构设计·分布式系统·2pc/3pc·tcc/saga
only-qi5 天前
分布式理论的认知重构:CAP 与 BASE 的真相、边界与实践逻辑
分布式·cap·base
递归尽头是星辰10 天前
服务治理三维实战:从架构理论到规模适配,解决六大核心复杂性
微服务·服务治理·分布式系统·高可用架构·java 架构·大规模服务
梁萌11 天前
分布式事物seata的AT模式实战
分布式·微服务·实战·seata·一致性·事物
ん贤12 天前
高可靠微服务消息设计:Outbox模式、延迟队列与Watermill集成实践
redis·微服务·云原生·架构·消息队列·go·分布式系统
蜂蜜黄油呀土豆14 天前
RocketMQ 详解:从异步解耦到存储与消费全链路解析
消息队列·rocketmq·分布式账本·分布式系统·幂等设计
settingsun122519 天前
分布式系统架构:百万并发系统设计
云原生·架构·分布式系统
喝养乐多长不高1 个月前
SpringCloud:Eureka和负载均衡
spring cloud·eureka·服务发现·负载均衡·cap·服务注册
无心水1 个月前
【中间件:Redis】5、Redis分布式锁实战:从基础实现到Redisson高级版(避坑指南)
redis·分布式·中间件·redisson·后端面试·redis分布式锁·分布式系统
青云交1 个月前
Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用
数据传输·数据压缩·分布式系统·智能医疗·医疗影像·java 大数据·jpeg2000