TX-LCN分布式事务原理介绍

框架介绍

LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果

核心步骤

  1. 创建事务组
    是指在事务发起方开始执行业务代码之前先调用TxManager创建事务组对象,然后拿到事务标示GroupId的过程。
  2. 添加事务组
    添加事务组是指参与方在执行完业务方法以后,将该模块的事务信息添加通知给TxManager的操作。
  3. 关闭事务组
    是指在发起方执行完业务代码以后,将发起方执行结果状态通知给TxManager的动作。当执行完关闭事务组的方法以后,TxManager将根据事务组信息来通知相应的参与模块提交或回滚事务。

事务控制原理

LCN事务控制原理是由事务模块TxClient下的代理连接池与TxManager的协调配合完成的事务协调控制。

TxClient的代理连接池实现了javax.sql.DataSource接口,并重写了close方法,事务模块在提交关闭以后TxClient连接池将执行"假关闭"操作,等待TxManager协调完成事务以后在关闭连接。

对于代理连接池的优化

  1. 自动超时机制
    任何通讯都有最大超时限制,参与模块在等待通知的状态下也有最大超时限制,当超过时间限制以后事务模块将先确认事务状态,然后再决定执行提交或者回滚操作,主要为了给最大资源占用时间加上限制。

  2. 智能识别创建不同的连接 对于只读操作、非事务操作LCN将不开启代理功能,返回本地连接对象,对于补偿事务的启动方将开启回滚连接对象,执行完业务以后马上回滚事务。

  3. LCN连接重用机制 当模块在同一次事务下被重复执行时,连接资源会被重用,提高连接的使用率。

事务补偿机制

为什么需要事务补偿?

事务补偿是指在执行某个业务方法时,本应该执行成功的操作却因为服务器挂机或者网络抖动等问题导致事务没有正常提交,此种场景就需要通过补偿来完成事务,从而达到事务的一致性。

补偿机制的触发条件?

当执行关闭事务组步骤时,若发起方接受到失败的状态后将会把该次事务识别为待补偿事务,然后发起方将该次事务数据异步通知给TxManager。TxManager接受到补偿事务以后先通知补偿回调地址,然后再根据是否开启自动补偿事务状态来补偿或保存该次切面事务数据。

补偿事务机制?
LCN的补偿事务原理是模拟上次失败事务的请求,然后传递给TxClient模块然后再次执行该次请求事务。

模拟场景演示

若存在事务发起方、参与方A、参与方B。调用关系图如下

那么他们正常执行业务的时序图为:

若参与方B出现异常,那么他们的业务时序图为:

若他们的调用关系是这样的情况


此时发生参与方B出现异常时他们的时序图为:


已标记关键词 清除标记
<p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"> </span></p><p> <strong>课程介绍</strong> </p> <p> <br /></p> <p> 课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,绝对的0基础入门到精通系列课程。对于难以理解的知识点,全部用画图+实战的方式讲解。 </p> <p> <br /></p> <p> 彻底明白事务的四个特性:原子性、一致性、隔离性、持久性,用场景和事例来讲解。 </p> <p> <br /></p> <p> 实战讲解数据库事务的5种并发异常:回滚丢失、覆盖丢失、脏读、幻读、不可重复读 </p> <p> <br /></p> <p> 彻底搞清楚4种事务隔离级别:READ_UNCOMMITTED 读未提交隔离级别、READ_COMMITTED 读已提交隔离级别、REPEATABLE_READ 可重复度隔离级别、SERIALIZABLE 序列化隔离级别 </p> <p> <br /></p> <p> 彻底搞清楚MySQL的各种锁:行锁、表锁、共享锁、排它锁、Next-Key锁、间隙锁、X锁、S锁、IS锁、IX锁、死锁、索引与锁、意向锁等。 </p> <p> <br /></p> <p> 彻底搞清楚Spring事务的7种传播级别的原理和使用:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER、PROPAGATION_NESTED </p> <p> <br /></p> <p> 分布式事务的理论基础:RPC定理、BASE理论、XA协议都是什么,原理是什么,有什么关联关系。 </p> <p> <br /></p> <p> 分布式事务的5种解决方案原理和优缺点:2PC两阶段提交法、3PC三阶段提交法、TCC事务补偿、异步确保策略、最大努力通知策略 </p> <p> <br /></p> <p> 阿里巴巴分布式事务框架Seata:历经多年双十一,微服务分布式事务框架,用一个Nacos+Spring Cloud+Seta+MySql的微服务项目,实战讲解阿里的分布式事务技术,深入理解和学习Seata的AT模式、TCC模式、SAGA模式。 </p> <p> <br /></p> <p> <strong>课程资料</strong> </p> <p> <br /></p> <p> 课程附带配套2个项目源码 </p> <p> <br /></p> <p> 72页高清PDF课件一份 </p> <p> <br /></p> <p> 阿里巴巴seata-1.1.0源码一份 </p> <p> <br /></p> <p> 阿里巴巴seata-server安装包一份 </p> <p> <br /></p> <p> <strong>学习方法</strong> </p> <p> <br /></p> <p> 对于前半部分可以在地铁上学习,对于数据库的事务本质、ACID特性深入掌握。 </p> <p> <br /></p> <p> 课程全程都有实操,最好的方式为对照视频,参考代码,边看边操作 </p> <p> <br /></p> <p> 对于分布式事务参照课程案例,自己也搭建一套微服务的分布式事务环境进行练习 </p> <br /> <p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"><img src="https://img-bss.csdn.net/202003260242251706.jpg" alt="" /><br /></span> </p> <p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"><img src="https://img-bss.csdn.net/202003260242358183.jpg" alt="" /><br /></span> </p> <p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"><img src="https://img-bss.csdn.net/202003260242474239.jpg" alt="" /><br /></span> </p> <p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"><img src="https://img-bss.csdn.net/202003260242553783.jpg" alt="" /><br /></span> </p>
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页