目录

分布式理论 CAP + Base

简介

在分布式系统的设计中,分布式系统有三个指标 CAP,但是没有一种设计可以同时满足 CAP (一致性,可用性,分区容错性 )3个特性,只能满足其中 2 个

CAP

简介

CAP 描述
C 一致性 Consistency,一致性 强调的是 分布式系统中各个节点之间的数据一致性;不管访问哪个节点,返回的数据都是一致的,否则节点不可用(拒绝服务)
A 可用性 Availability,可用性 强调的是 分布式系统中各个节点都能正常被访问,正常响应请求,但是无法保证 返回数据的一致性:也就是各个节点正常访问但是节点之间数据不一定一致
P 分区容错性 Partition tolerance,节点网络故障,不可避免,当节点间出现任意数量的消息丢失或高延迟(网络障碍)的时候,系统仍然可以继续提供服务

当节点出现的数据不一致时的处理方式不同

组合

组合 描述
CA 一致性 + 可用性,不存在,P 一定得有,分布式系统下,网络故障网络延迟必然存在,
CP 一致性 + 分区容错性;数据强一致性,返回的都是绝对一致的数据,不一致的时候会读取失败(拒绝提供服务)
AP 可用性 + 分区容错性:服务高可用,但是不能保证数据一致性,要保证数据一致性,服务就不一定可用

Base

Base:基本可用(Basically Available)和最终一致性(Eventually consistent)

CAP 规则下 AP 模型 的延伸,AP + Base,实现 服务高可用 + 数据最终一致性

最终一致性:也就是允许节点之间的数据出现短暂的数据不一致情况,但是节点高可用

为什么 CAP 不能同时满足?

在分布式系统中,节点与节点之间通过网络通信,网络通信必然存在:网络延迟、网络故障;

因此 CAP 中,P (分区容错性)必须存在, 其次,CA 不可能同时存在,因为分布式系统下,数据同步存在延迟,无法实时一致性,存在某一刻不一致,那么数据不一致的情况下:

● 节点要么满足 C,数据不一致,拒绝服务

● 节点要么满足 A,服务可用,但是数据不一致

综上所述:P 必须,C 和 A 只能选一个,也就是 组合: CP、AP

Redis 采用的分布式理论 CAP + Base

redis 采用的是 AP + Base 模型,也就是满足 分区容错性 和 服务高可用 ,保证数据的最终一致性