分布式事务中间件seata理论详解

author author     2023-03-09     345

关键词:

简介

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。 Seata 为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

Seata 的设计思路是将一个分布式事务理解成一个全局事务,下面挂了若干个分支事务,而一个分支事务是一个满足 ACID 的本地事务,因此我们可以像操作本地事务一样操作分布式事务。

Seata 内部定义了 3 个模块来处理全局事务分支事务的关系和处理过程,这三个组件分别是:

  • Transaction Coordinator (TC): 事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。
  • Transaction Manager (TM): 控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。
  • Resource Manager (RM): 控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚。

seata中一个分布式事务的生命周期如下: 简单说整个全局事务的执行步骤:

  1. TM 向 TC 申请开启一个全局事务,TC 创建全局事务后返回全局唯一的 XID,XID 会在全局事务的上下文中传播;
  2. RM 向 TC 注册分支事务,该分支事务归属于拥有相同 XID 的全局事务;
  3. TM 向 TC 发起全局提交或回滚;
  4. TC 调度 XID 下的分支事务完成提交或者回滚。

支持模式

Seata AT 模式

两阶段提交协议的演变: 第一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。核心在于对业务sql进行解析,转换成undolog,并同时入库。 第二阶段:

  • 分布式事务操作成功,则TC通知RM异步删除undolog
  • 分布式事务操作失败,TM向TC发送回滚请求,RM收到协调器TC发来的回滚请求,通过XID和Branch lD找到相应的回滚日志记录,通过回滚记录生成反向的更新SQL并执行,以完成分支的回滚。

Seata TCC 模式

整体是两阶段提交的模型。 全局事务是由若干分支事务组成的,分支事务要满足 两阶段提交 的模型要求,即需要每个分支事务都具备自己的: 一阶段 prepare 行为 二阶段 commit 或 rollback 行为

Seata Saga 模式

目前 SEATA 提供的 Saga 模式是基于状态机引擎来实现的,机制是: ​通过状态图来定义服务调用的流程并生成 json 状态语言定义文件。 ​状态图中一个节点可以是调用一个服务,节点可以配置它的补偿节点。 状态图 json 由状态机引擎驱动执行,当出现异常时状态引擎反向执行已成功节点对应的补偿节点将事务回滚。 ​可以实现服务编排需求,支持单项选择、并发、子流程、参数转换、参数映射、服务执行状态判断、异常捕获等功能。

Seata XA 模式

利用事务资源(数据库、消息服务等)对 XA 协议的支持,以 XA 协议的机制来管理分支事务的一种 事务模式。 执行阶段: -M可回滚:业务 SQL 操作放在 XA 分支中进行,由资源对 XA 协议的支持来保证可回滚。

  • 持久化:XA 分支完成后,执行 XA prepare,同样,由资源对 XA 协议的支持来保证持久化(即,之后任何意外都不会造成无法回滚的情况)。

完成阶段:

  • 分支提交:执行 XA 分支的 commit
  • 分支回滚:执行 XA 分支的 rollback

每日一书丨详解阿里开源分布式事务框架seata

...历史笔者于2014年开始着手解决阿里巴巴集团内部业务的分布式事务问题,从0到1研发一个支持非侵入模式(内部称之为AT模式,即自动模式)和TCC模式(内部称之为MT模式,即手动模式)的分布式事务中... 查看详情

分布式事务(seata)四大模式详解(代码片段)

前言在上一节中我们讲解了,关于分布式事务和seata的基本介绍和使用,感兴趣的小伙伴可以回顾一下《别再说你不知道分布式事务了!》最后小农也说了,下期会带给大家关于Seata中关于seata中AT、TCC、SAGA和XA模式的介绍和使用,... 查看详情

分布式事务(seata)四大模式详解(代码片段)

前言在上一节中我们讲解了,关于分布式事务和seata的基本介绍和使用,感兴趣的小伙伴可以回顾一下《别再说你不知道分布式事务了!》最后小农也说了,下期会带给大家关于Seata中关于seata中AT、TCC、SAGA和XA模式的介... 查看详情

seata-分布式事务与seata(代码片段)

分布式事务与Seata分布式事务分布式事务是个现实中很常见的现象,日常的跨行转账就是一个很典型的分布式事务。现实中,每个银行各自管理各自的账户,在执行跨行转账时,需要确保转出账户扣费正确,转入账户增加正确的... 查看详情

seata入门简介

