Seata分布式事务-最佳实践

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版本
Seata分布式事务-最佳实践2.配置conf目录下的conf文件(这里我选择注册到Nacos,持久化到MySQL DB,Seata-Server需要的数据库表结构见官网或github)
Seata分布式事务-最佳实践Seata分布式事务-最佳实践Seata分布式事务-最佳实践
3.启动Seata-Server (默认端口为8091)

Seata分布式事务-最佳实践Seata分布式事务-最佳实践

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

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

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

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

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

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

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

1.建立3个数据库
Seata分布式事务-最佳实践2.账户数据库和表结构设计
Seata分布式事务-最佳实践Seata分布式事务-最佳实践3.订单数据库和表结构设计
Seata分布式事务-最佳实践4.库存数据库和表结构设计
Seata分布式事务-最佳实践5.订单系统、账户系统、库存系统 项目结构
Seata分布式事务-最佳实践Seata分布式事务-最佳实践Seata分布式事务-最佳实践6.下单的逻辑代码
Seata分布式事务-最佳实践Seata分布式事务-最佳实践

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

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

7.测试下单

Seata分布式事务-最佳实践Seata分布式事务-最佳实践
Seata分布式事务-最佳实践

上一篇:seata file模式引入springboot项目步骤(不使用注册中心)


下一篇:分布式事务seata从入门到放弃