✨五分钟理解CAP理论✨


前言

分布式数据存储系统 中,有一个绕不开的理论模型,叫做CAP 定理,又称为布鲁尔定理 ,由计算机科学家Eric Brewer 提出,本文将以最简单的例子来说明CAP 定理的理论模型,最多只花你五分钟。

正文

一. 概念速览

CAP定理由如下三部分组成。

  1. CConsistency),一致性。每次对数据的读取都是最近一次写入的内容;
  2. AAvailability),可用性。每次请求读取数据都能成功读取到数据,但读取到的数据不保证总是最近一次写入的内容;
  3. PPartition tolerance),分区容错性。网络节点之间可能发生网络故障从而导致消息丢失,但这不会影响系统的运行。

二. 概念说明

CAP 里面的CA 都比较好理解,P 好像有点抽象,其实这么理解就对了,P的意思就是允许存在网络故障。

对于一个分布式数据存储系统来说,如果没有网络故障 ,那么CAP三个特性都是可以满足 的。

但分布式系统的 网络故障一定是不可避免的 ,所以P 是一定要满足的,并且此时CA 只能满足一个,因此就出现了CP 模型和AP模型。

假设我们现在有如下这么一个分布式数据存储系统。

当数据同步因为网络问题而无法实现时,下面来分别看下CP 模型和AP模型的行为是什么。

1. CP模型

CP 模型下,因为要满足C 的一致性,所以一旦网络出现问题导致数据同步失败,此时数据的读取就会被拒绝从而导致读取超时或失败,这种情况下,系统变得不可用,即A不满足。

2. AP模型

AP 模型下,因为要满足A 的可用性,所以就算网络出现问题导致数据同步失败,此时数据的读取还是能够成功读取到数据,但这种情况下节点间的数据是不同的,即C不满足。

总结

CAPC 表示一致性,要求节点间的数据要完成数据同步。

CAPA 表示可用性,要求系统对外随时都能提供数据读取的服务。

CAPP 表示分区容错性,要求系统能够在存在网络故障的情况下运行。

因为分布式系统中网络故障是一定会存在的,所以P 是一定要满足的,并且CA 是一定无法同时满足的,此时就形成了CP 模型和AP模型。

CP 模型在网络发生故障时会拒绝对外提供数据读取服务,此时A也就是可用性无法满足。

AP 模型在网络发生故障时还是会对外提供服务,但节点间的数据会不一致,此时C也就是一致性无法满足。

Nacos 中,对于临时实例 的服务实例信息获取,Nacos 采用AP 模型,具体的实现采用Distro 协议,而对于持久化实例Nacos 采用CP 模型,具体的实现采用SOFAJRaft协议。

相关推荐
风象南4 分钟前
SpringBoot自定义RestTemplate的拦截器链
java·spring boot·后端
Victor3561 小时前
MySQL(138)如何设置数据归档策略?
后端
Victor3561 小时前
MySQL(137)如何进行数据库审计?
后端
白仑色4 小时前
Spring Cloud Gateway 实战指南
spring boot·微服务·路由转发·限流熔断
C182981825758 小时前
分布式ID 与自增区别
分布式
FreeBuf_9 小时前
黄金旋律IAB组织利用暴露的ASP.NET机器密钥实施未授权访问
网络·后端·asp.net
张小洛10 小时前
Spring AOP 是如何生效的(入口源码级解析)?
java·后端·spring
why技术11 小时前
也是出息了,业务代码里面也用上算法了。
java·后端·算法
码字的字节12 小时前
深入解析Hadoop架构设计:原理、组件与应用
大数据·hadoop·分布式·hadoop架构设计
白仑色12 小时前
完整 Spring Boot + Vue 登录系统
vue.js·spring boot·后端