Seata事务操作实战,快速搞定分布式事务

Seata实战:从零搭建高可用分布式事务集群 本文详细介绍了如何从零搭建高可用的Seata分布式事务集群,包括Seata的核心工作原理、单机版快速搭建步骤、高可用集群部署方案以及生产环境中的常见问题和优化建议。通过实战案例和配置示例,帮助开发者掌握分布式事务处理技术,确保微服务架构下的数据一致性。 阅读详情

Hi各位网友好, 我是享学课堂的James,我下周马上要讲seata相关的实战及源码了, 提前把准备内容先公布出来, 有疑问直接联系我, 文章最后有我的V.

1,下载seata

https://github.com/seata/seata/releases

或到James的网盘下载

链接:https://pan.baidu.com/s/1-18nNRULIR-LwPPyRHsIOg

提取码:l6r9

注意: 先需要把nacos启动

2,安装seata

A>windows:需要先安装python,

Python下载链接:
https://pan.baidu.com/s/1R9noMDxKMT_D6O6ooKpIqg 提取码:jbs2

环境变量: path 加上 D:\Program Files\python

cmd进入doc窗口

cd  seata-server-0.9.0\seata\conf
python nacos-config.py 127.0.0.1

B>LINUX环境直接执行:

cd  seata-server-0.9.0\seata\conf
sh nacos-config.sh 127.0.0.1

3,seata启动

cmd进入doc窗口

cd  seata-server-0.9.0\seata\bin
seata-server.bat -p 9000 -m file

Seata启动成功, 进入nacos界面会发现
在这里插入图片描述

服务列表多了一个 serverAddr 就是seata服务
在这里插入图片描述

表示seata启动成功

4,Seata如何实现事务控制?

OK那如何使用seata实现事务控制呢?
首先初始化数据表, 然后在我们的数据库中新建一张undo_log表,这张表是Seata记录事务分支日志必用的表.

