分布式事务
1、本地事务和分布式事务概念
本地事务:这里不想做详细解释,我们可以在sql中正常保持一个连接下,进行开启事务、提交、回滚事务。
分布式事务:是应用于分布式架构下,我们要想理解分布式事务,首先要明白分布式架构,在多个微服务下,我们常常在处理业务时,会遇到一个服务调用其他服务的场景,例如订单送积分,我们订单微服务在下订单后,要给用户进行积分累计,在这种场景下我们涉及到远程调用,本地事务的控制已经远远不够了,因为调用时,可能网络原因造成调用失败,或者返回结果失败。所以我们就需要能满足的分布式事务。
2、分布式事务场景
总结来说:我们的分布式事务适用于微服务之间的调用,多个服务对应多个数据库,多个服务对应同一个数据库。主从数据库的读写分离场景。
其实主要是看他究竟是不是同一个连接。
3、CAP概念
这里讲解以主从数据库读写分离场景举例说明:
C:一致性的英文缩写,这里指强一致性,我们保证主数据写入新数据的同时,从数据的读要出现最新的数据,不能响应旧数据,或者错误信息。
我们首先保证主从数据库的数据一致性,同步处理,同时我们针对从数据库我们还要加锁,目的就是为了从数据能读到最新数据。
A:可用性的英文缩写,可用性,特指我们无论什么情况都需要提供服务,即使返回的数据是旧数据。
对滴,你可能有疑惑,我们的可用性是不是和强一致性有冲突,对,你没有理解错,后面我再做出解释。
P:网络分区,在我们分布式架构中,通常我们不同的服务以及数据库是在不同的分区节点,即不同服务上。分区容错率:即一些服务挂掉时,我们要保证核心服务的可用,举例:我们支付系统出现故障时,我们商品服务要仍然可以使用,因为电商系统商品服务应该是我们的核心业务。
4、CAP组合
我们分布式系统中CAP往往是不能三者并存的,我们通常采用两者组合的形式。
(1)AP组合
这也是我们分布式架构经常采用的组合方式,我们保证分区、以及可用性,来进行架构的搭建,这也就会造成读取数据是有一定的延迟的,像我们通常的转账服务,我们可能在一个小时后才能被通知到账成功的消息,这是因为我们没有保证强一致性,我们期间查看数据时,可能还是旧数据。
(2)CP组合
这一组合的特征,我们依照上例同样是转账,但是转账操作后,我们停留在页面15秒,15秒之后我们才能跳转至查询操作。
(3)CA组合
大家看来有所疑惑,CA从概念上强一致性和可用性是冲突的,那如何组合,可以这么说我们采用CA而不进行分区,那就可以说是同一个数据库,读写不分离,那么我们的就可以利用本地事务来保证了,因而从某种程度上来说这种不进行分区的,并不能算上真正意义上的分布式架构。
5、base理论
base理论其实更像是对AP组合的加强,是三个组成的缩写,基本可用 basic avliable、soft 软状态、分区。
其中软状态,就是我们可以通过状态标识来,缓解可用性的网络延迟。
6、两段提交
所谓两段提交针对我们分布式事务中,两个分支事务(本地事务)。
第一段:准备阶段,说白了就是预提交
第二段:提交阶段,真正执行提交还是回滚决策操作的。
7、XA方案
前提我们我们所使用的的数据库必须支持2pc协议,例如MySQL,我们在
8、seata——AT模式
转载地址:详细介绍
https://toutiao.io/posts/g6jmss/preview