首页 > 其他分享 >Seata架构实现分布式事务

Seata架构实现分布式事务

时间:2023-09-27 16:11:24浏览次数:46  
标签:回滚 架构 Seata 事务 阶段 提交 分布式 seata

Seata架构官网地址:http://seata.io/zh-cn/

Seata架构实现模型

 TC (Transaction Coordinator):事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。

监控和通知各个事务,包括分支事务和全局事务。

TM (Transaction Manager):事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。

执行事务

RM (Resource Manager):资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

Seata支持的模式有四种:

1.XA模式

 执行流程:

第一阶段:事务协调者通知每个事务参与者执行本地事务,本地事务执行完成后报告事务执行状态给事务协调者,此时事务不提交,继续持有数据库锁。

第二阶段:事务协调者基于一阶段的报告来判断下一步操作,如果一阶段都成功,则通知所有事务参与者,提交事务,如果一阶段任意一个参与者失败,则通知所有事务参与者回滚事务。

就是在XA的模型之上,使用TM进行事务管理;

优点:事务的强一致性,满足ACID原则。

常用数据库都支持,实现简单,并且没有代码侵入

缺点:因为一阶段需要锁定数据库资源,等待二阶段结束才释放,性能较差;依赖关系型数据库实现事务。

配置文件添加


seata:
data-source-proxy-mode: AT # 默认就是AT
registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址
type: nacos # 注册中心类型 nacos
nacos:
server-addr: 192.168.200.130:8848 # nacos地址
namespace: "" # namespace,默认为空
group: DEFAULT_GROUP # 分组,默认是DEFAULT_GROUP
application: seata-server # seata服务名称
username: ""
password: ""
tx-service-group: seata-demo # 事务组名称
service:
vgroup-mapping: # 事务组与cluster的映射关系
seata-demo: HZ
**注意:每个微服务都需要配置

全局事务开始方法标记注解 @GlobalTransactional

AT模式(常用)

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

AT模式的两个阶段:

阶段一:事务调节者通知每一个事务参与者调用本地事务,(就是执行SQL)在资源管理器中(RM)解析SQL语义,提取数据,在undolog中先保存原快照(before image)然后执行业务SQL,然后再保存(after image)快照。此时和XA模式不同,sql已经执行,不持有数据库锁。

阶段二,事务调节者根据第一阶段的报告来判断下一步.

第一阶段都成功,则提交,并且同时RM删除快照。

第一阶段没有成功,则回滚,恢复undo-log日志,删除undo-log。

优点:AT模式不会产生死锁,最终一致性。

SAGA模式--适合长连接

TCC模式

Try....Confirm...Cancel

二阶段提交:一阶段:预留资源;二阶段:提交或者回滚,手动补偿逻辑

标签:回滚,架构,Seata,事务,阶段,提交,分布式,seata
From: https://www.cnblogs.com/liu1234567890/p/17732939.html

相关文章

  • 分布式事务解决方案-Seata01
    分布式事务-使用Seata传统数据库事务A-原子性:①事务中的所有操作,要么全部成功,要么全部失败。②影响事务的操作,一般指的是增删改,也就是一个事务中,有多个增删改的SQLC-一致性:①事务开始前到事务结束后,数据状态需要一致②例如:转账增减金额和支付减去金额+修改订单状态、减库存I-......
  • 分布式事务详解
    1、分布式事务传统数据库事务事务特性:ACID1、原子性:事务中的所有操作,要么全部成功,要么全部失败,影响事务的操作,一般指的是增删改,也就是一个事务中,有多个增删改的SQL2、一致性:事务开始前到事务结束后,数据状态需要一致。这意味着事务中的操作必须满足数据库定义的所有约束和规则,......
  • 分布式事务
    分布式事务传统数据库事务一,什么是事务事务是指单个逻辑工作单元执行得一系列操作,要么都做,要么都不做,是不可分割的工作单位,是数据库环境中的的最小工作单元二、为什么需要事务?事务包含了一组操作,这些操作可以是一条SQL语句、一组SQL语句或整个程序。如果其中一个操作不成功,......
  • 科技云报道:分布式存储红海中,看天翼云HBlock如何突围?
    过去十年,随着技术的颠覆性创新和新应用场景的大量涌现,企业IT架构出现了稳态和敏态的混合化趋势。在持续产生海量数据的同时,这些新应用、新场景在基础设施层也普遍基于敏态的分布式架构构建,从而对存储技术提出了新的要求。正因如此,分布式存储凭借高安全性、可靠性、可用性、易于扩展......
  • 分布式事务
    分布式事务  事务在逻辑上是的一组操作,要么都执行,要么都不执行,事务有四个特点也就是常说的ACID,A代表原子性,是最小事务的执行单位,不允许分割。原子性确保动作要么全部完成,要么完全不起作用;C代表一致性,执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的,I代表隔......
  • 传统事务,分布式事务分析
    这里先抛出一个问题:什么是事务?什么是分布式事务?由于隔离机制做的不恰当,在并发事务操作中我们经常会遇见的三个问题(1)脏读(DirtyRead):脏读是指一个事务在读取了另一个事务未提交的数据时发生的情况。假设事务A更新一个数据,但是还没有提交,事务B读取了这个未提交的数据,然后事务A回滚......
  • 五分钟理解什么是自动化测试架构设计
    自动化测试常见的问题如下:1)产品UI经常变化,导致测试脚本不能复用。(2)测试脚本不够健壮,导致脚本回放时,测试脚本本身经常出错。(3)网络延迟,数据加载延迟造成测试脚本失败。(4)识别对象的ID可读性差,导致测试脚本的可读性差。(5)录制的测试代码过于庞大而且应变性差,导致测试脚本的复用......
  • 干货!Playwright架构与Selenium 架构对比
    在Web测试自动化方面,Selenium多年来一直是行业的主导工具。但是,市场上还有许多其他自动化测试工具。Playwright是一种较新的工具,已经越来越受欢迎。网上有很多文章对二者进行对比,今天我从二者的架构角度进行一下对比分析!关于二者在其他方面的区别,我会在后面的文章中持续更新,......
  • 详解分布式系统核心概念——CAP、CP和AP
    最近研究Sykwalking,当调研oap如何进行集群部署时发现:skywalkingoap之间本身不能搭建集群,需要一个集群管理器来组建集群,它支持nacos、zookeeper、Kubernetes、Consul、Etcd五种集群管理器。我重点比较了nacos和zookeeper,发现二者最大的区别是Zookeeper采用了CP架构,nacos既支持CP......
  • 分布式事务
      分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如呢跨数据源的分布式事务,还有跨服务的分布式事务,而分布式事务中又有很多个本地事务,在每个本地事务中药保证ACID的原则,而分布式事务呢我们就可以把所有的事务看作是一个业务,也就是全局事务,要保证全局事务的原......