CREATE TABLE `undo_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `branch_id` bigint(20) NOT NULL,
  `xid` varchar(100) NOT NULL,
  `context` varchar(128) NOT NULL,
  `rollback_info` longblob NOT NULL,
  `log_status` int(11) NOT NULL,
  `log_created` datetime NOT NULL,
  `log_modified` datetime NOT NULL,
  `ext` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

比如

1,在订单服务要下订单, 先向seata申请BranchID, 写入到undo_log表,提交分支事务状态

2,在扣减库存业务时, 向seata申请另一个BranchID, 写入到undo_log表,提交分支事务状态

在这里插入图片描述

Seata启动了, 表也建了, 代码也改了, 现在要在微服务里用seata, 需要引入seata的jar包

1,引入jar包

在需要进行分布式控制的微服务中进行下面几项配置:

在父工程pom.xml引入seata的依赖

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

<!--config组件-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2,proxy代理数据源配置

在涉及到的微服务(order/product)里, 要加上 代理数据源配置类

DataSourceProxyConfig类

Seata是通过代理数据源实现事务分支的,所以需要配置

io.seata.rm.datasource.DataSourceProxy的Bean,且是@Primary默认的数据源,否则事务不会回滚,无法实现分布式事务

package com.enjoy.config;

import com.alibaba.druid.pool.DruidDataSource;
import io.seata.rm.datasource.DataSourceProxy;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

@Configuration
public class SeataDataSoureProxy {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DruidDataSource druidDataSource() {
        return new DruidDataSource();
    }

    @Primary
    @Bean
    public DataSourceProxy dataSource(DruidDataSource druidDataSource) {
        return new DataSourceProxy(druidDataSource);
    }
}

3,核心配置拷贝

把磁盘seata/conf下的registry.conf拷贝到(order/product两工程)resources下
在这里插入图片描述

4,新建yml文件

在order/product工程的resources目录下, 新建bootstrap.yml

在这里插入图片描述

配置如下:

spring:
  application:
    name: service-order
  cloud:
    nacos:
      config:
        server-addr: localhost:8848 # nacos的服务端地址
        namespace: public
        group: SEATA_GROUP
    alibaba:
      seata:
        tx-service-group: ${spring.application.name}

OK,以上是seata要用的所有准备工作及环境
准备工作完成后, 我们还要准备好nacos, 并准备好2个有调用关系的微服务, 进行测试, 各位如果在微服务和naocs上有问题, 可以关注我的直播间, 也可以直接加我V: enjoy_james

seata源码分析(AT)-开始事务 seata源码分析基于1.4.0 阅读详情

相关推荐

手把手教你用DevExpress Patch工具解决VS项目中的试用弹窗问题

本文详细指导开发者使用DevExpress Patch工具解决Visual Studio项目中恼人的试用弹窗问题。核心在于理解并分步处理:首先正确应用补丁工具以绕过运行时验证,然后重点清理或重置项目中的licenses.licx文件以消除编译时验证,从而彻底根治弹窗。

weixin_29234423的博客 590

SpringCloudAlibaba 学习第三节 Seata

Seata 处理分布式事务概述背景简介 概述 背景     官方文档     seata官方下载地址 Github下载太慢,可以参考大佬搬运https://blog.youkuaiyun.com/sinat_31148947/article/details/107823877     单体应用被拆分成多个微服务之后,可能使用多个独立的数据源,业务操作需要调用多个服务来完成,此时每个微服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题无法得到保证。 用例 用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供

瑾年的博客 263

基于VS2012 C#调用bartender自动打印条形码

GitHub:https://github.com/sanjaywu/BarcodePrintTool 一、在引用添加Interop.BarTender.dll 1、在资源解决方案的引用这里,右击选择“添加引用”: 2、按照如下步骤添加Interop.BarTender.dll引用: 3、添加完成 二、使用bartender工具设置打印模板 1、页面大小设置: 2、条码设置: 三、代码...

Sanjay_Wu的博客 5956

分布式事务Seata<XA模式、AT模式>解决方案思路(针对多数据源、分库分表、微服务、微服务分库分表4种场景)

2.添加依赖,编写配置,自动代理默认开启 ,默认就是AT,注意事务失效场景,是否传递,是否数据源版本。rm操作数据库,提交事务的时候,tc端注册全局锁,如果发现已经存在,抛出异常。1.所有数据库添加支持AT的表结构,存储undo日志(线程等待,可以看到数据,弱一致性)2.所有数据库添加支持AT的表结构,存储undo日志(线程等待,可以看到数据,弱一致性)2.tm给rm全局事务id,携带全局事务id,向tc注册分支事务id,返回给rm。二阶段提交,TM通知TC做事务提交,tc通知rm提交,放到内存队列。

weixin_48400115的博客 1448

AAAI2024最佳解读|FontDiffuser One-Shot Font Generation via Denoising Diffusion with Multi-Scal

本文提出了一种名为FontDiffuser的基于扩散的单次字体生成方法,旨在通过去噪扩散模型生成模仿参考图像风格的字体,同时保留源图像的内容。尽管现有的字体生成方法在性能上取得了一定的进展,但在处理复杂字符和大风格变化时仍面临挑战。FontDiffuser通过引入多尺度内容聚合(MCA)模块,有效结合不同尺度的全局和局部内容线索,从而增强复杂字符的笔画保留能力。此外,文章还提出了一种风格对比细化(SCR)模块,用于风格表示学习,利用风格提取器从图像中分离风格,并通过精心设计的风格对比损失来监督扩散模型。

haimianxiaobao11的博客 1193

scRNA-seq | 吐血整理的单细胞入门教程(从原理到代码实操)(二)

scRNA-seq | 吐血整理的单细胞入门教程(从原理到代码实操)(二)

m0_72224305的博客 4306

druid seata 配置_分布式事务解决方案——Seata使用

在微服务开发过程中分布式事务一直是一个比较重要的问题,之前对于分布式事务的解决方法一般会通过MQ的最终一致性来解决,尤其是RocketMQ的事务消息,感兴趣的可以看Spring Boot整合RocketMQ之事务消息。今天主要介绍一下是另一款阿里推出的分布式事务中间件——Seata。在我入职目前这家公司之前其实我对分布式事务的解决方案了解的也不多,也是在面试的时候当时面试我的同事提出了S...

weixin_39719042的博客 927

工厂自动化布线实战:从功率计算到线槽布局的完整避坑指南

本文详细介绍了工厂自动化布线的实战经验,从功率计算到线槽布局的完整避坑指南。通过三步计算法确定线径需求,强调电压降控制的重要性,并分享线槽布局的50%法则和强弱电分离技巧。特别针对移动设备和多芯信号线提供专业解决方案,帮助工程师避免常见错误,提升布线效率和质量。

weixin_29266007的博客 355

Seata概述

Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务也是Spring Cloud Alibaba提供的组件Seata官方文档Seata更多信息可以通过官方文档获取我们首先简单复习一下事务的概念我们再业务中,必须保证数据库操作的原子性,也就是当前业务的所有数据库操作要么都成功,要么都失败之前我们使用Spring声明式事务来解决本地的事务问题但是现在是微服务环境,一个业务可能涉及多个模块的数据库操作这种情况就需要专门的微服务状态下解决事务问题的"分布式事务"解决方

ClearDream__的博客 596

【软考中级网络工程师】知识点之 IP QoS 技术

本文围绕软考中级网络工程师必备的 IP QoS 技术展开,系统阐述其核心知识。首先解析 IP QoS 的定义、重要性及应用场景,揭示其在视频会议、在线游戏等场景的关键作用;接着深入讲解技术原理,包括流量分类与标记、整形与限速、拥塞管理及 RSVP 协议;随后对比尽力而为、IntServ、DiffServ 三种服务模型的特点;还介绍了配置实践与案例分析,探讨其与 SDN、5G 等技术的融合趋势。旨在帮助读者全面掌握 IP QoS 技术要点,为网络规划与优化提供理论与实践指导。

邓邓子的博客 1087

组建高效AI开发团队:角色、技能与协作

在当今科技飞速发展的时代,人工智能(AI)已经成为各个领域的核心驱动力。组建高效的AI开发团队对于企业和科研机构来说至关重要,它能够推动创新、提高竞争力、实现业务目标。本文的目的在于为那些希望组建或优化AI开发团队的管理者、技术负责人以及相关从业者提供全面的指导。范围涵盖了团队角色的定义、所需技能的分析、团队协作的策略,以及实际项目中的应用和相关资源的推荐。本文将首先介绍AI开发团队的核心概念与联系,包括团队角色、技能和协作之间的关系。接着阐述核心算法原理和具体操作步骤,结合数学模型和公式进行详细讲解。

2502_91592937的博客 995

Seata 入门与实战

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

m0_74823434的博客 1155

【技能】OpenClaw Skills学习及手搓一个极简skill

本文介绍了OpenClaw Skills的基础概念与使用方法。Skills是OpenClaw代理使用工具的核心载体,通过SKILL.md文件定义技能属性和执行方式。技能加载遵循"工作区>本地>内置>自定义目录"的优先级规则。用户可通过ClawHub一键安装现成技能,也可自定义开发技能:创建技能目录,编写包含YAML元数据和执行指令的SKILL.md文件,放置于工作区skills目录进行测试。文章还介绍了多代理场景下的技能共享、插件集成以及安全注意事项,包括沙箱使用和敏感

海兰 3977

seata分布式事务原理解释,AT模式简介

seata是阿里开源的一个分布式事务框架,能够让大家在操作分布式事务时,像操作本地事务一样简单。一个注解搞定分布式事务。 有些地方官网文档写的可能比较难以理解,这里用较为简单的方式来描述一下。 快速入门 譬如你有两个微服务,一个是库存模块StorageService,一个是订单模块OrderService,主业务是用户下单,然后需要分别调用上面的两个服务,完成减库存、用户扣款和下单操作。由于...

tianyaleixiaowu的专栏 3万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Seata 分布式事务搭建与使用详解,一篇搞定,手把手教会你 !

一篇搞定,手把手教会你 Seata 分布式事务搭建与使用

pi_tiger的博客 6万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

5分钟搞定分布式事务!Seata快速入门实战指南

你是否还在为微服务架构下的数据一致性问题头疼?订单创建了库存却没扣减?支付成功但订单状态异常?这些分布式事务难题,用Seata一招就能解决!本文将带你从零开始,5分钟内搭建一个完整的分布式事务Demo,让你彻底掌握Seata的核心用法。 读完本文你将学会: - 理解分布式事务的基本概念和Seata的解决方案 - 快速搭建Seata服务器环境 - 配置客户端并集成到Spring Boot应用 - ...

gitblog_00351的博客 825

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Seata分布式事务实战:从原理到生产踩坑

模式选择:一般场景用AT模式,高并发热点数据用TCC模式事务粒度:事务范围要尽量小,减少锁竞争超时配置:TC、TM、RM的超时要协调一致监控告警:回滚率、延迟、锁冲突都要监控降级方案:Seata挂了要有降级方案分布式事务不是万能的,能用最终一致性解决的问题,就不要用强一致性。业务上能接受的话,用消息队列做最终一致性,性能更好,实现更简单。Seata适合那些确实需要强一致性保证、但又不想大改业务代码的场景。AT模式侵入性小,适合快速落地。

在代码的世界里,每天进步1% 693

分布式微服务集成分布式事务Seata-快速入门

Seata是阿里开源的一个分布式事务框架,能够让大家在操作分布式事务时,像操作本地事务一样简单。一个注解搞定分布式事务。解决分布式事务问题,有两个设计初衷对业务无侵入:即减少技术架构上的微服务化所带来的分布式事务问题对业务的侵入高性能:减少分布式事务解决方案所带来的性能消耗Seata中有两种分布式事务实现方案,AT及TCCAT模式主要关注多 DB 访问的数据一致性,当然也包括多服务下的多 DB 数据访问一致性问题 2PC-改进。

2301_81717523的博客 868

Seata分布式事务全面解析:提升技能,加薪8K,成就事务管理大师之路

随着互联网的发展,网站应用的规模不断的扩大,进而导致系统架构也在不断的进行变化。本章就讲述了每种架构系统是什么样子的,以及有什么的作用。在微服务架构中,我们将业务拆分成一个个的服务,服务于服务之间可以互相调用,但是由于网络原因或者自身原因,服务并不能保证服务100%可用,如果单个服务出现问题,调用整个服务就会出现网络延迟,此时若有大量网络进来,最终会导致服务瘫痪的,所以这篇便讲解了一个高并发带来的问题等。

资料免费分享,点击名片 840

Seata AT模式实战:5分钟搞定电商库存与订单的分布式事务(附避坑指南)

本文详细介绍了如何使用Seata AT模式快速解决电商系统中库存扣减与订单创建的分布式事务一致性问题。通过解析其无侵入、高性能的核心原理,并提供基于Spring Cloud的5分钟实战接入指南与关键配置,帮助开发者高效构建可靠的事务屏障,并附有高并发下的性能调优与避坑要点。

python9snake的博客 761

Seata分布式事务全解析:掌握核心技能,轻松加薪8K,成为事务管理大师

随着互联网的发展,网站应用的规模不断的扩大,进而导致系统架构也在不断的进行变化。本章就讲述了每种架构系统是什么样子的,以及有什么的作用。在微服务架构中,我们将业务拆分成一个个的服务,服务于服务之间可以互相调用,但是由于网络原因或者自身原因,服务并不能保证服务100%可用,如果单个服务出现问题,调用整个服务就会出现网络延迟,此时若有大量网络进来,最终会导致服务瘫痪的,所以这篇便讲解了一个高并发带来的问题等。

资料免费分享,点击名片 873

5分钟搞定分布式事务:COLA架构集成Seata的扩展点实战

你还在为分布式事务一致性问题头疼吗?当微服务架构遇上跨库操作,数据不一致成为业务稳定性的最大隐患。本文将带你通过COLA架构的扩展点机制,快速集成Seata分布式事务解决方案,让复杂的事务管理变得简单可控。读完本文你将掌握:COLA扩展点设计原理、Seata事务拦截实现、3步完成集成的实战技巧,以及生产环境避坑指南。 ## COLA扩展点机制核心解析 COLA架构的扩展性源于其灵活的扩展点设计...

gitblog_00236的博客 444

大厂都在用的分布式事务方案,Seata+RocketMQ带你打破10万QPS瓶颈

分布式事务,这四个字看着好像挺高大上,很多程序员一听到,心里头都会发怵:是不是又要加班?是不是又是那个“老板觉得3天能搞定”的东西?TCC 是个强管控的解决方案。假设你要给一百个人发奖金,每个人分三步:确定奖金池、发放奖金、确认到账。TCC 模式就要求每一步都明确标记:钱从哪里扣?到账了没有?出了问题咋办?Try 阶段:先预留资源,比如锁定账户余额,告诉大家“钱已经备好了”。Confirm 阶段:完成操作,比如真的把钱转给员工。Cancel 阶段:如果过程中失败了,就把预留的资源退回来。优缺点。

程序员江小北 1633

快速搞定分布式事务

今天我想和大家一起盘一盘分布式事务,会介绍常见的分布式事务实现方案和其优缺点以及适用的场景,并会带出它们的一些变体实现。 还会捎带一下分布式数据库对 2PC 的改进模型,看看分布式数据库是如何做的。 然后再分析一波分布式事务框架 Seata 的具体实现,看看分布式事务究竟是如何落地的,毕竟协议要落地才是有用的。 首先我们来提一下事务和分布式事务是什么。 事务 事务的 ACID 想必大家都熟知,这其实是严格意义上的定义,指的是事务的实现必须具备原子性、一致性、隔离性和持久性。 不过严格意义上的事务很难达到,

weixin_43961008的博客 212

AI如何帮你轻松搞定分布式事务?快马平台实战

对于分布式事务这种复杂场景,AI生成的代码虽然提供了基础框架,但实际业务中还需要根据具体需求调整事务隔离级别、异常处理策略等。的一键部署功能,这个包含多个微服务的复杂项目可以快速在云端运行起来。相比本地搭建环境,省去了安装JDK、MySQL、Docker等各种依赖的麻烦,特别适合快速验证方案可行性。这就是典型的分布式事务问题。分布式事务一直是微服务架构中的难点问题,尤其是电商系统中涉及订单、库存、账户等多个服务协同的场景。在传统单机事务中,我们可以依赖数据库的ACID特性保证数据一致性。

EmeraldEagle36的博客 791
上一篇: 为什么要学习源码?架构师告诉你原因
下一篇: <重要>James带你透彻分析三大代理模式
Jack爱258
博客等级 码龄10年 1288粉丝 124原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值