首页 > 其他分享 >《深入理解分布式事务与Seata解决方案》

《深入理解分布式事务与Seata解决方案》

时间:2024-10-13 21:25:04浏览次数:6  
标签:事务 Seata 解决方案 XA 模式 提交 分布式

分布式事务-重要

1.数据库的事务

1、事务概念

事务是一个完整的,不可分割操作单元。

整个事务要么全部执行成功,要么全部执行失败。

事务具备4个特性:ACID

A:原子性【】

C:一致性【数据的一致性:事务开始前和事务结束后,数据总量不变】

I:隔离性【事务相互隔离,互不影响】

D:持久性【事务一旦提交,永久落盘】

2、传统事务是由谁来控制的?

  • 数据库连接

JDBC:Connection对象

Mybatis:SqlSession

Spring:声明式事务

  • 传统事务:只有是同一个Connection操作的数据库才能够控制住
  • 在分布式系统中出现的事务问题

传统事务的弊端:事务无法形成一个整体全局事务,不符合逻辑,如增加购物车出现问题只是回滚了购物车表,但实际已经增加了订单和减少了库存,出现了脏数据,需要一个全局的事务来调动他们三个事务

产生的情况:

  • 业务跨多个服务实现
  • 业务跨多个数据源实现

什么是分布式事务?:是指在分布式系统中,跨越多个节点或服务执行的一系列操作,这些操作必须作为一个整体来处理,要么全部成功,要么全部失败。这样的机制确保了数据的一致性和完整性,即使是在不同的数据库、服务器或者甚至是不同的地理位置上进行操作。

3、Seata

1、大原理


由TC统一调度和就监控整个事务的过程,检测每个分支RM的存在。

2.解决分布式方案

Seata 是一个开源的分布式事务解决方案,旨在提供高性能和简单易用的分布式事务服务。Seata 支持多种分布式事务模式来解决不同场景下的问题。以下是 Seata 中主要支持的几种分布式事务解决方案:

  1. AT 模式 (Automatic Transaction Mode)
    • AT 模式是 Seata 的默认模式,也是最常用的一种。它基于两阶段提交协议,并且对业务无侵入性。在第一阶段,Seata 会自动拦截并记录 SQL 语句,然后生成反向 SQL(用于回滚操作)。如果所有分支事务都成功,则进入第二阶段提交;如果有任何一个失败,则执行反向 SQL 进行回滚。
    • 特点:对应用代码透明,易于集成。
  2. TCC 模式 (Try-Confirm-Cancel)

    • TCC 模式是一种补偿型事务模型。它将业务逻辑分为三个步骤:Try(尝试)、Confirm(确认)和 Cancel(取消)。在 Try 阶段,各个服务预处理数据,但不真正提交;如果所有服务的 Try 成功,则进入 Confirm 阶段,正式提交更改;若任一 Try 失败或系统出错,则进入 Cancel 阶段,撤销之前的操作。
    • 特点:需要开发者实现特定的接口,但提供了更细粒度的控制。
  3. SAGA 模式

    • SAGA 模式通过定义一系列本地事务,每个事务都有对应的补偿动作。这些本地事务按照顺序执行,一旦某个事务失败,那么就依次执行前面已经成功事务的补偿动作,以达到最终的一致性状态。
    • 特点:适用于长流程、复杂业务场景,要求开发者设计好每一步及其补偿逻辑。
  4. XA 模式

    • XA 模式遵循 X/Open XA 分布式事务规范,这是一种传统的分布式事务处理方式。XA 模式使用全局事务管理器来协调参与事务的所有资源管理者,保证事务的原子性和一致性。
    • 特点:兼容性强,但可能带来较高的性能开销。
  5. MT 模式 (Multi-Terminal Transaction)

    • MT 模式是在 Seata 1.3.0 版本引入的新特性,专为微服务架构下多终端交互场景设计。它允许在同一个全局事务中包含多个客户端发起的子事务,适合于用户界面与后台服务间频繁交互的应用场景。

选择哪种模式取决于具体的业务需求、系统的复杂程度以及对一致性的要求等因素。Seata 提供了灵活的配置选项,使得开发者可以根据实际应用场景选择最合适的方式来管理分布式事务。
3、XA模式【强一致性】
最终统一提交或者回滚,注意数据库需要支持这种操作。

  • 优点

    • 事务的强一致性,满足ACID原则
    • 常用数据库都支持,实现简单,并且没有代码侵入
  • 缺点

    • 因为一阶段需要锁定数据库资源,鞥带二阶段结束才释放,性能较差
    • 依赖关系型数据库实现事务

修改shared-seate.yaml切换模式

Nacos

4、AT模式【最终一致性】

这个有些像模块式操作,一个个拼图既是独立的也可以是一个整体,只要求最终一致性中间过程不管。

