分布式事务框架-Litx补偿事务框架源码解析

前言

之前某段时间在研究分布式事务过程中,对实现原理比较感兴趣,于是去Gitee上找了几个人气比较高的分布式事务框架进行学习;其中印象深刻的有Litx,主要是因为Litx源码不多,且都是基于Spring底层和Dubbo实现,所以理解起来比较容易,索性对这个框架分析过长进行总结如下

概念

litx(https://gitee.com/bryan31/litx)是一个基于补偿的轻量级分布式事务框架。(目前只支持dubbo,未来计划支持http等其他rpc调用的补偿)

  • 对代码逻辑无侵入
  • 和spring事务无缝结合(内部实现是集成spring的事务管理器,靠@transactional标注开启)
  • 自动回滚补偿接口
  • 如回滚异常提供hook接口可供扩展,当回滚失败时,可以拿到数据自行可作处理。

代码拉取

1.把项目从gitee clone 到本地

2.通过跑demo或者测试用例能正常运行项目

3.结合文档+观察输出日志+debug方式找到其入口,对每个方法进行分析

如下是项目结构图,从上到下分别是 litx-core(存放核心模块)、litx-dubbo(实现dubbo分布式事务)、litx-test(测试用例)

分布式事务框架-Litx补偿事务框架源码解析

该框架其主要核心思路是基于Spring->BeanPostProcessor + 自定义分布式事务标识注解 + Dubbo Filter + 重写DataSourceTransactionManager实现分布式事务,由于篇幅有限,下面只对核心的代码进行分析

1.litx-dubbo

LitxDubboDefinationScanner(注册每个方法对应的回滚方法到Map)

分布式事务框架-Litx补偿事务框架源码解析

registerDefinationList(回滚方法注册逻辑)

分布式事务框架-Litx补偿事务框架源码解析

注册底层是通过concurrentHashMap实现

分布式事务框架-Litx补偿事务框架源码解析

2.lite-dubbo

DubboLitxFilter

分布式事务框架-Litx补偿事务框架源码解析

分布式事务框架-Litx补偿事务框架源码解析

3.litx-core

分布式事务框架-Litx补偿事务框架源码解析

分布式事务框架-Litx补偿事务框架源码解析

分布式事务框架-Litx补偿事务框架源码解析

总结

以上截图是本人在debug过程中对其主入口、拦截流程、回滚逻辑进行分析,感兴趣的最好自己拉取代码到本地自行运行demo后自己调试一遍整个流程,便于加深印象

Original: https://www.cnblogs.com/zdd-java/p/15875895.html
Author: 达兔哥
Title: 分布式事务框架-Litx补偿事务框架源码解析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576104/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球