Seata分布式事务-最佳实践

在这里插入图片描述http://seata.io/zh-cn/docs/user/quickstart.html
Seata 是阿里巴巴开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案


Seata术语
TC (Transaction Coordinator) - 事务协调者

维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM (Transaction Manager) - 事务管理器

定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM (Resource Manager) - 资源管理器

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

一,安装Seata-Server

1.从GitHub - seata/seata: Seata is an easy-to-use, high-performance, open source distributed transaction solution.现在release版本的seata zip包,目前是1.4.2版本
在这里插入图片描述2.配置conf目录下的conf文件(这里我选择注册到Nacos,持久化到MySQL DB,Seata-Server需要的数据库表结构见官网或github)
在这里插入图片描述在这里插入图片描述在这里插入图片描述
3.启动Seata-Server (默认端口为8091)

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

二,构建3个SpringCloud微服务项目,分别对应 订单系统、账户系统、库存系统

用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:

仓储服务:对给定的商品扣除仓储数量。
订单服务:根据采购需求创建订单。
帐户服务:从用户帐户中扣除余额。

一个完整的下单流程是: 初始化订单->减库存->减账户余额->修改订单状态为已完成

而实际业务场景中可能存在一些异常场景,造成分布式事务回滚,如:

执行下单--用户1产品2买3个 (产品2不存在 造成 自动回退 订单表+库存表)

用户1002产品1买3个 (用户1002不存在 造成 自动回退 订单表+库存表+用户表)

1.建立3个数据库
在这里插入图片描述2.账户数据库和表结构设计
在这里插入图片描述在这里插入图片描述3.订单数据库和表结构设计
在这里插入图片描述4.库存数据库和表结构设计
在这里插入图片描述5.订单系统、账户系统、库存系统 项目结构
在这里插入图片描述在这里插入图片描述在这里插入图片描述6.下单的逻辑代码
在这里插入图片描述在这里插入图片描述

核心代码:Seata提供的全局事务注解

@GlobalTransactional(name = "fsp-create-order", rollbackFor = Exception.class)

7.测试下单

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

demo工程源码
https://gitee.com/lzh2019/seata-account-sys.git
https://gitee.com/lzh2019/seata-storage-sys.git
https://gitee.com/lzh2019/seata-order-sys.git

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThinkPet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值