Seata分布式框架结合Spring Boot 解决分布式事务问题

Seata 入门与实战 Seata 是一款开源的分布式事务解决方式,致力于提供高性能和简单易用的分布式事务服务。Seata 为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式事务解决方案。**概念:**性能相比其他事务要差一点,但能保证最严格的数据一致性。XA 模式需要设置串行化隔离级别,相当于对数据添加了读写锁。另外连接资源需要在整个事务期间保持,这样可能会导致资源锁定问题,从而影响并发事务吞吐。**优点:**实现简单、无业务侵入**缺点:**性能差、必须实现 XA 协议、容易产生死锁。 阅读详情

概述

  1. Seata 是阿里开源的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

2. 四种事务模式

Seata 目标打造一站式的分布事务的解决方案,最终会提供四种事务模式:
AT 模式:参见《Seata AT 模式》文档
TCC 模式:参见《Seata TCC 模式》文档
Saga 模式:参见《SEATA Saga 模式》文档
目前使用的流行度情况是:AT > TCC > Saga。因此,我们在学习 Seata 的时候,可以花更多精力在 AT 模式上,最好搞懂背后的实现原理,毕竟分布式事务涉及到数据的正确性,出问题需要快速排查定位并解决。
在 Seata 的架构中,一共有三个角色:
在这里插入图片描述

  1. TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。
  2. TM (Transaction Manager) - 事务管理器:定义全局事务的范围,开始全局事务、提交或回滚全局事务。
  3. RM ( Resource Manager ) - 资源管理器:管理分支事务处理的资源( Resource ),与 TC
    交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

其中,TC 为单独部署的 Server 服务端,TM 和 RM 为嵌入到应用中的 Client 客户端
在这里插入图片描述

TM 请求 TC 开启一个全局事务。TC 会生成一个 XID 作为该全局事务的编号。

“XID,会在微服务的调用链路中传播,保证将多个微服务的子事务关联在一起。

  1. RM 请求 TC 将本地事务注册为全局事务的分支事务,通过全局事务的 XID 进行关联。
  2. TM 请求 TC 告诉 XID 对应的全局事务是进行提交还是回滚。
  3. TC 驱动 RM 们将 XID 对应的自己的本地事务进行提交还是回滚。
    因为 Seata 是基于 DataSource 数据源进行代理来拓展,所以天然对主流的 ORM 框架提供了非常好的支持:
    MyBatis、MyBatis-Plus
  4. 部署单机 TC Server

本小节,我们来学习部署单机 Seata TC Server,常用于学习或测试使用,不建议在生产环境中部署单机。
因为 TC 需要进行全局事务和分支事务的记录,所以需要对应的存储。目前,TC 有两种存储模式( store.mode ):
file 模式:适合单机模式,全局事务会话信息在内存中读写,并持久化本地文件 root.data,性能较高。
db 模式:适合集群模式,全局事务会话信息通过 db 共享,相对性能差点。
显然,我们将采用 file 模式,最终我们部署单机 TC Server 如下图所示:
在这里插入图片描述
2.1 下载 Seata 软件包

打开 Seata 下载页面,选择想要的 Seata 版本。这里,我们选择 v1.1.0 最新版本。
在这里插入图片描述
2.2 启动 TC Server
执行 nohup sh bin/seata-server.sh & 命令,启动 TC Server 在后台。在 nohup.out 文件中,我们看到如下日志,说明启动成功:

在这里插入图片描述
默认配置下,Seata TC Server 启动在 8091 端点。
因为我们使用 file 模式,所以可以看到用于持久化的本地文件 root.data。操作命令如下:
在这里插入图片描述
3. 部署集群 TC Server

