分布式事务之Seata介绍

Seata历史

  1. 阿里巴巴:

    • TXC:淘宝交易系统的分布式事务框架,阿里巴巴中间件团队自2014年开始启动该项目,用于解决应用架构从单一服务向微服务转变所带来的分布式事务问题;

    • GTS:全球交易服务。TXC作为阿里云中间件产品,新名称GTS于2016年发布;

    • Fescar:2019年开始了基于TXC/GTS的开源项目Fescar,用于开源项目社区发展;最后更名为 Seata

  2. 蚂蚁金服:

    • XTS:扩展事务服务。蚂蚁金服中间件团队自2007年开始开发分布式事务中间件,该中间件在蚂蚁金服中得到广泛应用,解决了跨数据库和服务的数据一致性问题。
    • DTX:分布式事务扩展。自2013年以来,XTS已在蚂蚁金融云上发布,名称为DTX;
  3. Seata社区:

    • Seata:简单的可扩展分布式事务解决方案,蚂蚁金服将Fedscar改名为Seata并开源,使其成为一个中立、开放的分布式事务社区。

Seata运行机制

  1. Seata包含以下几个角色

    • Transaction Coordinator(TC):独立的外部进程,不包含任何业务逻辑,主要职责是维护整个事务的全局状态,通知RM执行回滚或者提交
    • Transaction Manager™:职责是开启、回滚、提交一个全局事务。在微服务架构中对应聚合服务
    • Resource Manager(RM):对应每个微服务的事务分支,职责是执行分支事务操作
  2. Seata角色交互过程

在这里插入图片描述

  1. 交互步骤

    • TM 开启全局事务:TM 收到请求之后,开启一个全局的事务并生成一个全局的 XID 编号,并将 XID 编号发送给 TC,同时在 TM 中通过远程调用 RM,发起具体的业务服务调用;
    • RM 完成本地操作:RM 收到 TM 发出的请求调用,RM 先完成本地操作之后(AT 与 TCC 与 Saga 模式各有不同),然后再向 TC 发起上报;
    • RM 向 TC 上报分支事务: RM 完成本地事务操作(未提交),向 TC 上报分支事务(申请全局锁)
    • TM 向 TC 提交全局事务:TM 如果顺利的完成 3 个微服务的调用(没有异常,没有超时),就向 TC 提交全局事务,如果有任何异常或超时,TM 向 TC 提交全局回滚。
    • RM 执行提交或回滚操作:RM 收到 TC 的提交或回滚后,执行具体的提交或回滚操作,事务执行完成。

docker-compose安装

  1. 安装版本seata-server-1.4.2

  2. 采用Nacos注册中心,Mysql存储。提前准备环境

    环境 版本 准备 IP
    Nacos 2.0.4 创建命名空间seata-namespace 192.168.101.8:8848
    Mysql 5.6 创建数据库seata_server 192.168.101.8:3306
    Seata 1.4.2 172.26.0.2:8091
  3. 步骤一:创建数据库seata_server。并执行脚本。参考https://github.com/seata/seata/blob/1.4.2/script/server/db/mysql.sql

    CREATE TABLE IF NOT EXISTS `global_table`
    (
        `xid`                       VARCHAR(128) NOT NULL,
        `transaction_id`            BIGINT,
        `status`                    TINYINT      NOT NULL,
        `application_id`            VARCHAR(32),
        `transaction_service_group`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值