首页 > 其他分享 >Seata原理 与 AT模式

Seata原理 与 AT模式

时间:2024-05-22 21:52:23浏览次数:23  
标签:回滚 Seata 事务 模式 提交 RM 原理 全局 TC

 

  Seata 是一个开源的分布式事务解决方案,它提供了简单高效的分布式事务服务,以确保分布式环境下的数据一致性。Seata 的 AT 模式(Automatic Transaction)是其中一种事务模式,它通过两阶段提交(2PC)来实现分布式事务管理。 Seata 的原理和 AT 模式的详细讲解:

 

1. Seata 组件

 Seata 包含三个核心组件:

  (1) TM(Transaction Manager,事务管理器):负责定义全局事务的范围,包括全局事务的开始、提交和回滚。

  (2) RM(Resource Manager,资源管理器):管理分支事务,控制对实际数据资源的访问。它负责与 TC 通信,注册分支事务,并执行分支事务的提交或回滚。

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

2. Seata AT 模式

 AT 模式使用两阶段提交协议来保证分布式事务的一致性。具体流程如下:

  第一阶段:准备阶段(Prepare Phase)

    • 事务开始:由 TM 向 TC 发起一个全局事务的开始请求。
    • 业务操作:业务操作在各个参与的微服务中执行,RM 会在执行 SQL 操作之前拦截并记录锁定的行和操作前后的镜像(before image 和 after image)。这些操作暂时未提交。
    • 分支事务注册:每个 RM 在执行完本地事务后,向 TC 注册分支事务,TC 会记录这些分支事务的状态。

  第二阶段:提交或回滚阶段(Commit or Rollback Phase)

    在第二阶段,TM 会根据业务操作的结果决定全局事务的提交或回滚:

    • 无异常提交:

      全局提交:TM 向 TC 发送全局提交请求。

      分支提交:TC 通知所有 RM 提交分支事务,RM 提交之前记录的 after image 并释放锁定资源。

      结果上报:RM 将提交结果上报给 TC,TC 最终确认全局事务提交成功。

    • 异常回滚:

      全局回滚:如果任一分支事务失败或超时,TM 向 TC 发送全局回滚请求。

      分支回滚:TC 通知所有 RM 回滚分支事务,RM 使用记录的 before image 回滚本地事务,并释放锁定资源。

      结果上报:RM 将回滚结果上报给 TC,TC 最终确认全局事务回滚成功。

3. Seata AT 模式关键概念

  锁定资源:RM 在第一阶段会锁定涉及到的资源(如数据库行),以防止其他事务并发修改这些资源。

  镜像(image):在执行事务操作时,RM 会记录操作前(before image)和操作后(after image)的数据镜像,用于回滚操作。

  事务上下文:TM 会在全局事务范围内维护事务上下文,包括事务 ID 和相关分支事务的信息。

4. 工作原理总结

  事务协调器(TC):TC 是 Seata 的核心组件,负责全局事务的管理和协调。它记录并维护每个全局事务的状态,并协调各分支事务的提交或回滚。

  事务管理器(TM):TM 定义事务的边界,管理全局事务的生命周期。它通知 TC 开始、提交或回滚全局事务。

  资源管理器(RM):RM 管理分支事务,实际执行数据库操作。它向 TC 注册分支事务,并根据 TC 的指令提交或回滚事务。

  通过如上机制,Seata AT 模式能够确保分布式事务的最终一致性,即使在网络分区、节点故障等复杂的分布式环境下也能保证数据的正确性和一致性。

 

标签:回滚,Seata,事务,模式,提交,RM,原理,全局,TC
From: https://www.cnblogs.com/warmNest-llb/p/18207191

