概述
TX-LCN是一款高性能、易于使用的分布式事务框架。
功能特点
- 无侵入式支持分布式事务。
- 支持多种模式混合使用。
- 支持关系型数据、NoSQL数据库。
- 支持SpringCloud Dubbo等RPC框架。
- 支持负载均衡与集群化部署。
- 高性能与高稳定性。
背景
LCN框架在2017年6月份发布第一个版本,从开始的1.0,已经发展到了5.0版本。
LCN名称是由早期版本的LCN框架命名,在设计框架之初的1.0 ~ 2.0的版本时框架设计的步骤是如下,各取其首字母得来的LCN命名。
锁定事务单元(lock)
确认事务模块状态(confirm)
通知事务(notify)
5.0以后由于框架兼容了LCN、TCC、TXC三种事务模式,为了避免区分LCN模式,特此将LCN分布式事务改名为TX-LCN分布式事务框架。
框架定位
LCN并不生产事务,LCN只是本地事务的协调工
TX-LCN定位于一款事务协调性框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。
TX-LCN核心源码解读
TX-LCN是基于Java编写的分布式事务解决方案框架,主要提供三种主流的解决方案
- LCN模式,通过代理JDBC Connection来控制协调多组本地原子事务的提交与关闭
- TCC模式,属于框架级别解决方案,对业务入侵性极大
- TXC模式,核心方案为查询 + 分布式锁的分布式事务解决方案,由淘宝团队提出
核心组件
- TC,作为分布式事务组件的客户端角色,主要作用在于治理本地事务
- TM,作为分布式事务组件的服务端角色,主要作用在于协调事务组
核心概念
- 事务组,
group
,描述整个分布式环境下运行的各个事务(以一个request所需要完成的事务)组合而成的一组事务。 - 事务单元,
unit
,描述一个事务组内除开主事务之外的从事务,一个从事务表示一个事务单元
事务补偿机制
为什么需要事务补偿?
事务补偿是指在执行某个业务方法时,本应该执行成功的操作却因为服务器挂机或者网络抖动等问题导致事务没有正常提交,此种场景就需要通过补偿来完成事务,从而达到事务的一致性。
补偿机制的触发条件?
当执行关闭事务组步骤时,若发起方接受到失败的状态后将会把该次事务识别为待补偿事务,然后发起方将该次事务数据异步通知给TxManager。TxManager接受到补偿事务以后先通知补偿回调地址,然后再根据是否开启自动补偿事务状态来补偿或保存该次切面事务数据。
补偿事务机制?
LCN的补偿事务原理是模拟上次失败事务的请求,然后传递给TxClient模块然后再次执行该次请求事务。
相关推荐
springcloud整合分布式事务框架TX-LCN
TX-LCN5.0.2版本修改,解决集群节点下,分布式事务回调用,会路由到非发起方机器上去。这个是改版之后打包的的内容,只需要使用博客里面的命令发到私服上去就可以用
修改分布式事务框架TX-LCN源码,适配PostgreSQL数据库。压缩包中有服务端和客户端,服务端可以直接用,客户端需要把config->tx-lcn包下的代码考到自己的客户端,然后就可以使用了。
LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果。 LCN模式: LCN模式是通过代理Connection的方式实现对本地事务的操作,然后在由TxManager统一协调控制事务。当本地事务...
基于springboot1.5、springcloud,以tx-lcn_4.1.0实现分布式事务demo,其中tm项目为txManager,测试tc1项目调用tc2项目,模拟异常信息实现分布式事务回滚
LCN并不生产事务,LCN只是本地事务的协调工 TX-LCN定位于一款事务协调性框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。
txlcn分布式事务搭建方案与使用demo
LCN分布式事务处理。TX-LCN 主要有两个模块,Tx-Client(TC) Tx-Manager(TM). TC作为微服务下的依赖,TM是独立的服务。
兼容springcloud2.0的分布式事务LCN框架 官方框架暂时不支持2.0
常用的分布式事务组件,LCN模式,学习微服务必备!!
tx-manager.rar(lcn 分布式事务管理协调器)、用于管理事务
TX-LCN实现分布式锁 Java代码实现
提供TX-LCN的标准支持,TxManager作为分布式事务的控制放。事务发起方或者参与反都由TxClient端来控制。 (简单来说就是单独部署一套TxManager模块来实现事务管理,TxClient就是我们自己的服务系统)
TX_LCN5.0.2同一个微服务模块多实例,TM会发生事务通知TC错乱的问题,尤其是负载多实例,LCN分布式事务多模块错乱
Tx-Lcn分布式事务管理器
Distributed Transaction Framework - LCN (6.0.0)文档见5.x版本文档见参与方式了解原理了解代码参与任务代码提交步骤fork该项目地址,并更新代码认领任务或发布问题维护代码编写测试发起合并请求,关联issues代码审核...
在微服务环境下,会根据不同的业务会拆分成不同的服务,每个服务都有自己独立的数据库,服务与服务之间采用RPC远程调用进行...当服务相互通讯的时候,两个本地事务互不影响,从而需要分布式事务。LCN分布式事物管理工具
Spring Cloud集成TX-LCN分布式事务框架!Spring Cloud集成TX-LCN分布式事务框架
本项目是SpringCloud实战学习,集成了eureka、fegin、zuul、分布式事务tx-lcn、swagger、Spring Security、SpringBoot Admin、Oauth2(redis和mysql两种存储方式)、SpringCloud Config、SpringCloud Bus ...