分布式事务之TX-LCN
程序员文章站
2022-06-13 16:47:25
...
概述
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模块然后再次执行该次请求事务。