分布式理论CAP与BASE模式

在上篇文章中,想到一个问题就是redis与zookeeper在CAP理论中的不同之处?
今天就整理一份CAP与BASE理论,然后再讨论一下上面的这个问题;

1. 分布式理论-CAP

CAP理论指的是一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。参考下图(图片来源于网络)
在这里插入图片描述
Consistency
Consistency:一致性,数据在多个实例之间能够保证数据的一致性;
在这里插入图片描述
相当于集群中的每个节点的数据状态是一致的,如果用户1设置的是value3,而用户2读取到的是value2,则就产生了数据不一致问题,不满足一致性要求了;

Availability
Availability:可用性,表示只要收到用户请求,服务器就必须做出响应;
在这里插入图片描述
用户只要向s1或者s2发出请求,不管数据是否一致,都必须要返回数据;

Partition tolerance
Partition tolerance:分区容错性,首先说一下这个分区:假如有两个机房:A区和B区,A区节点互通,但是无法与B区中的节点连通时,就导致了整个服务被切分成了两个独立的区;
分区容错性:在遇到任何网络分区故障时,仍然能够对外提供满足一致性和可用性的服务,也就是支持容忍被服务被分布A区和B区独立的情况;
在这里插入图片描述
分区1和分区2网络不通的时候,可以各自提供服务(相当于被切分成了两份服务);

1.1 CA without P

两个问题:为什么CA不可同时满足?为什么必须要有P?
为什么CA不可同时满足?
在这里插入图片描述
比如上图这种场景:
用户1在写入value2到s1时,s1还未将数据同步到s2,此时用户2从s2读取数据,读取到未更新的value1;(满足可用性,不满足可用性)
用户1在写入value2到s1时,s1将数据同步到s2期间,禁止s2接收请求,s1与s2数据一致后,再允许s2接收请求;(满足一致性,不满足可用性);
所以无法做到CA;

为什么必须要有P?
分区容错性P其实就是每个服务都会部署多个节点,这样就可以保证此服务的一个节点挂了之后,此服务的其他节点依然可以响应,这就是分区容错性。如果不能够容忍区容错性,那就相当于有一个节点挂了之后,整个服务都不可用;这对于分布式系统来说,肯定是不合理的;

1.2 CP without A

放弃可用性,但必须保证数据的一致性,比如zookeeper的设计就是基于此模式;

1.3 AP wihtout C

放弃一致性,但必须保证可用性,允许数据出现某种情况的不一致,但必须保证可用性,比如一些nosql;

2. 分布式理论-BASE

什么是BASE?
BASE理论是Basically Available(基本可用),Soft State(软状态)和Eventually Consistent(最终一致性)的缩写,BASE的核心思想就是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

2.1 基本可用(Basically Available)

是当服务出现问题时,能保证核心功能可用,比如双11购物:不允许修改收货地址等,但能保障下单整体流程的可用;

2.2 软状态(Soft State)

系统中数据可以存在中间状态,比如订单正在支付,状态可以是支付中,数据同步时可以是同步中等;

2.3 最终一致性(Eventually Consistent)

最终一致性强调的是系统中的数据副本,在经过一段时间的同步后,最终能达到一致的状态。如订单的"支付中"状态,最终会变 为“支付成功”或者"支付失败",使订单状态与实际交易结果达成一致,但需要一定时间的延迟、等待。

总之:BASE通过牺牲强一致性来获得可用性,并允许数据段时间内的不一致,但是最终达到一致状态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值