• Spring Cloud Alibaba —— 分布式事务组件


    在这里插入图片描述

    ??这里是【秒懂·云原生】,关注我学习云原生不迷路
    ??如果对你有帮助,给博主一个免费的点赞以示鼓励
    欢迎各位??点赞??评论收藏

    ??专栏介绍

    【秒懂·云原生】 目前主要更新微服务,一起学习一起进步。

    ??本期介绍

    主要介绍Spring Cloud Alibaba —— 分布式事务组件

    文章目录

    随着业务的不断发展,单体架构已经无法满足我们的需求,
    分布式微服务架构逐渐成为大型互联网平台的首选,但所有
    使用分布式微服务架构的应用都必须面临一个十分棘手的问
    题,那就是“分布式事务”问题。
    在分布式微服务架构中,几乎所有业务操作都需要多个服务
    协作才能完成。对于其中的某个服务而言,它的数据一致性
    可以交由其自身数据库事务来保证,但从整个分布式微服务
    架构来看,其全局数据的一致性却是无法保证的。
    例如,用户在某电商系统下单购买了一件商品后,电商系统
    会执行下 4 步:

    1. 调用订单服务创建订单数据
    2. 调用库存服务扣减库存
    3. 调用账户服务扣减账户金额
    4. 最后调用订单服务修改订单状态
      为了保证数据的正确性和一致性,我们必须保证所有这些操
      作要么全部成功,要么全部失败,否则就可能出现类似于商
      品库存已扣减,但用户账户资金尚未扣减的情况。各服务自
      身的事务特性显然是无法实现这一目标的,此时,我们可以
      通过分布式事务框架来解决这个问题。
      Seata 就是这样一个分布式事务处理框架,它是由阿里巴巴
      和蚂蚁金服共同开源的分布式事务解决方案,能够在微服务
      架构下提供高性能且简单易用的分布式事务服务。

    Seata 的发展历程

    阿里巴巴作为国内最早一批进行应用分布式(微服务化)改
    造的企业,很早就遇到微服务架构下的分布式事务问题。
    阿里巴巴对于分布式事务问题先后发布了以下解决方案:
    2014 年,阿里中间件团队发布 TXC(Taobao
    Transaction Constructor),为集团内应用提供分布式
    事务服务。
    2016 年,TXC 在经过产品化改造后,以 GTS(Global
    Transaction Service) 的身份登陆阿里云,成为当时业
    界唯一一款云上分布式事务产品。在阿云里的公有云、
    专有云解决方案中,开始服务于众多外部客户。
    2019 年起,基于 TXC 和 GTS 的技术积累,阿里中间件
    团队发起了开源项目 Fescar(Fast & EaSy Commit And
    Rollback, FESCAR),和社区一起建设这个分布式事务
    解决方案。
    2019 年 fescar 被重命名为了seata(simple
    extensiable autonomous transaction
    architecture)。
    TXC、GTS、Fescar 以及 seata 一脉相承,为解决微服
    务架构下的分布式事务问题交出了一份与众不同的答
    卷。

    分布式事务相关概念

    分布式事务主要涉及以下概念:
    事务:由一组操作构成的可靠、独立的工作单元,事务
    具备 ACID 的特性,即原子性、一致性、隔离性和持久
    性。
    本地事务:本地事务由本地资源管理器(通常指数据库
    管理系统 DBMS,例如 MySQL、Oracle 等)管理,严
    格地支持 ACID 特性,高效可靠。本地事务不具备分布式
    事务的处理能力,隔离的最小单位受限于资源管理器,
    即本地事务只能对自己数据库的操作进行控制,对于其
    他数据库的操作则无能为力。
    全局事务:全局事务指的是一次性操作多个资源管理器
    完成的事务,由一组分支事务组成。
    分支事务:在分布式事务中,就是一个个受全局事务管
    辖和协调的本地事务。
    我们可以将分布式事务理解成一个包含了若干个分支事务的
    全局事务。全局事务的职责是协调其管辖的各个分支事务达
    成一致,要么一起成功提交,要么一起失败回滚。此外,通
    常分支事务本身就是一个满足 ACID 特性的本地事务。

    Seata 整体工作流程

    Seata 对分布式事务的协调和控制,主要是通过 XID 和 3 个
    核心组件实现的。

    XID

    XID 是全局事务的唯一标识,它可以在服务的调用链路中传
    递,绑定到服务的事务上下文中。

    核心组件

    Seata 定义了 3 个核心组件:
    TC(Transaction Coordinator):事务协调器,它是事
    务的协调者(这里指的是 Seata 服务器),主要负责维
    护全局事务和分支事务的状态,驱动全局事务提交或回
    滚。
    TM(Transaction Manager):事务管理器,它是事务
    的发起者,负责定义全局事务的范围,并根据 TC 维护的
    全局事务和分支事务状态,做出开始事务、提交事务、
    回滚事务的决议。
    RM(Resource Manager):资源管理器,它是资源的
    管理者(这里可以将其理解为各服务使用的数据库)。
    它负责管理分支事务上的资源,向 TC 注册分支事务,汇
    报分支事务状态,驱动分支事务的提交或回滚。
    以上三个组件相互协作,TC 以 Seata 服务器(Server)形
    式独立部署,TM 和 RM 则是以 Seata Client 的形式集成在
    微服务中运行,其整体工作流程如下图。
    在这里插入图片描述

    Seata 的整体工作流程如下:

    1. TM 向 TC 申请开启一个全局事务,全局事务创建成功
      后,TC 会针对这个全局事务生成一个全局唯一的 XID; 2. XID 通过服务的调用链传递到其他服务; 3. RM 向 TC 注册一个分支事务,并将其纳入 XID 对应全局
      事务的管辖;
    2. TM 根据 TC 收集的各个分支事务的执行结果,向 TC 发
      起全局事务提交或回滚决议;
    3. TC 调度 XID 下管辖的所有分支事务完成提交或回滚操
      作。

    在这里插入图片描述

  • 相关阅读:
    PDF 内容替换器软件工具 PDF Replacer Pro Crack
    信息/数据
    拿到第一个用户并提权
    L1-030 一帮一(Java语言)-天梯赛
    【分层强化学习】survey
    在C#中创建全局热键
    单片机和FreeRTOS上跑机器人ROS的应用
    【XGBoost】第 9 章:XGBoost Kaggle 大师
    【笔记】【Java并发编程实战】2线程安全
    Python中两种网络编程方式:Socket和HTTP协议
  • 原文地址:https://blog.csdn.net/m0_67392126/article/details/126040760