赞
踩
说到分布式事务,我们先来看看分布式事务的产生条件
这里我们举一个栗子:
此时,小伙伴可能有疑问:派单服务报错呢?会不会也产生分布式事务问题?
实际上如果派单服务报错,会将执行结果返回给订单服务,订单服务执行相应的处理即可,并不会发生分布式事务。
当A服务调用B服务成功以后,A服务报错导致事务回滚,B服务事务提交,导致数据不一致性的问题。
以下部分小伙伴们需要有一定的mq基础,或者使用过lcn和seata,这样理解起来更加轻松哦
LCN并不生产事务,LCN只是本地事务的协调工
小伙伴想要了解lcn,这里提供了传送门前往http://www.txlcn.org/zh-cn/docs/preface.html
LCN是分布式事务的搬运工,我是LCN的搬运工
此图来源于LCN官网,当然,我也把相应的注释给搬运过来
核心步骤
创建事务组
加入事务组
通知事务组
看完以上定义,不知道小伙伴们看懂了没有。我这里来个白话文翻译一下。
从我们使用的栗子来看
发起方
参与方
协调者
结合案例分析其步骤:
优点
缺点
阿里爸爸还是特别强大的,由于seata框架问世的比较晚,目前还存在一些缺陷,比如说没有一个界面化的管理平台。
以阿里的更新速度来说,这些都不是大问题。
seata传送门 https://gitee.com/seata-io/seata
seata的原理分析
和上面一样,订单服务为发起方、派单服务为参与方
什么是前置镜像和后置镜像
前置镜像:select * from order where orderId = 66; 并将查询的结果保存起来 state = 0;
update order set state = 1 where orderId=66;
后置镜像:select * from order where orderId = 66; 更改后的数据进行记录 state = 1;
当我们需要回滚的时候,就可以根据前置镜像和后置镜像保存的记录,进行逆向生成sql语句回滚
update order set state = 0 where orderId = 66;
当发起方调用参与方成功以后,发起方宕机了怎么办?
优点
缺点
seata和lcn比较,有什么不一致?
此题可能会被面试官问到,需要多多注意哦
RabbitMQ是基于补单队列的形式实现分布式事务
实现流程
优点
缺点
RocketMQ也是阿里巴巴开发的框架,是再kafka的基础上进行改造升级,自带解决分布式事务的功能,主要采用事务消息来解决分布式事务
原理分析:
优点
缺点
那解决分布式事务该选用那种框架呢?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。