举例:RM1执行sql后提交数据并在undo-log记录更新快照,这里提交的数据是一个中间状态(软状态)。可能不会是最终的数据。但也写入数据库中。并向TC报告状态(已提交)

RM2执行sql异常,那么回想TC报告异常(已失败),undo-log没有变化,报告事务状态(失败)检查后发现失败,触发TC回滚,这里RM1调用undo-log恢复log数据,恢复完毕后会删除log数据。

AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。

阶段一RM的工作:

  • 注册分支事务
  • 记录undo-log(数据快照)
  • 执行业务sql并提交
  • 报告事务状态

阶段二提交时RM的工作:

  • 删除undo-log即可

阶段二回滚时RM的工作:

  • 根据undo-log恢复数据到更新前

5.AT与XA的区别

简述AT模式与XA模式最大的区别是什么?

  • XA模式一阶段不提交事务,锁定资源;AT模式一阶段直接提交,不锁定资源。
  • XA模式依赖数据库机制实现回滚;AT模式利用数据快照实现数据回滚。
  • XA模式强一致;AT模式最终一致

可见,AT模式使用起来更加简单,无业务侵入,性能更好。因此企业90%的分布式事务都可以用AT模式来解决。

标签:事务,Seata,解决方案,XA,模式,提交,分布式
From: https://www.cnblogs.com/rusuanjun/p/18463001

相关文章

  • Seata的AT模式的执行流程
    Seata的AT模式:AT模式是Seata的默认模式,也是一种最终一致的分阶段事务模式,在一阶段,Seata拦截业务SQL,解析SQL语义,找到要更新的业务数据,并保存快照数据和行锁‌。简单来说就是看中结果,结果需要符合业务实际逻辑步骤准备undo-log(数据快照),简单说就是建个数据库用于备份数据,谁需要备份......
  • 简述Seata的AT模型
    AT模式是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。1.Seata的AT模型阶段一RM的工作:●注册分支事务●记录undo-log(数据快照)●执行业务sql并提交●报告事务状态阶段二提交时RM的工作:●删除undo-log即可阶段二回滚时RM的工作:●根据undo-log......
  • Seata的AT模式的执行流程
    AT模式是解决分布式事务的一种方式AT模式与XA模式都是分阶段提交的事务模型,弥补了XA模型中资源锁定周期过长的缺陷,企业基本都用。1.AT模式基本流程图:阶段一RM的工作:注册分支事务记录undo-log(数据快照)执行业务sql并提交报告事务状态阶段二提交时RM的工作:删除undo-log即......
  • 什么是分布式事务?使用Seata有哪些解决方案?Seata的AT模式的执行流程
    什么是分布式事务?简单来说:在分布式系统中出现的事务问题,称为分布式事务。为什么会出现分布式事务:一个分布式事务流程图在这个业务中有3个数据库连接,就没有办法做到全局的事务控制。这就是分布式事务问题分布式事务产生的情况有两种:​ 1.业务跨多个服务实现​ 2.业务跨多......
  • Seata的AT模式的执行流程
    在Seata的事务管理中有三个重要的角色:TC(TransactionCoordinator)-事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。TM(TransactionManager)-事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。RM(ResourceManager)-资源管理器:管理......
  • Seata的AT模式的执行流程
    ·TC(TransactionCoordinator)-事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。·TM(TransactionManager)-事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。·RM(ResourceManager)-资源管理器:管理分支事务,与TC交谈以注册分支事务......
  • Seata的AT模式的执行流程
    Seata角色术语TC-事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚,即Seata服务端。TM-事务管理器定义全局事务的范围:开始全局事务、提交或回滚全局事务,在事务发起的客户端。RM-资源管理器管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态......
  • 项目解决方案:连锁店视频监控接入汇聚联网解决方案
     目录一.项目背景二.建设目标和详细需求分析2.1建设总目标2.2需求分析三.系统特色3.1数字,高清,网络化系统3.2安全性3.3可拓展性3.4资源利旧,节约成本四.系统实现4.1系统方案设计4.2拓扑组网说明4.3用户权限管理实现五.系统功能介绍5.1认证和登录功能5.1.1认证功......
  • seata 模式相关
    Seata解决分布式的方案1AT模式数据最终一致AT模式使用起来更加简单,无业务侵入,性能更好AT模式是Seata创新的一种非侵入式的分布式事务解决方案,Seata在内部做了对数据库操作的代理层,我们使用SeataAT模式时,实际上用的是Seata自带的数据源代理DataSourceProxy,Seata在......
  • RMI分布式通信及其应用
    分布式系统实验一RMI分布式通信及其应用实验名称:RMI分布式通信及其应用实验要求:利用RMI通讯机制,完成一个分布式通讯应用。实验学时:2学时。实验内容:设计一个基于JavaRMI通讯机制的在线拍卖系统。系统客户端(买家)通过服务器(拍卖中心)出价竞拍商品,实现客户端和服务器之间的交互......