news 2026/5/25 13:37:39

5、Seata

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5、Seata

分布式事务 产生原因:

  • 由于service相互分离,没有协同,相互感知各自的状态,导致事务回滚出现问题

原理

  • RM(Resource Manager):用于直接执行本地事务的提交和回滚。
  • TM(Transaction Manager):TM是分布式事务的核心管理者。比如现在我们需要在借阅服务中开启全局事务,来让其自身、图书服务、用户服务都参与进来,也就是说一般全局事务发起者就是TM。
  • TC(Transaction Manager)这个就是我们的Seata服务器,用于全局控制,比如在XA模式下就是一个协调者的角色,而一个分布式事务的启动就是由TM向TC发起请求,TC再来与其他的RM进行协调操作。

TM请求TC开启一个全局事务,TC会生成一个XID作为该全局事务的编号,XID会在微服务的调用链路中传播,保证将多个微服务的子事务关联在一起;RM请求TC将本地事务注册为全局事务的分支事务,通过全局事务的XID进行关联;TM请求TC告诉XID对应的全局事务是进行提交还是回滚;TC驱动RM将XID对应的自己的本地事务进行提交还是回滚;


一、安裝

各个服务作为Seate的客户端,只需要导入依赖即可:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency>

然后添加配置:

seata:service:vgroup-mapping:# 这里需要对事务组做映射,默认的分组名为 应用名称-seata-service-group,将其映射到default集群# 这个很关键,一定要配置对,不然会找不到服务bookservice-seata-service-group:defaultgrouplist:default:localhost:8868

二、使用

开启分布式事务的方法上添加@GlobalTransactional注解:

@GlobalTransactional@OverridepublicbooleandoBorrow(intuid,intbid)

Seata会分析修改数据的sql,同时生成对应的反向回滚SQL,这个回滚记录会存放在undo_log 表中。所以要求每一个Client 都有一个对应的undo_log表(也就是说每个服务连接的数据库都需要创建这样一个表,这里由于我们三个服务都用的同一个数据库,所以说就只用在这个数据库中创建undo_log表即可),表SQL定义如下:

CREATETABLE`undo_log`(`id`BIGINT(20)NOTNULLAUTO_INCREMENT,`branch_id`BIGINT(20)NOTNULL,`xid`VARCHAR(100)NOTNULL,`context`VARCHAR(128)NOTNULL,`rollback_info`LONGBLOBNOTNULL,`log_status`INT(11)NOTNULL,`log_created`DATETIMENOTNULL,`log_modified`DATETIMENOTNULL,`ext`VARCHAR(100)DEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`ux_undo_log`(`xid`,`branch_id`))ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=utf8;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 7:27:02

【OCR精度飞跃秘诀】:利用Dify构建Tesseract专属词典的7大核心步骤

第一章&#xff1a;OCR精度飞跃的核心驱动力近年来&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术的识别精度实现了显著提升&#xff0c;其背后的关键推动力来自深度学习、高质量数据集以及端到端模型架构的持续优化。这些技术要素共同作用&#xff0c;使OCR系统在复…

作者头像 李华
网站建设 2026/5/26 6:55:41

Dify格式转换没人告诉你的秘密,老司机都在用的3个黑科技

第一章&#xff1a;Dify格式转换没人告诉你的秘密在使用 Dify 平台进行 AI 应用开发时&#xff0c;数据格式的精准转换是决定工作流稳定性的关键。许多用户忽略了其内置转换器对特定字段类型的隐式处理规则&#xff0c;导致输出结果与预期偏差。理解默认 JSON 解析行为 Dify 在…

作者头像 李华
网站建设 2026/5/26 7:19:20

前缀和+差分

前提提要&#xff1a;这两种算法都不用背&#xff0c;重点是理解&#xff0c;等题目需要时&#xff0c;自己画图解决&#xff01;注意不管是前缀和还是差分 我们一定要数组下标从1开始&#xff01;前缀和&#xff08;分成一维和二维&#xff09;作用&#xff1a;求一段序列的和…

作者头像 李华
网站建设 2026/5/26 7:15:59

年度精选:数字人公司推荐,帮你提升企业效率的最佳选择

探索2025年度数字人行业的精英公司。在这份精选推荐中&#xff0c;我们为您呈现三家最优秀的数字人公司&#xff0c;它们以领先技术和卓越服务为企业效率提升提供助力。无论您是想优化团队协作还是增强客户服务&#xff0c;这里都有值得信赖的选择&#xff0c;帮助您在竞争中脱…

作者头像 李华
网站建设 2026/5/25 21:59:34

【环境监测数据同化实战指南】:掌握R语言高效融合多源观测数据的核心技术

第一章&#xff1a;环境监测数据同化的基本概念与R语言基础环境监测数据同化是将观测数据与数值模型预测融合&#xff0c;以获得更准确环境状态估计的技术。该方法广泛应用于空气质量预测、水文模拟和气候建模等领域。通过引入真实观测信息&#xff0c;数据同化能够有效校正模型…

作者头像 李华