分布式中的CAP及Base理论

2023-09-24 7 0

一、CAP理论

     CAP 理论可以表述为,一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)这三项中的两项。

一致性:某些操作之后(比如新增或更新操作),所有节点在同一时间的数据完全一致。

可用性:服务一直保持正常运行,并且可以正常响应用户的请求,即任何时候,读写都是成功。

分区容忍性: 大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容忍性指系统容忍网络出现分区,并且在遇到某节点或网络分区之间网络不可达的情况下,仍然能够对外提供满足一致性和可用性的服务。

 

cap

由于不能保证节点之间100%都能正常通讯,所以在分布式系统中分区容忍性是需要满足的。当满足分区容忍性的时候,一致性和可用性不能同时成立。原因如下:由于节点通讯可能失败,如下图所示,当Client A向Server 1和Server 2写数据时,Server2出现异常,如果满足一致性,则Server 1也需要rollback,即写操作必须同时成功或者同时失败,此时就不能满足可用性。当此时满足可用性时就会出现数据不一致的情况,即不能满足一致性。

cap

 

 

CP 和 AP 架构的取舍

CP 架构:对于 CP 来说,放弃可用性,追求一致性和分区容错性。

我们熟悉的 ZooKeeper,就是采用了 CP 一致性架构,ZooKeeper 是一个分布式的服务框架,主要用来解决分布式集群中应用系统的协调和一致性问题。其核心算法是 Zab,所有设计都是为了一致性。在 CAP 模型中,ZooKeeper 是 CP,这意味着面对网络分区时,为了保持一致性,它是不可用的。

 

AP 架构:对于 AP 来说,放弃强一致性,追求分区容错性和可用性,这是很多分布式系统设计时的选择,后面的 Base 也是根据 AP 来扩展的。

 Eureka是采用了AP架构,Eureka 是 Spring Cloud 微服务技术栈中的服务发现组件,Eureka 的各个节点都是平等的,几个节点挂掉不影响正常节点的工作,剩余的节点依然可以提供注册和查询服务,只要有一台 Eureka 还在,就能保证注册服务可用,只不过查到的信息可能不是最新的版本,不保证一致性。

 

 

二、Base 理论

 

Base 是三个短语的简写,即基本可用(Basically Available)、软状态(Soft State)和最终一致性(Eventually Consistent)。

 

 

 

Base 理论的核心思想是最终一致性,即使无法做到强一致性(Strong Consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual Consistency)。

 

基本可用:基本可用强调了分布式系统在出现不可预知故障的时候,允许损失部分可用性,相比正常的系统,可能是响应时间延长,或者是服务被降级。

 

软状态:软状态则是允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。与软状态相对应的是事务(ACID)中的原子性。

 

最终一致性:数据不可能一直是软状态,必须在一个时间期限之后达到各个节点的一致性,在期限过后,应当保证所有副本保持数据一致性,也就是达到数据的最终一致性。

 

三、CAP 及 Base 的关系

 

Base 理论是在 CAP 上发展的,CAP 理论描述了分布式系统中数据一致性、可用性、分区容错性之间的制约关系,当你选择了其中的两个时,就不得不对剩下的一个做一定程度的牺牲。

Base 理论则是对 CAP 理论的实际应用,也就是在分区和副本存在的前提下,通过一定的系统设计方案,放弃强一致性,实现基本可用,这是大部分分布式系统的选择,比如 NoSQL 系统、微服务架构。

 

文章主要整理自以下课程,如果想系统学习分布式技术原理与实战,可点击:

https://skaygo.blog.csdn.net/article/details/113850871

代码编程
赞赏

相关文章

Google以21亿美元的价格收购了健康追踪器Fitbit
增长模型拆解:分享有礼裂变玩法的底层逻辑与细节设计
怎么做好B端数据运营?
基于两个实际案例,分享自己2020年运营的一些心得
数字化营销时代:企业如何从“推时代”进阶“拉时代”
谷歌三星杀进来了,高通为啥一点不怕?