分布式事务LCN和seata对比

分布式事务之LCN、TCC特点、事务补偿机制缘由以及设计重点 详情参考:官网(中文版)有了前面的XA协议以及二阶段提交的知识, 就不难理解LCN框架了, 这个框架可以理解成就是上面所说的协调者, 不生产事务, 只负责协调事务。5.0以后框架兼容了LCN、TCC、TXC三种事务模式。LCN中各个字母依次代表:锁定事务单元(lock)、确认事务模块状态(confirm)、通知事务(notify)。在一个分布式系统下存在多个模块协调来完成一次业务。那么就存在一次业务事务下可能横跨多种数据源节点的可能。TX-LCN目的是解决这样的问题。例如存在服务模块A 、B、 C。 阅读详情

一、LCN实现原理
1.发起方与参与方都与我们的LCN管理器一直保持长连接;
2.发起方在调用接口之前,先向LCN管理器申请一个全局的事务分组id;
3.发起方调用接口的时候在请求头中传递事务分组id;
4.参与方获取到请求头中有事务分组的id的,则当前业务逻辑执行完实现假关闭,不会提交或者回滚当前的事务。
5.发起方调用完接口后,如果出现异常的情况下,在通知给事务协调者回滚事务,这时候事务协调则告诉给参与方回滚当前的事务。
 

二、Seata实现原理
1.TM(发起方)连接到我们的TC事务协调者,创建一个全局的事务的xid,保存到ThreadLoacl中;
2.TM(发起方)和RM(参与方)都被Seata的数据数据源实现代理,在原生的sql之前和之后保存原来和修改后日志到undo_log中,方便后期实现回滚。
3.TM(发起方)使feign客户端调用接口时候,在ThreadLoacl中获取xid,设置到请求头中;
4.RM(参与方)从请求中获取到该xid,设置到ThreadLoacl中,同时也会向seataserver注册该分支事务。
5.TM(发起方)将当前本地事务的结果,告诉给协调者TC,协调者TC在通知所有的分支是否回滚。
6. TM(发起方)如果调用接口成功之后抛出异常的情况下,告诉给协调者TC,协调者TC在通知所有的分支根据根据全局的xid和分支事务的id 查询分支数据源的undo_log日志表逆向生成sql语句实现回滚,同时删除对应的undo_log日志
7. TM(发起方)如果调用接口成功之后没有抛出任何的异常,告诉给协调者TC,协调者TC在通知所有的分支根据根据全局的xid和分支事务的id 查询分支数据源的 删除对应的undo_log日志表

Seata原理分析
1.发起方TM会向我们的TC协调者申请一个全局的事务id,保存到threadlocal中;
2.TM和RM都会被Seata代理数据源,写入原来和修改后内容保存到undo_log表中;
3.TM从请求头中传递该全局的事务id给RM,RM从请求中头中获取到该全局事务id,并且注册该分支。
4.如果TM调用接口成功之后,如果报错的情况下则通知给协调者,协调者在告诉所有的分支都开始回滚,直接根据本地事务id+xid查询undo_log表 ,逆向生成sql语句回滚,同时删除该undo_log日志。
5.如果TM调用接口成功之后,如果没有报错的情况下则通知给协调者,协调者在告诉所有的分支都开始提交事务,直接根据本地事务id+xid删除对应的undo_log表记录即可。

undo_log表每个数据库都要

前置镜像 select * from order state = 0 原来的值
Update order set state(1) where userID=1 订单服务实现 1
后置镜像 1 之后的值
逆向的话 Update order set state(0) where userID=1

要注册到nacos上实现高可用
 

三、Seata与Lcn的区别

1、seata没有管理页面

2、LCN配置简单易上手

3、基本实现的思路差不多,唯一区别在于回滚的方式 LCN采用代理数据源假关闭连接,暂时不提交本地事务,但是容易造成数据的死锁。
4、Seata采用undo_log的形式逆向生成sql语句实现回滚,避免死锁现象但是容易出现脏读。

【微服务】分布式事务解决方案 TX-LCN 实战操作详解 分布式事务解决方案 TX-LCN 实战操作详解 阅读详情

相关推荐

侧杆试验 - 高速撞击 - 显式动力学 - ANSYS Workbench

显式动力学是一种时间积分方法,用于在速度很重要时执行动态模拟。显式动力学考虑快速变化的条件或不连续事件,例如自由落体、高速撞击和施加的负载。由于这些“非线性动力学”已集成到模拟中,因此显式动力学是模拟高度瞬态物理现象的首选。有些侧面碰撞是指车辆侧向撞上路边的坚硬物体,如树木或电线杆。这通常是由于驾驶员失去控制、超速、误判拐角或在湿滑路面上打滑造成的。

jianqimingtian的博客 1289

分布式事务解决方案「手写代码」

<img src="https://img-bss.youkuaiyun.com/201912090245244367.png" alt="" />

8位可控加减法电路设计

