分布式事务 TX-LCN
分布式事务 LCN方案 、源码分析
RichardGeek
一枚普通的乐于分享的程序猿博主
展开
-
TX-LCN 简单培训知识点
git 地址:https://github.com/codingapi/tx-lcn官 网:http://www.txlcn.org/zh-cn/index.html目录一、产生背景二、LCN框架定位三、LCN事务模式四、事务控制原理五、核心步骤六、数据库连接占用情况七、分布式事务传递性一、产生背景由于采用微服务架构,各个模块相互独立,导致原...原创 2020-03-17 10:17:11 · 700 阅读 · 0 评论 -
Tx-lcn 通识(1)
官 网:http://www.txlcn.org/zh-cn/index.htmlgit 地址:https://github.com/codingapi/tx-lcnL: 锁定事务单元(lock)C: 确认事务模块状态(confirm)N: 通知事务(notify)一、产生背景微服务架构将原本独立的系统拆分成多个小型服务,这些小型服务在各自的进程中独立运行,服...原创 2019-09-05 18:53:20 · 258 阅读 · 0 评论 -
Tx-lcn LCN分布式事务原理(2)
一、LCN框架定位并不生产事务,LCN只是本地事务的协调工。TX-LCN定位于一款事务协调性框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。二、LCN事务模式LCN模式是通过代理Connection的方式实现对本地事务的操作,然后在由TxManager统一协调控制事务。当本地事务提交回滚或者关闭连接时将会执行假操作,该代理的连接将由LCN连接池管理。模...原创 2019-09-05 19:28:18 · 359 阅读 · 0 评论 -
Tx-lcn 源码解析:基于lcn模式下的正常流程源码(3)
一、代理Connect的获取TX-LCN中的LCN模式是通过代理数据库连接,进而对事务进行控制的。通过静态代理的方式包装的原本来的Connection,并设置为手动提交,根据事务状态控制提交与回滚。请记住:state为事务状态,state=1表示分布式事务成功,本地连接提交,其它为失败进行本地连接回滚。代理连接代码如下:package com.codingapi.txl...原创 2019-09-05 20:55:37 · 2159 阅读 · 0 评论 -
Tx-lcn LCN分布式事务小细节点(4)
问:关于参与方如何知道已经存在事务的?(从请求头传入事务组信息和 读取事务组信息。通过拦截器)答:一般我们都是一接口的方式去调用服务,基本就是restTemplate如果用到spring Cloud还会用到Fegin。框架在进行接口调用时都会通过把事务消息放在header中,后边的服务从header中就会得到当前的事务信息。ClientHttpRequestInterceptor可以对请求...原创 2019-09-06 10:47:14 · 718 阅读 · 0 评论 -
Tx-lcn lcn-manager 服务端执行逻辑(5)
服务端很简单,只需要一个注解@EnableTransactionManagerServer 配置在启动类上就能开启分布式事务服务端功能。一 、启动入口注解@EnableTransactionManagerServer@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(val...原创 2019-09-06 14:14:38 · 855 阅读 · 0 评论 -
Tx-lcn lcn-client 客户端执行逻辑(6)
一、源码分析入口@EnableDistributedTransaction客户端只需在启动类上 增加@EnableDistributedTransaction 即可实现 分布式事务,所以我们以此为切入点。我们从注解@EnableDistributedTransaction开始,这个注解是开启分布式事务客户端的唯一注解。@Retention(RetentionPolicy.RUNTIM...原创 2019-09-08 14:05:27 · 1452 阅读 · 0 评论 -
Tx-lcn 基于lcn模式下的异常流程源码分析(7)
前面文章中讲了lcn模式下的正常流程是如何运作的。这篇讲下在发生异常时框架是怎么进行回滚的,同样调用链还是A>B>C。我们知道前一个模块的doBusinessCode执行的是后一个模块的所有逻辑。所以 我们采用递归的 从后(最后一个模块)往前(上一个调用模块)的逻辑分析。C模块的所有的代码执行都在B模块的doBusinessCode方法中。B模块的代码执行都在A模块的doBu...原创 2019-09-08 14:48:43 · 1013 阅读 · 2 评论