相关文章

  • RabbitMQ广播模式
    RabbitMQ广播模式Fanout交换机工作原理Fanout交换机会将接收到的消息广播给所有与之绑定的队列,不考虑路由键。每个绑定到fanout交换机的队列都会接收到消息。使用场景广播消息:所有消费者都需要接收到相同的消息。日志广播:将日志消息广播给多个日志处理服务。Direct......
  • 从立创导出元件原理图、封装、3D模型到AD的方法
    1.导出原理图搜索器件并点击数据手册再点击立即打开原理图里面点击导出AD,即可下载原理图文件将下载文件用AD打开,并生成原理图库将生成的原理图库文件复制到自己的原理图库即可2.导出PCB步骤同上,不再赘述3.导出3D模型这里就不能用网页版立创,在软件立创EDA里面先随便......
  • 设计模式06----桥接模式
    桥接模式(BridgePattern)属于结构型设计模式,用于将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,使得这两层能够独立地扩展。桥接模式通常包含以下角色:抽象化(Abstraction):定义抽象类的接口,维护对实现化对象的引用。细化抽象(RefinedAbstraction):扩展抽象化角色,......
  • 文件系统(四):FAT32文件系统实现原理
    FAT32是从FAT12、FAT16发展而来,目前主要应用在移动存储设备中,比如SD卡、TF卡。隐藏的FAT文件系统现在也有被大量使用在UEFI启动分区中。为使文章简单易读,下面内容特意隐藏了很多实现细节,关于分区、格式化等相关的内容,可以查看之前的文章:文件系统(一):存储介质、原理与架构文件系......
  • Java核心面试知识集—设计模式
    设计模式知识点笔记汇总1.单例模式(SingletonPattern)2.工厂模式3.抽象工厂模式(AbstractFactoryPattern)4.模板方法模式(TemplateMethodPattern)5.建造者模式(BuilderPattern)6.代理模式(ProxyPattern)7.原型模式(PrototypePattern)8.中介者模式9.命令模式10.责任链模式11......
  • url-pattern 一个不错的url 模式解析包
    url-pattern是一个很不错的url模式解析包,可以方便的进行url解析(类似我们web框架的路由处理)可以用来实现方便的url解析处理因为很多时候我们需要获取url的部分信息,基于正则是可以的,但是url-pattern提供了比较灵活的模式匹配是一个很不错的工具包参考使用示例......
  • 振弦采集仪在岩土工程监测中的技术原理与方法
    振弦采集仪在岩土工程监测中的技术原理与方法振弦采集仪是一种常用的岩土工程监测仪器,它通过测量地面振动来判断岩土体的动力特性和变形情况。本文将详细介绍河北稳控科技振弦采集仪在岩土工程监测中的技术原理与方法,以及其应用情况和发展趋势。 一、技术原理振弦采集仪的工......
  • BOSHIDA AC/DC电源模块的基本原理与应用
    BOSHIDAAC/DC电源模块的基本原理与应用AC/DC电源模块是一种将交流电转换为直流电的电子设备,它广泛应用于电子设备、电信设备、工控设备以及家电等领域。本文将介绍AC/DC电源模块的基本原理和应用。 AC/DC电源模块的基本原理是通过整流、滤波和稳压等过程将输入的交流电转换......
  • WebP图像格式的原理 与图像压缩的关系
    目录WebP简介原理为什么对预测数据做残差就可以提高压缩率呢?为什么使用算术编码压缩率高于哈夫曼编码?WebP简介\(\quad\)目前在互联网上,图片流量仍占据较大的一部分。因此,在保证图片质量不变的情况下,节省流量带宽是大家一直需要去解决的问题。传统的图片格式,如JPEG,PNG,GIF等格式......
  • Hadoop集群模式的搭建之四:运行Hadoop集群
    格式化NameNode当第一次启动HDFS时要进行格式化,将NameNode上的数据清零,否则会缺失DataNode。以后启动无需再格式化,只要运行过Hadoop集群,其工作目录(/usr/local/src/hadoop/tmp)中就会有数据。如果需要重新格式化,则在重新格式化之前一定要先删除工作目录下的数据,否则格式化时会出问......