Seata学习

一、什么是Seata

Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务,也是Spring Cloud Alibaba提供的组件。

Seata为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案,能够保证微服务远程调用业务的原子性。

  • AT模式:最终一致的分阶段事务模式,无业务侵入,也是Seata的默认模式

  • TCC模式:最终一致的分阶段事务模式,有业务侵入

  • SAGA模式:长事务模式,有业务侵入

  • XA模式:强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入

详情参考官方:https://seata.io/zh-cn/

二、为什么需要Seata

在之前学习单体项目中的事务使用的技术叫Spring声明式事务,能够保证一个业务中所有对数据库的操作要么都成功,要么都失败,来保证数据库的数据完整性。

但是在微服务的项目中,业务逻辑层涉及远程调用,当前模块发生异常,无法操作远程服务器回滚,这时要想让远程调用也支持事务功能,就需要使用分布式事务组件Seata。

远程方法调用(RMI)是一台机器上的程序调用另一台机器上的方法。

三、Seata的运行原理

Seata构成部分:

  • 事务协调器TC(Transaction Coordinator)
  • 事务管理器TM(Transaction Manager)
  • 资源管理器RM(Resource Manager )

在这里插入图片描述

AT(自动)模式运行过程:

  1. 事务的发起方(事务管理器TM)会向事务协调器TC申请一个全局事务id,并保存。

  2. Seata会管理事务中所有相关的参与方的数据源,将数据操作之前和之后的镜像都保存在undo_log表中,这个表是seata组件规定的表,没有它就不能实现效果,依靠它来实现提交(commit)或回滚(roll
    back)的操作。

  3. 事务的发起方(事务管理器TM)会连同全局id一起通过远程调用,运行资源管理器RM中的方法。

  4. RM接收到全局id,去运行指定方法,并将运行结果的状态发送给事务协调器TC。

  5. 如果所有分支运行都正常,事务协调器TC会通知所有分支进行提交,真正的影响数据库内容,反之如果所有分支中有任何一个分支发生异常,事务协调器TC会通知所有分支进行回滚,数据库数据恢复为运行之前的内容。

四、Seata的启动

Seata是Java开发的,它要求配置环境变量中Path属性值有Java的bin目录路径。

在路径上输入cmd进入dos窗口:

例如:

D:\seata\seata-server-1.4.2\bin>seata-server.bat -h 127.0.0.1 -m file

结果输出:提示8091端口即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值