天天看点

Base理论是什么?之前也聊到过CAP理论

Base理论是什么?之前也聊到过CAP理论

基于标题的CAP理论,我们再升华一个新的理论--BASE理论;

其实CAP理论和BASE理论是有因果关系的;

通俗的来讲,我们知道CAP理论中,三角关系,在同时共存的情况下,我们只能实现2/3的要求;

那么当不同的分布式系统选择的组合情况下,那么将也会有不同的现象;

那么我们都知道,对于CAP理论,我们更多的会考虑P的选择,然后再去选择CA中的其一,因为对于分布式来说,如果分区容错性都不考虑了,那么只能回归到单体服务的架构模型上了。

那么对于C(一致性)和A(可用性)选择其一;

那么有不同的选择,那么就会产生,对于结果就不同;

那么在这里,我们先科普3个关键词:

***强一致性**:就是指某一时刻,数据是一致的,这个怎么理解呢?就好比有一个学生A更新了一条数据为1;那么当ABC学生去访问这条数据的时候,那么3个学生所获取到的数据都是1;这就是强一致性*

***弱一致性**:就是当且A学生修改数据为1;那么这个时候,数据库系统不能保证ABC数据获取到这条数据都是1;在一定时间内,所有学生获取到这条数据并不是1,可能是其他值;这就是弱一致性;*

***最终一致性**:那么最终一致性本质上是基于弱一致性模型的升华概念;同样学生A修改数据为1,那么其他学生读取的数值可能也不是1,但是在最终的读取操作中,那么都会获取到最新的数据1;也就是说“不一致的时间窗口”长度依赖于一些系统其他问题,例如系统执行卡顿,CPU负载,主从同步问题;都可能会增加不一致性的时间窗长度,但是最终我们获取到的数据就是一致的。*

那么科普了三个名称,我们就继续说说BASE中是指什么:

基本可用(Basically Available)

软状态(Soft state)

最终一致性(Eventual Consistency)

那么这三种特性,到底怎么理解呢?

基本可用,这么理解,保证基本上的可用性即可,也就是说,对于基本可用特性而言,它不关心整体系统的高可用,只需要保证核心业务的可用即可;通常来说,我们在系统限流,保护这种操作上,我们会出现短暂的系统不可用状态,例如断路器开启,那这个时候,部分服务暂停服务了。

软状态?这个这么理解吧,就是说在数据中,可能会存在中间状态。通俗的来讲,就是在节点的副本(从节点)上会有暂时的不一致。通俗的来讲解一下就是,数据上可能会存在中间情况,对于我们"一致性"而言,就是“原子不可分割,要么都执行成功,要么都执行不成功”,这可以理解为一种“硬状态”;相较而言,就会有一种“软状态”,就好比,一篇文章点赞数为1002,这个时候,你点赞了,但是对于其他用户而言,可能会看到点赞数还是1002;过了一段时间,就会变成1003;

最终一致性,这个其实在上面已经描述过了,也就是说,在不同节点中,数据可能会出现短暂的不一致现象,那么这种短暂不一致性,系统也是容许的。

我们举个例子来说,加入不同的银行间转账,我从我的中国银行账户中转10000元到中国招商银行的账户中;那么就会涉及到两个账户的金额变更,中国银行-10000;招商银行+10000;那么在用户角度看,我们会有一个操作“2小时内到账”,“24小时内到账”,这本质上就是一种弱一致性的体现,也就是说,在某段时间间隔内,我们的中国银行-10000;但是招商银行并没有+10000;但是在2小时后,24小时后,必须到达到一种现象:中国银行-10000;招商银行+10000;或者说转账失败了,那么两者都恢复原状;

那么对于Base理论的核心,就是最终一致性,对于系统架构设计而言,我们需要考虑到数据的最终一致性,而不是强一致性,如果过分考虑强一致性,那么对于系统的高可用,可伸缩性就会下降;

所以我们需要考虑的是最终一致性的要求,但是最终一致性存在,那么就会存在上述所描述的时间窗口;我们的目的是为减少时间窗口的长度,加快一致性的同步;从这方面考虑,那么就会兼容用户体验和数据一致性;