谷粒商城收获记录2

本文介绍了Seata分布式事务管理器如何处理分布式事务,包括其AT模式的部署步骤、seata与Nacos的整合,以及通过消息队列实现的柔性事务处理。重点讨论了Seata的TC/TM/RM组件和事务模式,以及解决单体系统升级到分布式时的事务问题。
摘要由CSDN通过智能技术生成

谷粒商城收获记录2

1、分布式事务

单体服务中服务都在一个系统中,ACID好保证,但是分布式的系统中分为多个服务,每个服务的数据库也不同,这就造成了分布式事务问题。

传统代码中的注解已经不能满足情况

@Transactional
方法名称

使用此注解时操作本地事务小心事务失效问题!
比如在多线程失效、事务的抛出异常默认是runtime等等

seata解决办法

seata介绍
  • seata支持 AT、TCC、SAGA 和 XA 事务模式;

  • 分布式事务处理过程的一ID+三组件模型,一ID即Transaction ID XID,全局唯一的事务ID。

      TC (Transaction Coordinator) - 事务协调者
     维护全局和分支事务的状态,驱动全局事务提交或回滚。
     
     TM (Transaction Manager) - 事务管理器
     定义全局事务的范围:开始全局事务、提交或回滚全局事务。
     
     RM (Resource Manager) - 资源管理器
     管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
    
seata AT模型使用

1、seata服务端安装

  • 下载地址:官网找的下载地址

  • 配置seata服务端(我的是zip包,1.4.2)
    配置registry.conf,有两部分,一部分是注册中心配置,一部分是配置中心,默认是file

    我采用的是nacos当作注册中心和配置中心
    在这里插入图片描述
    在这里插入图片描述
    配置file.conf
    在这里插入图片描述
    准备数据初始sql
    初始化sql在安装目录中conf/README-zh.md有记录
    包括了server端sql和client端sql,分别下载下来,其中server端的sql在刚才file.conf配置的数据库执行,client端的sql将要和本身业务数据库放在一起

2、客户端使用
参考官网例子地址:https://github.com/seata/seata-samples
使用过程中只需要配置好tx-service-group
这个必须和seata服务端的config配置的service.vgroupMapping.my_test_tx_group=default,一致,我的配置的是“my_test_tx_group”

业务代码中application中的配置:
在这里插入图片描述
seata服务端的配置
在这里插入图片描述

 @GlobalTransactional //加在原来@Transactional位置上
 service业务方法
需要注意问题
  1. 我使用官网案例时,总是启动不成功,nacos根本注册不上,一开始我以为是seata没配好,后来发现是我的nacos问题,我本机nacos安装的是1.3,但是官网例子是nacos是2.0,我后来又装了下nacos2.x才成功注册上
  2. 另一个疑惑是,本人不清楚业务端的seata是从哪找的,我把项目中resources下的registry.conf都删除了,还是能正常使用seata,这是我比较奇怪的,目前我的配置信息如下图
    在这里插入图片描述

消息队列解决办法

上述方式解决事务可用,但是高并发时候吞吐量会降低,所以采用了另一种解决策略,就是柔性事务,最大努力通知,以订单和库存为例
订单先创建,然后减库存,虽然不能同时保证订单创建完毕,就能扣除库存成功,但是可以保证库存肯定能扣减成功,保证了最终一致性。
采用消息队列方式进行分布式事务的处理
RocketMq有一种事务消息模式,也就是半消息,订单创建之前,可以发送事务消息,就是一条半消息,然后执行本地库的更新,成功之后,会将半消息状态修改,这时候这条消息就能被订单消费了,之后订单减库存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值