本小节,我们来学习部署集群 Seata TC Server,实现高可用,生产环境下必备。在集群时,多个 Seata TC Server 通过 db 数据库,实现全局事务会话信息的共享。
同时,每个 Seata TC Server 可以注册自己到注册中心上,方便应用从注册中心获得到他们。最终我们部署 集群 TC Server 如下图所示:
在这里插入图片描述
Seata TC Server 对主流的注册中心都提供了集成,具体可见 discovery 目录。考虑到国内使用 Nacos 作为注册中心越来越流行,这里我们就采用它。
3.1 下载 Seata 软件包
打开 Seata 下载页面,选择想要的 Seata 版本。这里,我们选择 v1.1.0 最新版本。

在这里插入图片描述
3.2 初始化数据库

① 使用 mysql.sql 脚本,初始化 Seata TC Server 的 db 数据库。脚本内容如下:
在这里插入图片描述
在这里插入图片描述
在 MySQL 中,创建 seata 数据库,并在该库下执行该脚本。最终结果如下图
在这里插入图片描述
② 修改 conf/file 配置文件,修改使用 db 数据库,实现 Seata TC Server 的全局事务会话信息的共享。如下图所示:
在这里插入图片描述
③ MySQL8 的支持
首先,需要下载 MySQL 8.X JDBC 驱动,命令行操作如下:
在这里插入图片描述
然后,修改 conf/file 配置文件,使用该 MySQL 8.X JDBC 驱动。如下图所示:在这里插入图片描述
3.3 设置使用 Nacos 注册中心

修改 conf/registry.conf 配置文件,设置使用 Nacos 注册中心。如下图所示:
在这里插入图片描述
3.4 启动 TC Server

① 执行 nohup sh bin/seata-server.sh -p 18091 -n 1 & 命令,启动第一个 TC Server 在后台。
-p:Seata TC Server 监听的端口。
-n:Server node。在多个 TC Server 时,需区分各自节点,用于生成不同区间的 transactionId 事务编号,以免冲突。
在 nohup.out 文件中,我们看到如下日志,说明启动成功:
在这里插入图片描述
② 执行 nohup sh bin/seata-server.sh -p 28091 -n 2 & 命令,启动第二个 TC Server 在后台。
③ 打开 Nacos 注册中心的控制台,我们可以看到有两个 Seata TC Server 示例。如下图所示:
在这里插入图片描述
4. 接入 Java 应用

4.1 AT 模式

① Spring Boot
1、《Spring Boot 分布式事务 Seata 入门》的「2. AT 模式 + 多数据源」小节,实现单体 Spring Boot 项目在多数据源下的分布式事务。
在这里插入图片描述
2、《芋道 Spring Boot 分布式事务 Seata 入门》的「AT 模式 + HttpClient 远程调用」小节,实现多个 Spring Boot 项目的分布事务。
在这里插入图片描述
② Dubbo
《Dubbo 分布式事务 Seata 入门》的「2. AT 模式」小节,实现多个 Dubbo 服务下的分布式事务。
在这里插入图片描述
③ Spring Cloud
《芋道 Spring Cloud Alibaba 分布式事务 Seata 入门》的「3. AT 模式 + Feign」小节,实现多个 Spring Cloud 服务下的分布式事务。
在这里插入图片描述

Seata入门 Seata AT模式是基于二阶段提交的事务模式,优点是对原有业务无入侵性,入门简单。在 AT 模式下,用户只需关注自己的“业务 SQL”,用户的 “业务 SQL” 作为一阶段,Seata 框架会自动生成事务的二阶段提交和回滚操作。 阅读详情

相关推荐

Alibaba Seata 详解

Seata 是微服务架构下分布式事务的最优解之一,通过多事务模式适配不同场景无侵入的编程方式高性能的协议设计,解决了传统分布式事务方案的痛点。在实际开发中,90% 以上的微服务业务可直接使用AT 模式,实现分布式事务的快速落地;对于高一致性要求的金融业务,使用 TCC 模式;对于长事务、多步骤业务,使用 SAGA 模式,真正做到「按需选择」。其开源生态活跃,持续迭代优化,已成为阿里系微服务技术栈(Spring Cloud Alibaba)的核心组件,也是国内分布式事务中间件的事实标准。

