TX-LCN的3种模式
LCN5.0.2有三种模式: LCN模式、TCC模式和TXC模式
LCN模式:LCN模式通过代理连接提供本地事务操作,由TxManager统一协调和控制事务。 在本地事务提交回滚或关闭连接时执行假操作,代理的连接由LCN连接池管理。
此模式的特点:
-此模式在代码中的嵌入性低。 -此模式仅限于本地存在连接对象并且可以通过连接对象控制事务的模块。 -在此模式下提交和回退事务由本地事务端控制,以确保数据完整性。 -此模式的缺点是代理连接需要与事务启动器一起释放连接,从而增加了连接时间。TCC模式:
与传统的事务机制(X/Open XA Two-Phase-Commit )相比,TCC事务机制独立于资源管理器(RM )对XA的支持)由业务系统提供主要是三阶段操作,Try:尝试执行业务,Confirm:确认业务执行,Cancel:取消业务执行。
此模式的特点:
-该模型代码嵌入性强,需要每个业务写三个步骤的操作。 -无论有无本地事务控制,此模式都支持广泛使用。 -数据一致性控制几乎完全由开发人员管理,业务开发难度较大。TXC模式:TXC模式的命名来源于淘宝,实现原理是在运行SQL之前先研究SQL的影响数据,然后保存运行的SQL的快走信息并创建锁定。 如果需要回滚,请使用这些日志数据回滚数据库,当前锁定依赖于redis分布式锁定控制。
此模式的特点:
-该模式在代码中的嵌入性也很低。 -此模式仅限于支持SQL方法的模块的支持。 -此模式比LCN模式消耗更多的资源和时间,因为每次运行SQL时都需要查询受影响的数据。 -此模式不消耗数据库的连接资源。LCN原理
现在我引用官方网站的原理图:
一般来说,中心步骤是创建事务组,并通知事务组(如果有)
创建事务组
在事务启动者开始执行业务代码之前,调用TxManager创建事务组对象并获取事务标签GroupId的过程。加入事务组
添加事务组是指参与者执行业务方法后向TxManager通知该模块的事务信息的操作通知事务组
启动器运行业务代码后,应通知TxManager启动器运行结果的状态。 TxManager根据事务的最终状态和事务组信息,通知相应的参与模块提交或回退事务,并将结果返回给事务的启动器。