一、设计要求   利用Logisim平台中现有运算部件构建一个8位可控加减法器,可支持八位加减法,利用已经封装全加器和逻辑门进行连接,要求实现相应的输出,判断是否溢出。 二、方案设计 实验原理: [A]补+[B]补 = [A+B]补(mod2^n+1)   公式1        [A-B]补 = [A]补+[-B]补(mod2^n+1)    公式2 FA为全加器,利用全加器实现加减法,难点在于实验减法,对输入的[Y]补各位取反加一即为[-Y]补,利用公式2,就可以将减法转化为加法再利用全加

qq_51700383的博客 1万+

Seata与Lcn的区别

已成功起飞!将自己进大厂前花4w买的java全套教程,整整300集,现在拿出来分享给大家!拿走不谢!从入门到精通 学会即可就业!_哔哩哔哩_bilibili 相同点 a、都能解决分布式事务问题 b、都使用AOP代理事务 c、事务的提交和回滚都是由发起方决定。 不同点 核心:事务的回滚机制不一致,LCN是全局假关闭事务,Seata是采用undo_log生成逆向sql回滚操作。 a、LCN的事务代理是全局的,采用了假关闭模式。 Seata事务代理只是代理局部各自的事务,在原生sql的前后记录了操作

jmysql的博客 1110

嵌入式开发语言-C语言编程

C语言编程概述环境在Windows上构建C语言的环境安装在Mac上构建C语言的环境安装 概述 “C语言”被称为适合嵌入式系统开发的编程语言之一。 C语言在一般的编程中也是熟悉的开发语言,但实际上,如果试着使用C语言制作微型计算机的控制程序等,就必须使用与“普通的C程序”不同的使用方法。 作为一般的C语言的学习方法,使用“printf”“scanf”等标准函数的程序开发是固定的,但这些都是以UNIX和Windows等环境上的应用程序开发为前提的。 对此,没有显示器和键盘的嵌入式系统的微型计算机控制程序,该如何

编程老王 7979

【光伏风电功率预测】基于 ICEEMDAN + MSCNN-BiGRU-Attention 的并行预测模型

本文提出一种基于ICEEMDAN分解与多尺度深度学习的光伏/风电功率并行预测框架。针对多能源、多时间尺度、强非平稳特性带来的建模挑战,该模型首先通过改进的ICEEMDAN算法将原始功率序列分解为不同频段的IMF分量;随后为每个IMF构建包含多尺度CNN、双向GRU和注意力机制的子模型,实现局部特征提取与时序依赖建模;最后通过并行预测与重构获得最终功率输出。实验表明,该方法能有效解决模式混叠问题,提升预测精度,并支持光伏/风电的独立或联合预测部署,适用于风光联合调度等工程场景。

专注AI大模型,软件混淆,授权 155

分布式事务选型

Lcn Lock(锁定事务单元)、Confirm(确认事务)、Notify(通知事务),属于两阶段提交 LCN分布式事务框架是一款事务协调性的框架,框架本身并不创建事务,只是对本地事务做协调控制。因此该框架与其他第三方的框架兼容性强,支持所有的关系型数据库事务,支持多数据源,支持与第三方数据库框架一块使用 特点 无侵入式支持分布式事务。 支持多种模式混合使用。 支持关系型数据、NoSQL数据库。 支持SpringCloud Dubbo等RPC框架。 支持负载均衡与集群化部署。 高性能与高稳定性。 S

ZJX103RLF的博客 773

高性能优化的本质

在很早之前,处理器性能的提升一般是通过减小元器件的尺寸,增加元器件的数量,提高主频来实现,这也是摩尔定律所说的,但是由于功耗的影响,主频不能一直增加。后来,由于英伟达的GPU的并行计算的出现,逐渐打破摩尔定律,人们利用多核,SIMD,SIMT来处理大量相同计算的数据,这极大的提高了效率。计算机的算力得到了巨大的提升,但是并行是困难的,对于有数据依赖的程序来说,处理并行是一件及其困难的事,但对于一些简单的数学库的计算,并行的实现相对简单。

发狂的小花的博客 274

【分布式事务----LCN】LCN原理及使用方式

一、简介 LCN分布式事务框架其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性的效果。 LCN5.0.2有3种模式,分别是LCN模式,TCC模式,TXC模式 LCN模式: LCN模式是通过代理Connection的方式实现对本地事务的操作,然后在由TxManager统一协调控制事务。当本地事务提交回滚或者关闭连接时将会执行假操作,该代理的连接将由LCN连接池管理。 该模式的特点: - 该模式...

lgxzzz的博客 4165

1、VMware vSphere 全面指南:从入门到精通

本文全面介绍了VMware vSphere从入门到精通的完整知识体系,涵盖基础概念、环境适配、部署规划、安装配置、网络与存储准备、虚拟机创建与管理、资源组织、事件监控、巡检流程、主机配置文件管理、资源池优化、高可用性与容错应用,以及故障排除方法。结合实用工具和部署技巧,帮助读者系统掌握vSphere的核心功能与运维实践,提升虚拟化环境的稳定性与管理效率。

pz890123的博客 96

ESD防护设计宝典(十):RE(辐射发射)超标问题排查与解决

RE测试是EMC认证的“头号杀手”。当屏幕上出现一根根超标频谱线时,如何快速定位元凶并有效整改?本讲将带你化身电磁侦探,完成一次完美的RE问题“缉凶”。

