SpringCloud Alibaba Seata(一)

Seata

分布式事务

分布式之前,单机单库没有这个问题,从 1:1 -> 1:N -> N:N
在这里插入图片描述
跨数据库,多数据源的统一调度,就会遇到分布式事务问题

如下图,单体应用被拆分成微服务应用,原来的三个模板被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。
在这里插入图片描述

简介

基于分布式的事务管理

官方文档:点我传送

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

分布式事务处理过程的一致性ID + 三组件模型

Transaction ID XID:全局唯一的事务ID

三组件的概念

  • Transaction Coordinator(TC):事务协调器,维护全局事务,驱动全局事务提交或者回滚
  • Transaction Manager(TM):事务管理器,控制全局事务的范围,开始全局事务提交或回滚全局事务
  • Resource Manager(RM):资源管理器,控制分支事务,负责分支注册分支事务和报告

处理过程

在这里插入图片描述

  • TM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID
  • XID在微服务调用链路的上下文中传播
  • RM向TC注册分支事务,将其纳入XID对应全局事务的管辖
  • TM向TC发起针对XID的全局提交或回滚决议
  • TM调度XID下管辖的全部分支事务完成提交或回滚请求

下载

修改file.conf

首先我们需要备份原始的file.conf文件

主要修改,自定义事务组名称 + 事务日志存储模式为db + 数据库连接信息,也就是修改存储的数据库

修改service模块

修改服务模块中的分组

在这里插入图片描述

修改store模块

修改存储模块

在这里插入图片描述
在这里插入图片描述

创建一个seata数据库

在seata数据库中建表,建表语句在 seata/conf目录下的 db_store.sql

修改seata-server的registry.conf配置文件

在这里插入图片描述
目的是:指明注册中心为nacos,及修改nacos连接信息

然后启动nacos 和 seata-server

怎么玩

本地:@Transaction
全局:@GlobalTransaction

Spring自带的是 @Transaction 控制本地事务

而 @GlobalTransaction控制的是全局事务
在这里插入图片描述
我们只需要在需要支持分布式事务的业务类上,使用该注解即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值