分布式事务框架-Litx补偿事务框架源码解析
2024-09-05 22:38:07
前言
之前某段时间在研究分布式事务过程中,对实现原理比较好奇,于是去Gitee上找了几个人气比较高的框架进行学习,其中印象深刻的有Litx,因为Litx源码不多,且都是基于Spring和Dubbo底层实现,所以理解起来比较容易,索性对这个框架分析过长进行总结如下
litx(https://gitee.com/bryan31/litx)是一个基于补偿的轻量级分布式事务框架。(目前只支持dubbo,未来计划支持http等其他rpc调用的补偿)
- 对代码逻辑无侵入
- 和spring事务无缝结合(内部实现是集成spring的事务管理器,靠@transactional标注开启)
- 自动回滚补偿接口
- 如回滚异常提供hook接口可供扩展,当回滚失败时,可以拿到数据自行可作处理。
首先看源码得先把项目拉到本地,通过跑demo或者测试用例方式先让项目正常运行,然后结合文档+观察输出日志+debug方式找到其入口,然后深入对每个方法进行深挖
如下是项目结构图,从上到下分别是 litx-core(存放核心模块)、litx-dubbo(实现dubbo分布式事务)、litx-test(测试用例)
该框架其主要核心思路是基于Spring->BeanPostProcessor + 自定义分布式事务标识注解 + Dubbo Filter + 重写DataSourceTransactionManager实现分布式事务,由于篇幅有限,下面只对核心的代码进行分析
1.litx-dubbo
- LitxDubboDefinationScanner(注册每个方法对应的回滚方法到Map)
- 回滚方法注册逻辑
2.lite-dubbo
3.litx-core
以上图片篇幅就是Litx分布式事务源码的核心
最新文章
- SQL常用代码段
- JS, Node.js, npm简介
- AJAX-----01远古时期的ajax
- git 添加文件
- 新的开始--Python
- 【转发】du命令 实现Linux 某个文件夹下的文件按大小排序
- c++给数组赋值
- 线段树扫描线 HDU 1542
- Scheme change not implemented
- Sql Server 查询外键对应的Table 的通用方法
- 简单的PHP单例模式
- BZOJ4177Mike的农场——最小割
- JS_高程3.基本概念(5)语句
- hive mysql元数据,报错 Specified key was too long; max key length is 767 bytes
- yarn 常用命令(基于vue框架)
- 接口测试之postman-简单使用
- 解析Linux中的VFS文件系统机制
- Android图片异步加载
- 重装Delphi10.2的IDE必要设置
- 20155318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
热门文章
- Order Statistic
- MA8621带SD读卡的USB 2.0高速3端口HUB方案芯片|MA8621中文规格书|USB 2.0方案
- 使用 jQuery对象设置页面中 <ul> 元素的标记类型,并使用 DOM 对象设置 <li> 元素的浮动属性和右边距。使用jQuery 对象和 DOM 对象设置页面元素属性
- JavaScript交互式网页设计 • 【第2章 JavaScript函数与事件】
- VUE3 之 click 事件
- IPv6地址格式
- Win10 开启 Hyper-V 及简单使用
- 通过 v-once 创建低开销的静态组件
- HTTP 状态码整理
- nginx+keepalived 简单实现主备和双主模式