首页 > 其他分享 >【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)

时间:2023-01-12 15:36:17浏览次数:60  
标签:事务 服务 Seata 深入浅出 原理 全局 TC 分布式

分布式事务的背景

随着业务的不断发展,单体架构已经无法满足我们的需求,分布式微服务架构逐渐成为大型互联网平台的首选,但所有使用分布式微服务架构的应用都必须面临一个十分棘手的问题,那就是“分布式事务”问题。

在分布式微服务架构中,几乎所有业务操作都需要多个服务协作才能完成。对于其中的某个服务而言,它的数据一致性可以交由其自身数据库事务来保证,但从整个分布式微服务架构来看,其全局数据的一致性却是无法保证的。

Seata是什么?

Seata 是一个分布式事务处理框架,也是一款开源的分布式事务解决方案,由阿里巴巴和蚂蚁金服共同开源的分布式事务解决方案,能够在微服务架构下提供高性能且简单易用的分布式事务服务,致力于提供高性能和简单易用的分布式事务服务。

Seata相关资料

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)_全局事务

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)_微服务_02

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 的特性,即原子性、一致性、隔离性和持久性。
分布式事务的相关概念

分布式事务的基本原则可以理解成一个包含了若干个分支事务的全局事务

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)_全局事务_03

分布式事务主要涉及以下概念

  • 本地事务:本地事务由本地资源管理器(通常指数据库管理系统 DBMS,例如 MySQL、Oracle 等)管理,严格地支持 ACID 特性,高效可靠。
  • 全局事务:全局事务指的是一次性操作多个资源管理器完成的事务,由一组分支事务组成。
  • 分支事务:在分布式事务中,就是一个受全局事务管辖和协调的本地事务。

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)_分布式事务_04

注意:本地事务不具备分布式事务的处理能力,隔离的最小单位受限于资源管理器,即本地事务只能对自己数据库的操作进行控制,对于其他数据库的操作则无能为力

全局事务

全局事务的职责是协调其管辖的各个分支事务达成一致,要么一起成功提交,要么一起失败回滚。此外,通常分支事务本身就是一个满足 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的运行流程

Seata 的整体工作流程如下

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)_分布式事务_05

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

Seata的事务模式

目前Seata为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案,可以快速有效地对分布式事务进行控制。

在这四种事务模式中使用最多,最方便的就是 AT 模式。与其他事务模式相比,AT 模式可以应对大多数的业务场景,且基本可以做到无业务入侵,开发人员能够有更多的精力关注于业务逻辑开发。

Seata最后结论

接下来会针对于Seata的每种事务模式进行实战指南。

标签:事务,服务,Seata,深入浅出,原理,全局,TC,分布式
From: https://blog.51cto.com/alex4dream/6004362

相关文章

  • 一文搞懂视频编解码原理
    一,基本术语1.1,颜色亮度和我们的眼睛二,视频编码的实现原理2.1,视频编码技术概述2.2,帧类型2.3,帧内编码(帧内预测)2.4,帧间编码(帧间预测)三,实际的视频编码器如何工作......
  • 【生产-消费模型】生产者 - 消费者模型原理及实现
    一、什么是生产者-消费者模型1.简单理解生产者-消费者模型假设有两个进程(或线程)A、B和一个固定大小的缓冲区,A进程生产数据放入缓冲区,B进程从缓冲区中取出数据进行计算,这......
  • Vue.js 双向数据绑定原理
    Vue双向数据绑定原理涉及到Vue中的响应式系统和模板编译。在Vue中,响应式系统是通过Object.defineProperty或者Proxy来实现的。当Vue创建一个Vue实例时,它会遍......
  • RNN原理介绍
    RNN原理RNN在实际使用的频率并不多,大多使用LSTM替代RNN,因此对RNN进行简单的介绍。RNN是研究LSTM的基础,毕竟LSTM是基于RNN的改良,二者循环原理大体一致。初识RNN,要记住在时......
  • Vue.js 响应式原理
    Vue.js是一个渐进式的JavaScript框架,它使用了响应式系统来维护应用程序的状态。响应式系统是Vue.js的核心部分,它使得应用程序能够自动地更新视图,当数据发生变化时。在Vue.......
  • 动态范围控制原理
    DRC介绍开门见山,动态范围的定义就是信号的最大幅值和最小幅值比值的对数(单位dB),动态范围会受到系统中各个环节的影响。例如同样是这段音乐,在一个40dB背景噪声......
  • 计算机组成原理第二天( p3~p4)
    视频笔记1.1.2/1.1.3/1.2.1现代计算机硬件框图那部分没看,下次一定。......
  • 【深入浅出 Yarn 架构与实现】4-4 RM 管理 Application
    在YARN中,Application是指应用程序,它可能启动多个运行实例,每个运行实例由—个ApplicationMaster与一组该ApplicationMaster启动的任务组成,它拥有名称、队列、优先级......
  • 上下相机对位贴合怎么标定原理
    上下相机对位贴合标定原理:相机标定主要采用九点标定,通过走九个点位,得到图像坐标系与机械坐标系的关系。标定步骤:1、上相机标定。2、下相机标定。3、上下对位。相机标定方......
  • 华强买电阻-第一张原理图(上)-PCB系列教程1-5
    先放一张成品照这篇先讲讲怎么画这个电路板的原理图。我计划通过三个案例讲解PCB的设计技能,分别是贴片元件焊接练习板、流水灯电路板、STM32单片机开发板,难度都不大,都算是低......