分布式理论 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 模型,也就是满足 分区容错性 和 服务高可用 ,保证数据的最终一致性