首页 > 其他分享 >SpringCloudAlibaba-Seata

SpringCloudAlibaba-Seata

时间:2024-09-25 17:20:14浏览次数:3  
标签:回滚 Seata dataSourceProperties 事务 全局 SpringCloudAlibaba TC

Seata官网文档:

快速启动 | Apache Seata

Setat术语

TC (Transaction Coordinator) - 事务协调者 相当于二阶段提交中的TM

维护全局和分支事务的状态,驱动全局事务提交或回滚。

TM (Transaction Manager) - 事务管理器 开启总事务,也就是某个业务的事务

定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM (Resource Manager) - 资源管理器:相当于@ Transcation,每个微服务都有一个自己的资源管理器

管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

简述Seata工作流程:以下单业务为例,首先TM会告诉TC要开始一个全局事务了,TC就让他开始,当远程调用到第一个微服务Stock的时候,Stock的RM会在TC注册一个分支,并实时汇报自己事务的状态。其他微服务也是一样。当其中一个微服务事务回滚了,TC就会通知其他微服务也一起回滚,就实现了全局的事务管理。

AT模式(自动事务模式)

    • 导入依赖:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>
    • 解压并启动seata-server,registry.conf 注册中心配置 registry type=nacos file.conf
    • 所有想使用Seata的无服务都使用 Seata的DataSourceProxy代理自己的数据源
@Configuration
public class MySeataConfig {

    @Autowired
    DataSourceProperties dataSourceProperties;

    @Bean
    public DataSource dataSource(DataSourceProperties dataSourceProperties) {
        //properties.initializeDataSourceBuilder().type(type).build();
        HikariDataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
        if (StringUtils.hasText(dataSourceProperties.getName())) {
            dataSource.setPoolName(dataSourceProperties.getName());
        }
        return new DataSourceProxy(dataSource);
    }

}
    • 每个微服务的resources都导入registry.conf和file.conf ;
    • 给分布式大事务的入口加上@GlobalTransactional ,其他小事务加@ Transcation注解

标签:回滚,Seata,dataSourceProperties,事务,全局,SpringCloudAlibaba,TC
From: https://blog.csdn.net/qq_43583691/article/details/142528845

相关文章

  • Seata简介
    Seata的架构TC(TransactionCoordintor)-事务协调者:维护全局和分支事务的状态,协调全局事务提交或者回滚。TM:(TransactionManager)-事务管理器:定义全局事务的范围,开始全局事务,提交和回滚事务RM(ResourceManager)-资源管理器:管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态......
  • 【第35章】Spring Cloud之Seata-Server快速入门
    文章目录前言一、准备1.架构图2.工作机制3.Seata术语4.事务模式4.1SeataAT模式(依赖数据库)4.2SeataTCC模式(不依赖数据库)4.3SeataSaga模式(支持长事务)4.4SeataXA模式(支持XA协议)二、安装1.下载2.解压3.重要属性4.修改配置4.1配置中心4.2注......
  • Docker 部署 Seata (图文并茂超详细)
    部署Seata(Docker)[Step1]:创建对应的**seata**数据库,也就是下面的的**seata.sql**文件seata.sql[Step2]:拉取Seata镜像dockerpullseataio/seata-server:1.5.2[Step3]:创建目录➡️创建容器➡️拷贝文件➡️授权文件➡️删除容器#创建目录......
  • 分布式事务的Seata AT模式原理
    Seata官网地址:https://seata.apache.org/zh-cn/AT模式优点:无侵入式代码,只需要添加注解,底层采用Seata代理的数据源DataSourceProxy缺点:依赖于数据库,目前只适用于postgresql、oracle、mysql、polardb-x、sqlserver、达梦数据库等数据库,比如业务逻辑中含有redis、es等操作需要控......
  • 【分布式系统】之 分布式事务解决方案 Seata
    快速导航一、什么是分布式事务?什么是分布式?什么是事务?二、分布式事务面临的问题?三、Seata是什么?1、简述:2、Seata角色:以购买商品的业务逻辑为例:架构图SEATA的分布式交易解决方案:3、Seata模式:4、Seata支持的配置中心和注册中心一、什么是分布式事务?分布式事务,分开......
  • 使用Seata XA模式的全局事务管理在SpringCloud电商订单系统中的应用
    在开发电商系统的过程中,订单创建是一项非常关键的功能。本文将介绍如何在订单创建过程中,结合SpringCloud和Seata的XA模式来实现全局事务管理,以确保数据的一致性和完整性。订单创建过程详解在这段代码中,我们通过@GlobalTransactional注解来声明一个全局事务。以下是具体的......
  • Seata 1.3.0 Oracle 回滚测试验证 报错 ORA-02289: 序列不存在
    使用Seata1.3.0版本,测试A服务调用B服务,且A方法中,手动写了一个异常,测试是否正常回滚(Mysql已经测试过)发现报错:ORA-02289:序列不存在 一看就是undo_log这张表的sequence没有建立,导致数据保存不了,太久没有用oracle了,之前搜索undo_log的建表SQL是直接在网上搜索的,所以缺少了建seq......
  • docker 部署分布式事务框架 seata
    1可以参考官方文档:https://seata.apache.org/zh-cn/docs/ops/deploy-by-dockerhttps://seata.apache.org/zh-cn/docs/ops/deploy-ha/ 2docker部署2.1启动容器#拉取镜像dockerpullseataio/seata-server#新建本地目录mkdir-p/mydata/seata/config#启动容器docke......
  • springboot3(cloud 2022.0.0)整合seata1.7.1
    一、第一步下载对应版本的seata服务  二、修改conf下的application.yml配置注意:主要是连接nacos的一些配置:注册中心和服务发现的配置1#Copyright1999-2019Seata.ioGroup.2#3#LicensedundertheApacheLicense,Version2.0(the"License");4#you......
  • 【Seata】Seata——分布式事务框架(理论篇)
    目录解释Seata的三大角色Seata的分布式事务解决方案:AT模式整体机制一阶段二阶段完整图例XA模式DTP模型Seata的XA模式Seata-XA的价值小结XA协议的问题TCC模式解释Seata的TCC模式Seata-TCC特点Saga模式Saga的价值Saga状态机基本原理Saga状态机设计器四种模式的对比......