weixin_53050448的博客 721

seata入门

seata的初步使用

weixin_42996452的博客 3341

【2.2 分布式事务(Seata)】Seata框架入门介绍

一个分布式的全局事务,整体是两阶段提交的模型。全局事务是由若干分支事务组成的,分支事务要满足两阶段提交的模型要求,即需要每个分支事务都具备自己的:一阶段prepare行为二阶段commit或rollback行为根据两阶段行为模式的不同,我们将分支事务划分为。

奶爸的编程之路,也就一周冷个三天 1873

分布式事务协调中间件---seata快速入门

为了保证分布式服务中的acid ,需要学习了解分布式服务协调框架

qq_55272229的博客 2622

Python RPA 流程自动化快速上手

Python RPA 流程自动化快速上手

看花容易绣花难 1万+

【UV打印机】PrintExp打印软件教程(六)-高级模式(马达)

输入高级模式密码进入高级模式高级模式界面有操作栏、控制栏、参数栏及参数界面操作栏名称功能说明文件加载数据从板卡加载参数保存将参数保存到主板退出退出高级模式固件导入固件导入配套版本下的固件配置*xpcfx导出固件导出当前使用的固件配置*xpcfx导入波形文件导入对应的波形文件*waf操作初始化系统继续初始化动作复位X轴复位回原点控制栏可进行小车运动、闪喷操作(此闪喷为点击进行闪喷,不受平台位置限制),无清洗功能。

Print World的专栏 3113

Seata分布式事务

在单体架构下,我们可以很方便地使用本地事务。例如,在 Java 的 Spring 框架中,直接使用// 生成订单// 扣减库存// 处理支付在这种情况下,如果某一步操作失败,注解会自动回滚,确保数据一致性。服务之间的数据隔离:在微服务架构中,和可能在不同的服务中,并且各自有独立的数据库,仅对本地事务有效,无法管理跨服务的数据库操作。网络通信的不确定性:在分布式环境下,服务之间通过网络通信,存在延迟或网络故障,导致事务不可靠。例如,订单创建成功后,库存服务请求超时,此时的本地事务无法确保整体的回滚。

qq_44199605的博客 1529

基于Kubernetes的ML平台架构设计

本文在Kubernetes开源组件的基础上,对ML平台各部分组件的作用进行了介绍,并且进行了组件选型,初步设计了ML平台的技术架构。

2401_83124266的博客 2052

MateCloud分布式事务解决方案:Seata与RabbitMQ的完美结合

在微服务架构中,**分布式事务**一直是开发者面临的核心挑战之一。MateCloud作为基于Spring Cloud Alibaba的微服务架构,提供了完整的分布式事务解决方案,通过**Seata**与**RabbitMQ事件驱动**的完美结合,实现了强一致性与最终一致性的灵活选择。本文将深入解析MateCloud如何优雅地解决分布式事务问题,帮助开发者构建可靠的微服务系统。 ## 为什么分布式

gitblog_00031的博客 678

实战指南:用Python实现ONVIF WS-Discovery设备发现(附完整代码)

本文提供了一份详细的实战指南,介绍如何使用Python实现基于ONVIF标准的WS-Discovery设备发现协议。文章深入解析了协议原理、网络通信模型,并提供了完整的代码实现,帮助开发者快速构建智能安防和物联网应用中的设备自动发现工具,有效提升网络设备集成与管理的效率。

chair的专栏 1116

C#实现跨域访问共享文件夹的账号密码验证方案

本文详细介绍了在C#中实现跨域访问共享文件夹的账号密码验证方案。通过调用Windows API LogonUser函数,结合LOGON32_LOGON_NEW_CREDENTIALS登录类型,可安全模拟指定用户身份,有效解决工作组与域环境间的文件共享访问难题。文章提供了完整的工具类封装、多种实战场景示例及详细的错误排查指南。