文章目录1.分布式事务问题1.1.本地事务1.2.分布式事务2.理论基础2.1.CAP定理2.1.1.一致性2.1.2.可用性2.1.3.分区容错2.1.4.矛盾2.2.BASE理论2.3.解决分布式事务的思路3.初识Seata3.1.Seata的架构1.分布式事务问题首先我们回顾一下之前学的单... 查看详情

seata入门简介

文章目录1.分布式事务问题1.1.本地事务1.2.分布式事务2.理论基础2.1.CAP定理2.1.1.一致性2.1.2.可用性2.1.3.分区容错2.1.4.矛盾2.2.BASE理论2.3.解决分布式事务的思路3.初识Seata3.1.Seata的架构1.分布式事务问题首先我们回顾一下之前学的单... 查看详情

springcloudspringcloudalibaba之seata分布式事务中间件(三十五)

什么是分布式事务问题?单体应用  单体应用中,一个业务操作需要调用三个模块完成,此时数据的一致性由本地事务来保证。微服务应用  随着业务需求的变化,单体应用被拆分成微服务应用,原来的三个模块被拆分成三... 查看详情

基础篇seata简介

...于是乎希望走个捷径,直接上手seata这款阿里巴巴发布的分布式事务中间件。寄希望于对这块中间件的阅读获得比较多的事务知识内容。本文是seata的第一篇,将做一些简要的介绍,有个初步的了解。 什么是seata?seata全称是... 查看详情

分布式事务详解(代码片段)

最近面临面试,抽空了解了下分布式事务,这篇主要介绍一下分布式事务相关的知识点以及现目前最流行的分布式事务解决工具seata。OK,进入正题目录1.本地事务1.1 什么是本地事务1.2 本地事务如何保证ACID1.2.1 undo... 查看详情

分布式事务(seata)原理详解篇,建议收藏(代码片段)

...程:自动加载Bean属性和配置信息初始化TM初始化RM初始化分布式事务客户端完成,完成代理数 查看详情

springboot集成seata解决分布式事务问题

...com/s/aDhGG3Y2t4lPYetK01Wmxgseata简介Seata是阿里巴巴2019年开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在Seata开源之前,Seata对应的内部版本在阿里内部一直扮演着分布式一致性中间件... 查看详情

分布式事务(seata)四大模式详解(代码片段)

前言在上一节中我们讲解了,关于分布式事务和seata的基本介绍和使用,感兴趣的小伙伴可以回顾一下《别再说你不知道分布式事务了!》最后小农也说了,下期会带给大家关于Seata中关于seata中AT、TCC、SAGA和XA模式的介... 查看详情

分布式事务(seata)四大模式详解(代码片段)

前言在上一节中我们讲解了,关于分布式事务和seata的基本介绍和使用,感兴趣的小伙伴可以回顾一下《别再说你不知道分布式事务了!》最后小农也说了,下期会带给大家关于Seata中关于seata中AT、TCC、SAGA和XA模式的介... 查看详情

seata分布式事务解决方案汇总

文章目录概述什么是分布式事务分布式事务为什么难CAP理论base理论一致性模型分布式事务解决方案2PC:两阶段提交2PC存在的问题3PC:三阶段提交cancommitprecommitcommit3PC相对于2PC的优缺点XATCCMQ事务消息(可靠消息)本地事务消息表(可... 查看详情

分布式事务(seata)原理详解篇,建议收藏(代码片段)

前言在之前的系列中,我们讲解了关于Seata基本介绍和实际应用,今天带来的这篇,就给大家分析一下Seata的源码是如何一步一步实现的。读源码的时候我们需要俯瞰起全貌,不要去扣一个一个的细节,这样我... 查看详情

分布式事务(seata)原理详解篇,建议收藏(代码片段)

前言在之前的系列中,我们讲解了关于Seata基本介绍和实际应用,今天带来的这篇,就给大家分析一下Seata的源码是如何一步一步实现的。读源码的时候我们需要俯瞰起全貌,不要去扣一个一个的细节,这样我... 查看详情

阿里分布式中间件seata从入门到精通

最近在写一本关于阿里巴巴分布式事务中间件Seata的电子书,Seata可以说是分布式事务中间件中最完善的了,包括了AT、TCC、Saga、XA四种模式,目前Seata已经更新到了1.4.2版本。这本电子书主要分成两部分,第一部分... 查看详情

微服务(十六)——分布式事务seata(代码片段)

...P定理-AvailabilityCAP定理-Partitiontolerance2)BASE理论 二、分布式事务Seata1)初识seata2)Seata架构 3)微服务集成seata1、首先,引入seata相关依赖:2、然后,配置application.yml,让微服务通过注册中心找到se... 查看详情