分布式事务:Raincat、TX-LCN、Seata 介绍
-
Raincat , 帮助文档 , github , 1千多星
- 遗憾的是不支持 2.7 (Support for the dubbo framework Less than 2.7 version)
-
TX-LCN , 官方文档 , github , 3千多星 , 5.0以后由于框架兼容了LCN(2pc)、TCC、TXC 三种事务模式,为了区分LCN模式,特此将LCN分布式事务改名为TX-LCN分布式事务框架。
- TX-LCN定位于一款事务协调性框架,框架其本身并不生产事务,而是本地事务的协调者,从而达到事务一致性的效果。
- TX-LCN 主要有两个模块,Tx-Client(TC) ,Tx-Manager™.
- TM (Tx-Manager):是独立的服务,是分布式事务的控制方,协调分布式事务的提交,回滚
- TC(Tx-Client):由业务系统集成,事务发起方、参与方都由TxClient端来控制
- 事务控制原理
-
-
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式
-
在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的角色,帮助经济体平稳的度过历年的双11,对各BU业务进行了有力的支撑。商业化产品GTS 先后在阿里云、金融云进行售卖
-
Seata分TC、TM、RM三个角色 , 是不是和XA模型很像
- TC(事务协调者,Transaction Coordinator):是 Server端,要单独部署,维护全局和分支事务的状态,驱动全局事务提交或回滚。
- TM(Transaction Manager)和RM(Resource Manager) :是Client端,由业务系统集成。TM:定义全局事务,RM 管理分支事务处理的资源。
- TM, RM, TC 三者的调用关系(AT事务),源码分析和时序图
-
Seata管理的分布式事务的典型生命周期
- TM要求TC 开始一项新的全局事务,TC生成代表全局事务的XID,并返回给TM
- TM 拿到XID,开始执行本身代码和调用多个 RM,XID通过微服务的调用链传播给RM
- RM 处理过程:执行数据库CRUD操作、将RM管理的数据(如:xid)注册到TC 的全局事务分支表中、保存一阶段回滚日志到undo_log表中、执行本地事务提交、上报RM事务执行状态
- 根据RM的返回结果,若异常则TM通知TC回滚相应的XID全局事务,若正常则TM通知TC二阶段提交
- TC驱动XID的相应全局事务下的所有分支事务以完成分支提交或回滚。
-
AT 模式: 两阶段提交协议的演变,没有一直锁表
- 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源
- 二阶段:提交异步化,非常快速地完成。或回滚通过一阶段的回滚日志进行反向补偿
-