m0_56451176的博客 395

SpringCloud分布式事务深度解析:Seata AT模式与LCN方案全维度对比

SpringCloud分布式事务深度解析:Seata AT模式与LCN方案全维度对比。5000字的深度解析,您应该已经全面掌握了Seata AT和LCN的核心原理、实现细节和生产实践要点。在实际项目中,建议根据具体业务需求和技术栈选择合适的方案,或者采用混合架构实现最佳平衡。

夜雨的博客 1124

天龙八部TLBB系列 - 网单服务端各目录文件说明【超详细】

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等) --- 天龙八部服务端各目录详细说明

空名先生 7637

分布式事务解决方案tx-lcn和seata简单对比分析

tx-lcn是本地事务协调,本身并不会产生事务 seata 是两阶段提交事务,第一阶段解析业务sql并生成对应快照,第二阶段是提交/回滚,并删除快照

婲落ヽ红颜谇的博客 4609

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

分布式事务:Raincat、TX-LCN、Seata 介绍

分布式事务:Raincat、TX-LCN、Seata 介绍 Raincat , 帮助文档 , github , 1千多星 遗憾的是不支持 2.7 (Support for the dubbo framework Less than 2.7 version) TX-LCN , 官方文档 , github , 3千多星 , 5.0以后由于框架兼容了LCN(2pc)、TCC、TXC 三种事务...

Dong滴个Dong的博客 7981

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

分布式事务选型及对比

的风格

Quan 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

分布式 - 分布式事务面试题

文 1 分布式事务面试题 现在Java面试,分布式系统、分布式事务几乎是标配。而分布式系统、分布式事务本身比较复杂,大家学起来也非常头疼。 最为常见的面试题: 问:分布式事务了解吗?你们是如何解决分布式事务问题的? (标准答案:见末尾) 问题1、分布式事务产生的背景? 在传统的单体项目中,多个不同的业务逻辑使用的都是同一个数据源,使用的都是同一个事务管理器,所以不会存在事务问题。 在分布式或者微服务架构中,每个服务都有自己的数据源,使用不同事务管理器,如果A服务去调用B服务,B服务执行失败了,

Pastxu的小屋 1万+

Seata原理!

Seata和LCN的区别 1. 基本实现思路是一样的,唯一区别在于回滚方式,LCN采用代理数据源假关闭连接,暂时不提交本地事务,但是容易造成死锁。 -- 假关闭其实就是api,因为连接也是可以被aop代理的,原生的commit被拦截到就不会走commit会进行wait线程等待,等待全局事务协调者发送通知是提交还是回滚。 2. seata采用undo_log的形式逆向生成sql语句实现回...

祁_z 1771

Seata 初识

背景先交代一下背景,在2019年8月我们的微服务需要加上分布式事务支持,因为当时已经开发了很多模块了。所以只能找寻对代码入侵少的方案,当时选择了TX-LCN。它只需要启动一个管理端,然后在事务参与方的service层实现方法加上@LcnTransaction注解就能发起或加入分布式事务了。但是2020年年初,TX-LCN的作者(lorne)突然宣布由于一直没有解决资金问题,无法持续投入维护,而且随着TX-LCN框架的停滞,阿里的seata框架也已经慢慢顺势而来... 上面就是TX-LCN作者的原话。那么

胡汉三 604

几种分布式事务技术的比较

的表),但是保证强一致性。 2、TCC:需要改造业务逻辑,手动实现 try的锁定的功能。对业务侵入很强。 3、saga:默认执行成功,在需要的时候,再回调cancel。已经提交的事务,不保证隔离性。 4、seata:对于update insert delete自动生成回滚的sql,需要时进行回滚,但是不保证数据的强一致性,回滚时会导致脏读(回滚和提交是2个本地的事务) 5、lcn:发起方最后成功,触发各个阶段的真正提交。不会脏读,性能介于seata和2阶段之间。但是发起方挂了,会导致 数据不一

eric1984的专栏 385

Seata

1、分布式事务产生的背景? 在传统的单体项目中,多个不同的业务逻辑使用的都是同一个数据源,使用的都是同一个事务管理器,所以不会存在事务问题。在分布式或者微服务架构中,每个服务都有自己的数据源,使用不同事务管理器,如果A服务去调用B服务,B服务执行失败了,A服务的事务和B服务的事务都会回滚,这时候是不存在事务问题的,但是如果A服务B服务执行成功之后出现异常,A服务的事务会回滚,但是B服务的事务不会回滚,此时就存在分布式事务问题。(在单体的项目中,有多个不同的数据源,每个数据源中都有自己独立的事务管理器,互不

小石头 323

【分布式事务】分布式事务解决方案理论

分布式事务解决方案

低调做人,低调编码,神码都是浮云 2263

分布式事务--TCC的中间件--选型/对比

本文介绍分布式事务的TCC的一些中间件。

IT利刃出鞘的博客 4065
上一篇: spring cloud gateway
下一篇: jvm调优之分层编译
西游却冻醒
博客等级 码龄11年 47粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值