分布式事务框架Milo

Milo是一个分布式事务TCC模式的解决方案,目前开源版本已经发布,可以在开源中国上面搜索得到。TCC模式下的分布式事务是所有分布式事务解决方案中实时性要求最高的,同时也是对业务开发成本要求最高的。所以TCC模式会在要求实时性较高的分布式事务场景中使用,例如订单支付这样的场景。

Milo分布式事务框架是作者在企业中使用的分布式事务框架中抽离出来的开源版本,拥有如下特点:

  1. 基于TCC模式实现的分布式事务框架。
  2. 基于mysql存储事务日志。
  3. 和springcloud微服务完美融合。
  4. 具有事务处理异常自恢复能力。
  5. 样例测试详细。

项目结构


项目包含了核心源代码和测试样例代码,以cloud开头的是测试样例工程,以milo开头的是项目核心源代码。

milo-common模块


milo-common模块包含了一下公用的代码,包含了事务日志的数据库实体,框架参数配置信息,事务上下文,事务的阶段和参与者信息,自定义异常和序列化工具。

milo-core模块


milo-core模块是整个框架的核心,包含了这个框架的核心内容,业务处理,自恢复定时任务,事务上下文,框架启动器等,后面会详细介绍这里面的代码实现已经思路。

milo-springcloud模块


milo-springcloud模块是框架和springcloud整合的实现内容,是整个事务框架拦截的入口,并实现springcloud微服务rpc调用时的事务上下文传递,同样后面会详细的介绍。

milo-springcloud-starter模块


milo-springcloud-starter模块是框架的接入模块,我们自己的项目通过直接依赖该模块便可以引入整个Milo分布式事务框架,和其他starter一样,这个模块通过引入的项目将参数向下传递到milo框架,实现使用者自定义框架的一些配置信息。

我的公众号

Milo源码解析(一)相关推荐

  1. Milo源码解析(四)

    拦截事务方法 Milo框架在执行完初始化工作之后,开始等待事务请求,并且拦截该方法,拦截的方法前面已经提到过就是带注解@MiloTCC的方法.这其中拦截方法主要是通过spring的AOP方面的内容.回 ...

  2. Milo源码解析(二)

    引入Milo框架 在样例工程中保护了三个微服务模块cloud-order.cloud-account.cloud-stock.这三个模块模拟了具有分布式事务场景的下单场景,用户购买商品下单,生成订单, ...

  3. Milo源码解析(五)

    深入解析Try阶段 上一篇博客介绍了InitiatorMiloTransactionHandler是如何处理事务发起者发起的调用,try阶段完成后执行confirmPhase,否则执行cancelPh ...

  4. 谷歌BERT预训练源码解析(二):模型构建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...

  5. 谷歌BERT预训练源码解析(三):训练过程

    目录 前言 源码解析 主函数 自定义模型 遮蔽词预测 下一句预测 规范化数据集 前言 本部分介绍BERT训练过程,BERT模型训练过程是在自己的TPU上进行的,这部分我没做过研究所以不做深入探讨.BE ...

  6. 谷歌BERT预训练源码解析(一):训练数据生成

    目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT,简单来说,它是一个基于Transfo ...

  7. Gin源码解析和例子——中间件(middleware)

    在<Gin源码解析和例子--路由>一文中,我们已经初识中间件.本文将继续探讨这个技术.(转载请指明出于breaksoftware的csdn博客) Gin的中间件,本质是一个匿名回调函数.这 ...

  8. Colly源码解析——结合例子分析底层实现

    通过<Colly源码解析--框架>分析,我们可以知道Colly执行的主要流程.本文将结合http://go-colly.org上的例子分析一些高级设置的底层实现.(转载请指明出于break ...

  9. libev源码解析——定时器监视器和组织形式

    我们先看下定时器监视器的数据结构.(转载请指明出于breaksoftware的csdn博客) /* invoked after a specific time, repeatable (based o ...

最新文章

  1. mysql大于等于怎么写_数据库中大于等于0小于等于100怎样表达
  2. 【Java每日一题】20161123
  3. boost::mpl::less_equal相关的测试程序
  4. 阿里《Java开发手册》中的 1 个bug!
  5. php fopen 汉字,PHP fopen 读取带中文URL地址的一点见解
  6. 在MaxCompute上分析IP来源的方法
  7. 并非最边界的情况“OK“就真的“OK“(记洛谷P1720WA的经历,Java语言描述)
  8. 《scikit-learn》SVM(二)数据不均衡
  9. Matlab定义符号函数(ZZ)
  10. 分段式多级离心泵_D型卧式多级泵结构组成及工作原理
  11. sql/plus 常用操作
  12. matlab低通滤波器库函数代码_MATLAB低通滤波器的设计代码
  13. Win7系统IE、搜狗等浏览器首页被恶意网址qq789.com.cn劫持……
  14. LANP 配置文件
  15. [资源]--IOS捷径大全,众多实用小功能
  16. 认识卷积神经网络(卷积层和池化层)
  17. 如何抢功,甩锅,立于不败之地???
  18. 华为网络配置(DHCP)
  19. VIN码识别/车牌识别:是入口,是门面
  20. POJ 3069 Saruman's Army(萨鲁曼军)

热门文章

  1. DVWA-low通关笔记
  2. 车金融|GPS审核系统的前世今生
  3. 基于 zigbee的城市道路路灯实时远程监控与节能系统
  4. c语言时钟加秒表报告,51单片机秒表计时器课程设计报告(含C语言程序)...docx
  5. 【每天学习一点新知识】关于五险一金你必须知道
  6. ChatGPT知识梳理
  7. python中合法的布尔表达式_笔记||Python3之布尔表达式+条件判断
  8. iPad有触控笔是哪几款?触控笔十大品牌
  9. mysql hash分区 数目_MySQL 分区
  10. python飞机大战加背景音乐_python实现飞机大战小游戏 python飞机大战中的音频文件怎么改成MP3...