- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
LCN-分布式事务
展开查看详情
1 .了解 LCN 分布式事务框架 Lorne
2 .什么是 LCN LCN 与 其他分布式事务的 区别 LCN 分布式事务的架构 设计 LCN 源码分析
3 .LCN 介绍 前言: 公司在 2016 年 11 月份 自行设计 了第一款 基于 mq 消息队列 的分布式 事务框架 。 当时 公司底层的 技术 框架是 springmvc+spring+springjdbc 。 年后 公司 框架开始 转变 成 了 springcloud 框架, 因此开启了分布式事务的探索之路 。 LCN v 1.0 的 框架 思想依旧 采用 了 之前 的 mq 分布式事务 设计 思想 , 框架分为三阶段: lock (锁定)、 confirm (确认)、 notify (通知)。因此 LCN 的名称是这样得来的。 v1.0 设计原理 - LCN 的第一个版本 v2.0 设计原理 - 替换了通讯框架 v2.1 设计原理 - 简化了操作步骤 v2.2 设计原理 - 增加了事务补偿 v2.3 设计原理 - 合并增加和修改事务组,简化分布式启动模块业务处理,优化模块二次调用 v3.0 设计原理 - 将事务控制权转移给代理连接 池 LCN 官网地址: http://www.txlcn.org LCN 的 GitHub 地址: https:// github.com/1991wangliang/tx-lcn
4 .LCN 与 其他分布式 事务的区别 目前 可以做到 的 分布式事务 数据库 框架 类型 有 : 2PC 、 3PC 、 TCC 、 Paxos 算法 、分布式数据库 。 2PC 、 3PC 其实 可以理解 为一类,而且 2PC 有隐患 因此才诞生了 3PC 。但是 3PC 也存在隐患。 TCC 机制 ,也存在幂等性 操作问题 ,开发 使用复杂 。 LCN 机制 是 原理是取长补短,即 采用 了 3PC 的 原理, 有 结合 TCC 的补偿 机制。 Paxos 算法 / 分布式 数据库: Paxos 算法促生了一些分布式数据库 , 但是 目前 比较成熟的还比较少 , 对现有的数据库兼容性不好, 可 参考 alisql 数据库 。 http :// www.hollischuang.com/archives/681 2pc 、 3pc 原理 http:// www.cnblogs.com/rainwang/p/7099648.html tcc 机制 http:// www.cnblogs.com/cchust/p/5617989.html paxos 算法 https:// github.com/1991wangliang/tx-lcn/blob/master/tx-manager/README3.0.md lcn 原理 http:// www.oschina.net/p/alisql alisql 数据库 http:// developer.51cto.com/art/201708/547380.htm 阿里的 X- Paxos 的应用实践
5 .LCN 分布式事务的架构 设计 事务协调器( TxManager )、事务发起者、事务参与方 劫持连接池计划 https ://github.com/1991wangliang/tx-lcn/blob/master/tx-manager/README3.0.md 事务操作步骤说明 https ://github.com/1991wangliang/tx-lcn/blob/master/tx-manager/README2.3.md 事务协调器 事务发起方 事务参与方
6 .事务组解释 事务组是由同一次事务下的各个事务单元组成的 事务 组合,叫做事务组 。 若:存在模块 A 、 B 。 A 模块下存在 a(),b() ; B 模块下存在 c(),d(); 方法的调用关系是: a()->b()->c()->d() ; http:// blog.csdn.net/flqljh/article/details/49834011 事务的 7 个传播行为 B{ c() d () } A{ a() b() }
7 .LCN 原理介绍 A{ a1(){ B.b1(); a2(); } a2 (){ int i = 100/0; } } TM A. a1() A. a2 () B. b1() B. b2() B { b1(){ b2(); } b2(){ } } 调用关系: A 的 a1() 方法是启动方法。 执行顺序是 : A.a1()-> B.b1()->B.b2()-> A.a2()
8 .LCN 劫持连接池计划 TxManager DB 数据库 业务系统 LCN 代理连接池 数据库连接池
9 .LCN 源码分析 源码地址: https :// github.com/1991wangliang/tx-lcn Dubbo 的 demo 地址: https :// github.com/1991wangliang/dubbo-lcn-demo SpringCloud 的 demo 地址: https :// github.com/1991wangliang/springcloud-lcn-demo
10 .感谢 观看