前辈,请先登录以便查看更新内容。

#1 2019-02-12 22:40:55

ujued
管理员
所在地: 山东·济南
注册时间: 2019-01-14
帖子: 83

TX-LCN分布式事务解决方案

如何高效解决分布式事务问题似乎一直没有稳定一致的答案,CodingApi团队也一直致力于此问题解决方案的研究,现就对研究成果TX-LCN做原理详解。


TX-LCN分布式事务解决方案

分布式事务(DTX)解决是指,分布式环境下,各个微服务的本地事务(LTX)做到同步,组合起来作为分布式原子事务,期望各个本地事务做到全部成功或全部失败。

1. 为什么会有本地事务与分布式事务之分?
几个协作的微服务,在调用过程中,一些本地事务成功了,某个本地事务失败,根据分布式事务要求,需要其它本地事务也要失败。

2. TX-LCN是怎样解决这个问题的?
一次分布式事务下,各个微服务的本地事务注册到一个事务管理服务中,在没有发生失败的本地事务情况下,统一做提交事务,有失败的情况,对所有事务做回滚。
由事务管理服务器做各个本地事务的协调工作。

3. TX-LCN这样解决问题为什么可行?
TC 原理图
TC Arch

TM 原理图
TM Arch


>  各个协作的微服务根据解决方案TC原理的要求实现对其本地事务的注册,本地事务挂起与恢复。
>  根据解决方案TM原理产出TM服务器中间件,负责对注册的各个本地事务的保存与协调。

4. TX-LCN解决方案的开源实现?
https://github.com/codingapi/tx-lcn
基本上严格按照原理图实现,需要注意的是,TM在通知所有Unit做RealCommit或RealRollback时失败并未重新通知,而是记载了TM管理后台的异常记录里。出现异常记录时,需要管理员手动补偿。

5. 参考
https://bbs.txlcn.org/viewtopic.php?id=31

离线

页脚