pea55的博客 542

【分布式】分布式事务框架 Seata 详解:架构与四种实现模式

自 2019 年开源以来,它提供了高效、易用的分布式事务服务,支持多种数据库和中间件。Seata 的核心在于其四种事务模式:AT、TCC、Saga 和 XA,这些模式从非入侵式到补偿式,覆盖了不同业务场景。本文将从 Seata 的整体架构入手,逐一剖析这四种模式,帮助你理解其原理、实现和应用。TCC 是柔性事务模式,将事务拆分成 Try(预留资源)、Confirm(确认)和 Cancel(取消)。开发者需手动实现这些接口。Saga 适合长链事务,将全局事务拆分成子事务序列,每个有正向和补偿操作。

2402_89042144的博客 1649

手把手教你用NetToPLCsim搭建西门子S7-1200仿真环境(附避坑指南)

本文详细指导如何利用NetToPLCsim与PLCSIM搭建西门子S7-1200仿真环境,实现无硬件条件下的PLC程序测试与上位机通信开发。内容涵盖软件选型、环境部署、关键参数配置及通信测试,并重点提供了连接失败、数据读写错误等常见问题的深度避坑指南,帮助工程师高效构建可靠的虚拟调试工作流。

a3b4c5的博客 616

Java面试必备:Spring Boot与分布式事务实战解析

Spring Boot作为Java生态中的主流开发框架,通过自动配置机制简化了应用开发流程,其核心原理涉及条件装配和starter机制。分布式事务则是构建高可用系统的关键技术,涵盖2PC、TCC、SAGA等多种模式,确保数据一致性。理解这些技术不仅有助于应对互联网大厂的技术面试,更能提升系统设计能力。在实际应用中,Seata框架通过TC、TM、RM等模块实现分布式事务管理,而Spring Boot的扩展机制则支持灵活的业务适配。掌握这些技术,开发者能够更好地处理电商、金融等场景下的复杂业务逻辑。

weixin_30394981的博客 486

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging )

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging) 如今,大多数可用的显示设备无法本地显示HDR内容。 入门级显示器的对比度仅为200:1。 尽管高端液晶电视具有更高的对比度,但平均对比度约为10,000:1,但通常每个色彩通道的离散度为8位,很少为10位。 这意味着色调限制为255。在过去的二十年中,研究人员花费了大量时间和精力来压缩HDR图像和视频的范围,以便可以在LDR显示器上更“自然”地看到数据。 图3.1 色调映射和真实场景之间.

ISP行业的忠实粉丝 1866

【系统架构设计师】论文:论虚拟现实技术的应用与发展

虚拟现实技术是当前科学研究的热点,同时也是国家大力支持发展的核心技术之一。所谓虚拟现实,就是通过计算机等虚拟手段来构造一个非常接近真实世界的虚拟环境,它主要体现在视觉、触觉、嗅觉等方面的逼真模拟来达到高度的沉浸性,也就是如我们通常所说的“身临其境”。

数据知道的博客 1万+

springboot dubbo seata nacos集成 分布式事务seata实现

springboot dubbo seata nacos集成 分布式事务seata实现

北巷东东的专栏 1106

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

分布式事物seata的AT模式实战

Seata是一款开源的分布式事务解决方案,提供AT、TCC、SAGA和XA四种事务模式。其核心架构包含三个角色:事务协调者(TC)负责全局事务状态管理,事务管理器(TM)定义事务范围,资源管理器(RM)处理分支事务。AT模式采用两阶段提交:准备阶段执行SQL并生成反向SQL日志,提交阶段确认执行或通过反向SQL回滚。实践部分演示了基于Docker部署MySQL和Nacos环境,并通过示例项目展示了订单创建和库存减少的分布式事务处理过程,包括正常执行和异常回滚场景。

每天学习一点点 1018

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

