你应该知道的分布式事务之BASE理论
1.为什么BASE理论会出现?
在之前的博文中详解了分布式事务中的CAP理论,Consistency(一致性)、Availability(可用性) 和 Partition tolerance(分区容忍性)。但是我们知道只能三选二,由于互联网公司,分布式架构,必须要满足P也就是好分区容忍性。这就带来如下问题:
互联网公司toC的用户体验性是很重要的。
对于大量用户的APP,系统不可用,每秒都会失去很多用户。
所以,可用性也是必须满足的。但是分布式架构中的,数据一致性也是很重要的,如果数据一致性不能满足,数据就不可信。
基于以上原因,产生了BASE理论。
2.什么是BASE理论?
既然分布式事务强一致性不能满足,根据业务特点,最终数据达到一致也是可接受的。
BASE理论由一下组成:
Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)。三个特性字母缩写组成。
Basically Available(基本可用)
在分布式架构中,当出现故障时,系统基本可用,允许部分功能不可用,保证核心功能。
比如秒杀系统、服务降级。
Soft state(软状态)
软状态是相对于分布式系统的原子性而说的,一个事务允许出现中间状态,分布式架构中数据副本可以有数据延迟。
比如支付宝和余额宝之间的转账的过程,支付宝转账100元到余额宝,中间状态可以有,转账中,而不是转账成功。
Eventually consistent(最终一致性)
CAP理论强调的是强一致性,BASE理论强调的是最终一致性,也就是弱一致性。
允许我们存在数据延迟,存在中间状态,但是我们要保证在一定的时间内达到最终一致性,比如秒级。也就是有个容忍期限,这个可以根据业务形式、网络状况、系统架构不同而设计。
3.BASE理论一般如何实现?
一般通过MQ(消息),来完成最终一致性。RocketMQ前期的版本是支持分布式事务的,比如有预发消息,后期版本没有了。