CAP理论与BASE理论

CAP理论

    CAP理论在分布式系统中,Consistency(一致性)Availability(可用性)Partition tolerance(分区容错),只能满足其中两项。



红色部分观点只是个人为了便于理解CAP所作出的一些说法,例如:强可用性、强分区容错。

注意:
Consistency(一致性):
  这里的一致性是强一致性,表示在任意时刻,什么时候读到的数据都和最后一次写的值相等。
  
Availability(可用性):
  同样这里的可用性也是强可用性,表示在任何时候,分布式系统中提供服务的节点都能在一定的时间内做出响应,超出了这个时间就认为不满足强可用性。
  
Partition tolerance(分区容错):
  与上两者一样,这里的分区容错也是强分区容错,表示在分布式系统中无论我们的部署的服务节点在什么子网中,都要能够保证节点之间能够正常通信。
  例如:A节点在中国,B节点在国外,A节点向B节点发送数据,由于中国有墙,A节点和B节点不能正常通信,我们就认为不满足P。
  
总结一下:
  C表示数据的状态。
  A表示数据在传输过程中消耗的时间,可以认为表示时间。
  P表示数据在空间上传输是否能够正常,可以认为是空间。
  
由于分布式系统的特点,包括我们客户端和服务端要满足正常通信,所以认为P是必须要成立的。



  其实我认为,并不能够在真正的意义上达到CAP。就像P所描述的一样,网络传输目前来说必须要有介质才能通信,如果中间的介质都无效了,就达不到P。
  所以我觉得没有真正意义上的完全CAP,就像是永动机一样。但一般我们还是会说相对满足CP,AP或者说CA。

那我们如何选择CP,AP呢?或者说难道满足CP就不去满足A,满足AP就不去满足C了吗?

答案:BASE理论



BASE理论

     BASE理论是前辈们对大规模分布式系统的实践总结,用于权衡CAP。



BASE理论分为三部分

基本可用(Basically Available)

     基本可用是指在分布式系统发生故障的时候,系统不能够在规定的时间内做出应答,但是他能够给出应答,只是不能够在规定的时间内满足,我们允许它损失部分可用性来保证它的可用性。
 
 打个比方说:你房间里有五个灯,而隔壁房间的五个灯都坏了,你把你房间的一部分灯换到隔壁房间,隔壁房间就不至于黑不溜秋的,虽然比起之前五个灯要暗一些,但最起码能够看到。

像现在电商平台为了应对访问量激增的情况,都会对部分用户做降级页面引导。


软状态(Soft state)

     软状态是指在允许系统在运行的过程可以出现中间状态,但是该状态不会影响系统整体的可用性。
例如:
 我需要去舞台上演出,但是我在演出之前由于一些原因,我的服装弄脏了,没有办法演出了,而我去借了一套服装,顺利的完成了演出。
 
例子中服装虽然出现了一些问题,但是演出还是顺利进行了,中间服装的状态没有影响到演出的顺利进行。


最终一致性(Eventual Consistency)

     最终一致性可以理解成数据在经历不同节点的处理后,最后的结果保持一致。

例如:
 与分布式事务中事务的最终一致性一样,假设有两个事务A和B,事务A的执行结果是true,事务B的执行结果是false,但经过事务协调者的协调后,最终两个事务的执行结果都认为是false。





总结:
 CAP的选择还是取决于项目对那一个点的需求比较高,在结合CAP和BASE这些概念来进行选择到底是选择AP还是CP。





以上描述仅仅是个人理解,不喜勿喷,谢谢。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值