BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE中 :
BA 是 Basically Available (基本可用)基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性。 可以理解为在一个平台中,假设部分出现故障,这个时候系统应该在允许这些故障出现的情况下依旧保持部分功能(应该是核心功能)可以正常使用,另一部分功能出现些许可以允许的问题。
- 响应时间上的损失:正常情况下的搜索引擎0.5秒即返回给用户结果,而基本可用看的搜索结果可能要1秒,2秒甚至3秒(超过3秒用户就接受不了了)
- 功能上的损失:在一个电商网站上,正常情况下,用户可以顺利完成每一笔订单,但是到了促销时间,可能为了应对并发,保护购物系统的稳定性,部分用户会被引导到一个降级页面
S 是Soft state(软状态)
软状态,允许部分节点的数据存在一定的延时,这个延时不影响可用性。 举个例子,就是一个集群中,需要保持所有节点的数据时时刻刻都一致,这是一种强一致性的要求,这个很有可能会造成可用性的问题。 在保证了可用性的的前提下,允许各个节点在数据的一致性操作的时候有一定的延时。
软状态是相对原子性来说的
- 原子性(硬状态) -> 要求多个节点的数据副本都是一致的,这是一种"硬状态"
- 软状态(弱状态) -> 允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延迟
E 是Eventually consistent(最终一致性)
最终一致性很好理解,软状态允许有一定延时,所以这个最终一致含义就是在一定的延时过去之后,所有节点的数据必须保持一致。 相比的假如在更新的同时,所有节点都必须查询到最新的数据,这样的话是一种 强一致性 。 在更新的同时,可以容忍节点查询到的数据不是最新的那么是一种 弱一致性。
最终一致性根据更新数据后各进程访问到数据的时间和方式的不同可以分类为:
二、ACID和BASE的区别
BASE理论首先对于CAP的一种适应妥协和弱化,为了保证可用性,对一致性作出的一些削弱,所以呢可以说BASE是一种反ACID的理论。
- ACID是传统数据库常用的设计理念, 追求强一致性模型。
- BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。
https://blog.csdn.net/crazyhsf/article/details/83352421
https://blog.csdn.net/jarniyy/article/details/93710088