dubbo分布式事务解决方案_SpringBoot基于Dubbo和Seata的分布式事务解决方案

本文来源:http://r6d.cn/j4gC1. 分布式事务初探一般来说,目前市面上的数据库都支持本地事务,也就是在你的应用程序中,在一个数据库连接下的操作,可以很容易的实现事务的操作。但是目前,基于SOA的思想,大部分项目都采用微服务架构后,就会出现了跨服务间的事务需求,这就称为分布式事务。本文假设你已经了解了事务的运行机制,如果你不了解事务,那么我建议先去看下事务相关的文章,再来阅...

weixin_39823676的博客 297

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【实战SpringBoot】基于Dubbo和Seata的分布式事务解决方案

1. 分布式事务初探一般来说,目前市面上的数据库都支持本地事务,也就是在你的应用程序中,在一个数据库连接下的操作,可以很容易的实现事务的操作。但是目前,基于 SOA 的思想,大部分项目都采...

qq_18244417的博客 313

Spring Boot 核心原理解析与实践(含代码示例)

Spring Boot是一个基于Spring框架的快速开发工具,通过自动配置、起步依赖和嵌入式服务器等机制简化应用开发。其核心原理包括:1)通过@EnableAutoConfiguration触发自动配置,加载预定义的配置类;2)使用条件化注解控制Bean装配;3)提供Starter聚合依赖,实现开箱即用。Spring Boot启动流程包括环境准备、上下文创建、自动配置和服务器启动等阶段。开发建议包括合理项目结构、继承父工程管理依赖、配置类型安全绑定以及集成Actuator监控。此外,Spring Boot

csdn_silent的博客 2104

SpringBoot-DynamicDataSource分布式事务实战:基于Seata的完整解决方案

祝你的分布式项目开发顺利!🚀

gitblog_00888的博客 259

Seata实现分布式事务

通过代理数据源和自动生成回滚日志,显著降低了分布式事务的侵入性,适合中小型系统快速集成。实际应用中需结合业务场景选择事务模式,并通过监控和日志优化系统健壮性。远程服务(如库存服务)无需显式标记分支事务,Seata 自动通过数据源代理管理本地事务。Seata 通过代理数据源实现 SQL 解析和自动补偿。实现分布式事务管理的详细步骤及代码示例,结合其。若业务需要更细粒度控制(如资金转账),可切换至。在 Spring Boot 项目的。,数据源代理默认开启,无需额外配置。在发起分布式事务的方法上添加。

FAQEW的博客 975

springboot2使用sharding与seata实现分布式事务

使用shardingsphere实现了读写分离或者某些数据库字段加密的需求,在分布式环境下处理事务问题尤为关键,shardingsphere是支持分布式事务的,各有优劣。本文使用一个例子介绍使用seata方式。开始之前你需要做一些准备工作https://github.com/Fjh7863/sharding-jdbc-seata-demo/tree/main 服务pom文件 依赖的版本并不是最新,如果需要更高级的版本,需要自行研究springboot、springcloud、seata兼容性问题 pom文件

小JH的博客 748

Seata AT模式--Spring Cloud+ AT 分布式事务

一.Seata介绍 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback),和社区一起共建开源分布式事务解决方案。Fescar 的愿景是让分布式事务的使用像本地事务的使用一样,简单和高效,并逐步解决开发者们遇到的分布式事务方面的

望山。 1945

SpringCloud - Spring Cloud Alibaba 之 Seata分布式事务服务;TCC事务模式机制(二十三)

的分支事务纳入到全局事务的管理中通俗来说,Seata的TCC模式就是手工版本的AT模式,它允许你自定义两阶段的处理逻辑而不需要依赖AT模式的undo_log回滚表。

MinggeQingchun的博客 898
上一篇: 使用Java 将PPT转换为PDF、XPS等格式
下一篇: Spring Boot + Echarts 实现用户访问地图可视化(附源码)
yonhu123java
博客等级 码龄14年 6粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值