框架介绍

LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果

核心步骤

  1. 创建事务组
    是指在事务发起方开始执行业务代码之前先调用TxManager创建事务组对象,然后拿到事务标示GroupId的过程。
  2. 添加事务组
    添加事务组是指参与方在执行完业务方法以后,将该模块的事务信息添加通知给TxManager的操作。
  3. 关闭事务组
    是指在发起方执行完业务代码以后,将发起方执行结果状态通知给TxManager的动作。当执行完关闭事务组的方法以后,TxManager将根据事务组信息来通知相应的参与模块提交或回滚事务。

事务控制原理

LCN事务控制原理是由事务模块TxClient下的代理连接池与TxManager的协调配合完成的事务协调控制。

TxClient的代理连接池实现了javax.sql.DataSource接口,并重写了close方法,事务模块在提交关闭以后TxClient连接池将执行"假关闭"操作,等待TxManager协调完成事务以后在关闭连接。

对于代理连接池的优化

  1. 自动超时机制
    任何通讯都有最大超时限制,参与模块在等待通知的状态下也有最大超时限制,当超过时间限制以后事务模块将先确认事务状态,然后再决定执行提交或者回滚操作,主要为了给最大资源占用时间加上限制。

  2. 智能识别创建不同的连接 对于只读操作、非事务操作LCN将不开启代理功能,返回本地连接对象,对于补偿事务的启动方将开启回滚连接对象,执行完业务以后马上回滚事务。

  3. LCN连接重用机制 当模块在同一次事务下被重复执行时,连接资源会被重用,提高连接的使用率。

事务补偿机制

为什么需要事务补偿?

事务补偿是指在执行某个业务方法时,本应该执行成功的操作却因为服务器挂机或者网络抖动等问题导致事务没有正常提交,此种场景就需要通过补偿来完成事务,从而达到事务的一致性。

补偿机制的触发条件?

当执行关闭事务组步骤时,若发起方接受到失败的状态后将会把该次事务识别为待补偿事务,然后发起方将该次事务数据异步通知给TxManager。TxManager接受到补偿事务以后先通知补偿回调地址,然后再根据是否开启自动补偿事务状态来补偿或保存该次切面事务数据。

补偿事务机制?
LCN的补偿事务原理是模拟上次失败事务的请求,然后传递给TxClient模块然后再次执行该次请求事务。

模拟场景演示

若存在事务发起方、参与方A、参与方B。调用关系图如下

那么他们正常执行业务的时序图为:

若参与方B出现异常,那么他们的业务时序图为:

若他们的调用关系是这样的情况

此时发生参与方B出现异常时他们的时序图为:

TX-LCN分布式事务原理介绍相关推荐

  1. RocketMQ分布式事务原理介绍

    RocketMQ实现分布式事务原理 1.知识准备 在系统架构从单体到分布式.SOA.微服务的发展过程中,因为流量的增多出现了大量消息堆积问题的需求,在这种背景下,阿里开发出rocketmq来解决该问题 ...

  2. LCN分布式事务框架解决分布式事务一致性问题

    LCN分布式事务框架 框架介绍 LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果. 核心步骤 创建事务组 是指在事务发起方开始执行业务代码之前先调用TxMana ...

  3. 《深入理解分布式事务》第八章 TCC 分布式事务原理

    <深入理解分布式事务>第八章 TCC 分布式事务原理 文章目录 <深入理解分布式事务>第八章 TCC 分布式事务原理 一.TCC 核心思想 二.TCC 实现原理 1.TCC 核 ...

  4. 《深入理解分布式事务》第七章 XA 强一致性分布式事务原理

    <深入理解分布式事务>第七章 XA 强一致性分布式事务原理 文章目录 <深入理解分布式事务>第七章 XA 强一致性分布式事务原理 一.X/Open DTP 模型与 XA 规范 ...

  5. SpringCloud(7) LCN分布式事务框架入门

    官网:http://www.txlcn.org/ LCN原理:https://github.com/codingapi/tx-lcn/wiki/LCN%E5%8E%9F%E7%90%86 入门测试: ...

  6. SpringCloud - LCN分布式事务框架

    官网:http://www.txlcn.org/ LCN原理:https://github.com/codingapi/tx-lcn/wiki/LCN%E5%8E%9F%E7%90%86 入门测试: ...

  7. 一文彻底说明分布式事务原理

    一文彻底说明分布式事务原理 文章目录 一文彻底说明分布式事务原理 前言 1. 单数据源事务 & 多数据源事务 2. 常见分布式事务解决方案 2.1. 分布式事务模型 2.2. 二将军问题和幂等 ...

  8. 分布式事务解决方案分布式事务原理

    分布式事务解决方案&分布式事务原理 0. 前言 1. 单数据源事务 & 多数据源事务 2. 常见分布式事务解决方案 2.0.什么是分布式事务 2.1. 分布式事务模型 2.2. 二将军 ...

  9. 分布式事务:分布式事务原理概述

    1.什么是分布式事务 分布式事务就是指事务的资源分别位于不同的分布式系统的不同节点之上的事务: 2.分布式事务产生的原因 2.1.数据库分库分表 在单库单表场景下,当业务数据量达到单库单表的极限时,就 ...

最新文章

  1. tf.keras.losses.BinaryCrossentropy 损失函数 示例
  2. AI居然能算出情侶能交往多久?使用分析语音数据進行預測
  3. MySQL 过滤规则-误解处理
  4. Handler造成Activity泄漏,用弱引用真的有用么?
  5. 从门禁系统的使用体验看良好的交互设计原则
  6. WPF基础入门 - 1
  7. python3 正则表达式点星问号(.*?)能不能匹配换行符?不能的话应该怎么写
  8. 小波的秘密1_小波变换概况与综述
  9. 【Linux】一步一步学Linux——uptime命令(76)
  10. linux-2.6.38 input子系统(用输入子系统实现按键操作)
  11. 给定重量上限,背包问题_满足给定重量的袋子的最低成本
  12. VMware 修复多款产品中的高危漏洞
  13. 国科大杨力祥老师操作系统答案总结
  14. 文曲星猜数字用c语言编程,文曲星中的猜数字游戏,要猜一个四位数,有什么通用公式?...
  15. 解决Windows因更新导致C盘容量急剧减少
  16. 跨越阶层,至少需要三代人的努力;看千年前的眉山五苏是如何完成的
  17. 菜鸟的linux云服务器第一次木马入侵处理记录(名为xmrigMiner的木马)
  18. 2.3.1 导引型传输媒体
  19. 基于Delphi的BHO开发基础
  20. 分布式服务器时间同步

热门文章

  1. 代码显示return的用法(c语言和java的比较和整合)
  2. linux停止编译进程,linux – 如何继续编译?
  3. 中国平安增持华夏幸福5.69%股权 看好长期战略协同
  4. iOS企业版app部署到自己的服务器
  5. 西北大学Latex学位论文模板
  6. gfp_mask是0代表什么?
  7. Danar程序员之家在CSDN安家落户啦
  8. 框架:什么是框架?为什么要使用框架?框架有什么作用
  9. UE4|Sequence Recorder 序列记录使用方法
  10. 【JAVA】GUI常用组件