BASE理论
BASE是Basically Avaliable(基本可用),Soft-state(软状态)和Eventually Consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性C和可用性A权衡的结果,其来源是对大规模互联网系统分布式事件的总结,是基于CAP定理逐步演化而来的,它大大降低了我们对系统的要求
BASE理论的核心思想
即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性
也就是牺牲数据的一致性来满足系统的高可用性,系统中一部分数据不可用或者不一致时,仍需要保持系统整体”主要可用“
BASE理论本质上是对CAP的延伸和补充,更具体地说,是对CAP中AP方案的一个补充,AP 方案只是在系统发生分区的时候放弃一致性,而不是永远放弃一致性。在分区故障恢复后,系统应该达到最终一致性。这一点其实就是 BASE 理论延伸的地方。
BASE 理论三要素
1. 基本可用
基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性,这绝不等价于系统不可用
什么是允许损失部分可用性呢?
- 响应时间上的损失:由于系统出现故障,处理请求时间增大
- 系统功能上的损失:正常情况下,用户可以使用系统的全部功能,但是由于系统访问量突然剧增,系统的部分非核心功能无法使用
2,软状态
软状态值允许系统中的数据存在中间状态(CAP理论中的数据不一致),并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时
3,最终一致性
最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够到达一致,而不需要实时保证数据的强一致性
一致性的3种级别
- 强一致性:系统写入了什么,读出来的就是什么
- 弱一致性:不一定可以读到最新写入的值,也不保证多少时间之后读取到的数据是最新的,只是会尽量保证某个时刻到达数据一致的状态
- 最终一致性:弱一致性的升级版,系统会保证在一定时间内达到数据一致的状态
一般是最终一致性级别,但是对数据一致要求十分严格的场景比如银行转账要求强一致性