Spring Cloud Alibaba Seata--分布式事务

本文探讨了分布式事务的问题,介绍了Seata作为一款高性能的分布式事务服务,其核心概念包括TC、TM和RM。详细阐述了Seata的安装步骤、配置以及工作原理,特别强调了AT模式的三阶段提交和回滚机制,为实现分布式环境下的数据一致性提供了解决方案。
摘要由CSDN通过智能技术生成

1 分布式事务问题
用例
用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:
仓储服务:对给定的商品扣除仓储数量。
订单服务:根据采购需求创建订单。
帐户服务:从用户帐户中扣除余额。
在这里插入图片描述
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源
业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。

结论
一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题。

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

一个典型的分布式事务过程
分布式事务处理过程的一ID + 三组件模型
XID(Transaction ID):全局唯一的事务ID
3组件概念
TC (Transaction Coordinator) - 事务协调者:维护全局事务和分支事务的状态,驱动全局提交或回滚。
TM (Transaction Manager) - 事务管理器:定义全局事务的范围:开始全局事务,提交或回滚全局事务。
RM (Resource Manager) - 资源管理器:管理正在处理的分支事务的资源,与TC对话以注册分支事务并报告分支事务的状态,并驱动分支事务的提交或回滚。
处理过程
1.TM要求TC开始一项新的全局事务。TC生成代表全局事务的XID。
2.XID通过微服务的调用链传播。
3.RM将本地事务注册为XID到TC的相应全局事务的分支。
4.TM要求TC提交或回退相应的XID全局事务。
5.TC驱动XID的相应全局事务下的所有分支事务以完成分支提交或回滚。
在这里插入图片描述
3 怎么使用

本地@Transactional
全局@GlobalTransactional
Seata的分布式交易解决方案
在这里插入图片描述

4 安装Seata
4.3.1.官网地址
http://seata.io/zh-cn/

4.3.2.下载版本
https://github.com/seata/seata/releases

4.3.3.seata-server-1.4.2.zip解压到指定目录并修改conf目录下的file.conf配置文件
先备份原始file.conf、registry.conf文件
主要修改:事务日志存储模式为db + 数据库连接信息

a. 修改seata解压目录中的conf目录下的file.conf文件
store模块:
在这里插入图片描述
b. 修改seata解压目录中的conf目录下的registry.conf文件
registry和config模块:
在这里插入图片描述
4.3.4.在本地新建一个seata数据库,复制seata解压目录中的conf目录下的db_store.sql文件 并运行

4.3.5.去官网复制config.txt配置和nacos-config.sh配置
config.txt网址:https://github.com/seata/seata/blob/1.4.2/script/config-center/config.txt
nacos-config.sh网址:https://github.com/seata/seata/blob/1.4.2/script/config-center/nacos/nacos-config.sh
将config.txt配置放在安装seata的目录下,与bin目录同级

在这里插入图片描述
将nacos-config.sh复制下来的文件放在安装seata目录下的conf目录
在这里插入图片描述
4.3.6.修改config.txt中的部分配置
自定义事务组名称:
service.vgroupMapping.my_test_tx_group=fsp_tx_group
在这里插入图片描述
4.3.7.启动seata
先启动Nacos
再启动bin目录下的seata-server.bat 即可启动seata

4.3.8.运行nacos-config.sh
把seata/config.txt文件内容配置到nacos

sh nacos-config.sh -h 127.0.0.1

在这里插入图片描述

启动seata-server服务,打开nacos控制台-服务列表中,能看到seata-server就算搭建完成
在 Nacos 管理页面应该可以看到有 47 个 Group 为SEATA_GROUP的配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值