前言
很多文章说BASE理论是CAP理论的演进,这种说法先存疑。
CAP理论在分布式系统的适用场景在《如何理解分布式系统下的CAP理论?》已经很明确了:对共享数据的互连节点集合的读写。比如Redis、Kafka、Zookeeper、Nacos这样的中间件。
但是大部分开发人员所开发的分布式系统主要是业务应用,显然 CAP 理论不适用的。
所以,个人认为,是因为CAP理论在分布式系统中的适用场景太过局限,才有的BASE理论。
什么是BASE理论?
什么是BASE理论?
BASE是Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的缩写,也是BASE理论的三个核心概念。
这三个核心概念是我们在开发分布式应用时很自然的就会应用,通过下面的描述看看你们是否也是这么运用的。
Basically Available(基本可用)
基本可用是指:分布式系统在出现不可预知故障的时候,允许损失部分可用性。例如:
- 响应时间上的损失。正常情况下,0.5秒之内返回给用户结果,但由于出现故障,会有重试等操作,3秒内返回也可以接受。
- 系统功能上的损失:正常情况下,用户可以顺利完成每一笔订单,但是在一些流量高峰的时候,为了保护系统的稳定性,部分用户可能会被引导到一个降级页面。
Basically Available(基本可用)没有 CAP 中的可用性定义那么严格(在一定时间内可以得到正确的响应)。
Soft state(软状态)
软状态是指:允许系统中的数据存在中间状态,这种中间状态的存在不会影响数据的整体一致性。
例如:在 A 账户向 B 账户交易100的场景中,因为不会很快交易完成或者存在交易失败的情况,所以不会直接扣减 A 账户的100到 B 账户上,而是先把 A 账户的可用额度扣减到冻结额度上。
这样的话,即使在交易进行中,也不会影响 A 账户的使用(如果 A 账户可用余额足够,依然可以继续交易)。
Eventually consistent(最终一致性)
最终一致性是指:在经过一段时间后,软状态的数据达到最终一致的状态。
例如:在冻结 A 账户100后,如果失败那就扣减A账户冻结的100至可用余额中。如果交易成功将 A 账户冻结的100扣减,并添加至 B 账户的可用余额。最终达到一致性。
总结
BASE理论更符合我们在开发分布式应用时的一些设计理念。
我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!