1、什么是分布式事务?
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位 于不同的分布式系统的不同节点之上。

图中包含了库存和订单两个独立的微服务,每个微服务维护了自己的数据库。在交易系 统的业务逻辑中,一个商品在下单之前需要先调用库存服务,进行扣除库存,再调用订单服 务,创建订单记录。

正常情况下,两个数据库各自更新成功,两边数据维持着一致性。 如果在非正常情况下,有可能库存的扣减完成了,随后的订单记录却因为某些原因插入 失败。或者是订单创建成功了,但是库存扣除商品的数据量失败了,这个时候,两边数据就 失去了应有的一致性。

这时候就需要保证事务的一致性了,单数据源的用单机事务来保证。多数据源就需要依 赖分布式事务来处理。
2、关于LCN
LCN 并不生产事务,LCN 只是本地事务的协调工
在设计框架之初的 1.0 ~ 2.0 的版本时,框架设计的步骤是如下的,各取其首字母得来 的 LCN 命名。 锁定事务单元(lock)、确认事务模块状态(confirm)、通知事务(notify
在上图中,微服务 A,微服务 B,TxManager 事务协调器,都需要去 Eureka 中注册服 务。Eureka 是用于 TxManager 与其他服务之间的相互服务发现。redis 是用于存放我们事务 组的信息以及补偿的信息。然后微服务 A 与微服务 B 他们都需要去配置上我们 TxClient 的 包架构(代码的包架构);来支持我们的 LCN 框架,以及他们的数据库。

2、LCN 执行步骤
2.1创建事务组: 事务组是指的我们在整个事务过程中把各个节点(微服务)单元的事务信息存储在一 个固定单元里。但这个信息并不是代表是事务信息,而是只是作为一个模块的标示信息。 创建事务组是指在事务发起方开始执行业务代码之前先调用 TxManager 创建事务组 对象,然后拿到事务标示 GroupId 的过程。
2.2添加事务组: 添加事务组是指参与方在执行完业务方法以后,将该模块的事务信息添加通知给 TxManager 的操作。
2.3关闭事务组: 是指在发起方执行完业务代码以后,将发起方执行结果状态通知给 TxManager 的动 作。当执行完关闭事务组的方法以后,TxManager 将根据事务组信息来通知相应的参与模 块提交或回滚事务。

3、业务执行流程:

4、什么是 LCN 的事务协调机制

如图:假设服务已经执行到关闭事务组的过程,那么接下来作为一个模块执行通知给 TxManager,然后告诉他本次事务已经完成。那么如图中 Txmanager 下一个动作就是通过事 务组的 id,获取到本次事务组的事务信息;然后查看一下对应有那几个模块参与,然后如果 是有 A/B/C 三个模块;那么对应的对三个模块做通知、提交、回滚。
那么提交的时候是提交给谁呢?
是提交给了我们的 TxClient 模块。然后 TxCliient 模块下有一个连接池,就是框架自定 义的一个连接池(如图 DB 连接池);这个连接池其实就是在没有通知事务之前一直占有着 这次事务的连接资源,就是没有释放。但是他在切面里面执行了 close 方法。在执行 close 的时候。如果需要(TxManager)分布式事务框架的连接。他被叫做“假关闭”,也就是没有 关闭,只是在执行了一次关闭方法。实际的资源是没有释放的。这个资源是掌握在 LCN 的 连接池里的。
然后当 TxManager 通知提交或事务回滚的时候呢?
TxManager 会通知我们的 TxClient 端。然后 TxClient 会去执行相应的提交或回滚。提交 或回滚之后再去关闭连接。这就是 LCN 的事务协调机制。说白了就是代理 DataSource 的机 制;相当于是拦截了一下连接池,控制了连接池的事务提交。

什么是 LCN 的事务补偿机制
1 什么是补偿事务机制?
LCN 的补偿事务原理是模拟上次失败事务的请求,然后传递给 TxClient 模块然后再次 执行该次请求事务。
简单的说:lcn 事务补偿是指在服务挂机和网络抖动情况下 txManager 无法通知事务单 元时。(通知不到也就两种原因服务挂了和网络出问题)在这种情况下 TxManager 会做一 个标示;然后返回给发起方。告诉他本次事务有存在没有通知到的情况那么如果是接收到这个信息之后呢,发起方就会做一个标示,
标示本次事务是需要补偿 事务的。这就是事务补偿机制。
2 为什么需要事务补偿?
事务补偿是指在执行某个业务方法时,本应该执行成功的操作却因为服务器挂机或者络抖动等问题导致事务没有正常提交,此种场景就需要通过补偿来完成事务,从而达到事务 的一致性。
3 补偿机制的触发条件? 当执行关闭事务组步骤时,若发起方接受到失败的状态后将会把该次事务识别为待补偿 事务,然后发起方将该次事务数据异步通知给 TxManager。TxManager 接受到补偿事务以先通知补偿回调地址,然后再根据是否开启自动补偿事务状态来补偿或保存该次切面事务数据。

分布式事务学习-LCN相关推荐

  1. LCN分布式事务学习0-分布式事务理论基础

    1. 事务概述 1.1 事务的定义 将一个活动涉及到的所有操作纳入到一个不可分割的执行单元,只要其中任一操作执行失败,都将导致整个执行单元回滚. 简单地说,事务提供一种"要么什么都不做,要么 ...

  2. 基于SpringCloud的分布式事务框架(LCN)

    框架特点 支持各种基于spring的db框架 兼容springcloud.dubbo 使用简单,代码完全开源 基于切面的强一致性事务框架 高可用,模块可以依赖dubbo或springcloud的集群方 ...

  3. 分布式事务框架lcn入门demo

    文章目录 简介 实现原理 入门demo 简介 LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果. LCN5.0.2有3种模式,分别是LCN模式,TCC模式,TX ...

  4. spring分布式事务学习笔记(2)

    此文已由作者夏昀授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Model类如下:package com.xy.model 1 package com.xy.model;2 ...

  5. 分布式事务(LCN)

    官网地址 http://www.txlcn.org/ 应用 https://blog.csdn.net/zyndev/article/details/79604395

  6. 常用的分布式事务解决方案

    首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校 会员中心 收藏 动态 消息 创作中心 常用的分布式事务解决方案 凌澜星空 2018-03-11 14:44:55  75315   ...

  7. 分布式事务解决方案(总览)

    关注私信,赠送 分布式事务学习视频资料!!! 总览 本系列针对分布式事务提出三种解决方案:可靠消息最终一致性.最大努力通知.TCC. 每种方案分为上下两篇,上篇为原理概述,下篇为具体实现. 本篇是对本 ...

  8. 分布式事务(阿里巴巴RocketMQ实现分布式事务)

    1 RokcetMQ是什么? Apache RocketMQ是一个采用Java语言开发的分布式的消息系统,由阿里巴巴团队开发,与2016年底贡献给Apache,成为了Apache的一个顶级项目. 在阿 ...

  9. springcloud分布式事务_Spring Cloud学习资源一网打尽!Awesome Spring Cloud v1.0

    公正.公平.尊重原创.不夹带私人恩怨的Spring Cloud学习资源列表. TIPS: •本文链接较多,为了更好的阅读体验,建议翻到文章末尾,点击"扩展链接",排版相对好很多. ...

最新文章

  1. Corrigendum: A window into third generation sequencing
  2. 现在可以插入MSN表情了
  3. html如何实现新闻标题缩略,CSS新闻标题后面跟着new图标_CSS实例
  4. java 导入包报错_Intellij IDEA 导入个推jar包 报错java.lang.NoClassDefFoundError
  5. Linux命令之 mke2fs -- 格式化分区(为分区写入文件系统)
  6. 支付宝推生物识别;Google 爆重大隐私问题;TensorFlow 2.0 即将发布 | 极客头条
  7. torch.eq(input, other, out=None)
  8. ajax获取信息发送短信,javascript ajax获取信息功能代码
  9. Linux kernel中 __bitmap_weight函数的理解
  10. TwinCAT 3 EtherCAT控制伺服
  11. 还在为word排版而发愁?word的实验报告模板word数学建模模板免费领~(开头直接放百度网盘链接,直接拿去用就行)
  12. python运动目标检测_运动目标检测(3)—光流法
  13. 苹果开发☀️ 一、Unity开发苹果应用流程
  14. 说几句得罪人的大实话
  15. 【UEFI】---关于BIOS,EIST和PStateCState和CPU主频变化得关系
  16. win10计算机怎么注销用户,windows10系统如何取消微软账户登陆
  17. [博学谷学习记录]超强总结,用心分享|Hive的压缩格式
  18. Apache Log4j漏洞学习笔记
  19. python读取excel绘图_python3读取excel绘图-女性时尚流行美容健康娱乐mv-ida网
  20. 加湿器工作原理与电路介绍(共19页pdf下载)附电路原理图(转)

热门文章

  1. 〖大前端 - 基础入门三大核心之 html 篇⑥〗- 认识标签、标题和段落标签
  2. Nvidia Jetson AGX Orin 64G深度学习环境配置的超详细教程
  3. Java单商户商城源码 小程序+H5 B2B2C商城源码
  4. 关于三维坐标系基本概念的一些另类理解
  5. 递推法输出斐波拉契数列
  6. 理想国matplotlib入门教程
  7. android截屏,保存图片
  8. mac 安装自己的web 开发软件
  9. WEB前端开发技巧与注意事项
  10. 宝塔服务器删除网站缓存,使用宝塔的WordPress网站如何优化服务器缓存问题