首页 > 其他分享 >分布式事务XA协议2PC、3PC、TCC流程解析

分布式事务XA协议2PC、3PC、TCC流程解析

时间:2023-07-17 10:32:43浏览次数:48  
标签:事务 管理器 数据库 XA 2PC 提交 3PC 分布式


XA协议两阶段提交

1、X/OpenDTP 事务模型

是X/Open 这个组织定义的一套分布式事务的标准,也就是定义了规范和 API 接口,由各个厂商进行具体的实现

DTP 是分布式事物处理(Distributed Transaction Processing)的简称

2、XA协议

XA是由X/Open组织提出的分布式事务规范。

XA规范主要定义了(全局)事务管理器(TM)和(局 部)资源管理器(RM)之间的接口

主流的数据库产品都实现了XA接口,是一个双向的系统接口,在事务管理器以及多个资源管理器之间作为通信桥梁

3、JTA

Java Transaction API,java根据XA规范提供的事务处理标准

4、AP

application, 应用程序也就是业务层,微服务等

5、RM

Resource Manager,资源管理器。一般是数据库,也可以是其他资源管理器,比如消息队列,文件系统

6、TM

Transaction Manager ,事务管理器、事务协调者,负责接收来自用户程序(AP)发起的 XA 事务指令,并调度和协调参与事务的所有 RM(数据库),确保事务正确完成

7、事务模型

在分布式系统中,每一个机器节点能够明确知道自己在进行事务操作过程中的 结果是成功还是失败,但无法直接获取到其他分布式节点的操作结果

当一个事务操作跨越多个分布式节点的时候,为了保持事务处理的 ACID 特性,

需要引入一个“协调者”(TM)来统一调度所有分布式节点的执行逻辑,这些被调度的分布式节点被称为 AP。

TM 负责调度 AP 的行为,并最终决定这些 AP 是否要把事务真正进行提交到(RM)

分布式事务XA协议2PC、3PC、TCC流程解析_数据库

XA协议规范-实现分布式事务的原理如下

  • 一般习惯称为 两阶段提交协议(The two-phase commit protocol,2PC)
  • 是XA用于在全局事务中协调多个资源的机制,MySql5.5以上开始支持
  • 准备阶段:事务管理器给每个参与者都发送Prepared消息,每个数据库参与者在本地执行事务,并写本地的Undo/Redo日志,此时事务没有提交。 Undo日志是记录修改前的数据,用于数据库回滚 Redo日志是记录修改后的数据,用于提交事务后写入数据
  • 提交阶段:
  • 如果事务管理器收到了参与者的执行失败或者超时消息时,直接给每个参与者发送回滚(Rollback)消息,否则发送提交(Commit)消息;
  • 参与者根据事务管理器的指令执行【提交】或者【回滚】操作,并释放事务处理过程中使用的锁资源
  • 注意:必须在最后阶段释放锁资源。

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

总结

  • XA协议简单,数据库支持XA协议,开发使用成本比较低
  • 对业务侵⼊很小,最⼤的优势就是对使⽤⽅透明
  • 用户可以像使⽤本地事务⼀样使⽤基于 XA 协议的分布式事务,能够严格保障事务 ACID 特性
  • 事务执⾏过程中需要将所需资源全部锁定,也就是俗称的刚性事务
  • 刚性事务:遵循ACID
  • 柔性事务:遵循BASE理论
  • 性能不理想,占用锁资源比较多,高并发常见下无法满足
  • 商业付费数据库支持好,mysql目前支持不是很完善
  • 基于 XA 协议的 除了2PC,还有 3PC等
  • 三段提交(3PC)是二阶段提交(2PC)的一种改进版本 ,为解决两阶段提交协议的阻塞问题
  • 采用超时机制,解决TM故障后RM的阻塞问题,但与此同时却多了一次网络通信,性能上也不理想
  • 2PC和3PC目前使用不是很多,只做简单了解即可

标签:事务,管理器,数据库,XA,2PC,提交,3PC,分布式
From: https://blog.51cto.com/u_16142959/6745508

相关文章

  • xargs
    xargs给其他命令传递参数的一个过滤器补充说明xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格......
  • xauth
    xauth显示和编辑被用于连接X服务器的认证信息补充说明xauth命令用于显示和编辑被用于连接X服务器的认证信息。语法xauth(选项)(参数)选项-f:不使用默认的认证文件,而使用指定的认证文件;-q:安静模式,不打印未请求的状态信息;-v:详细模式,打印指定的各种操作信息;-i:忽略认证文件......
  • FIX tutorial in Java with QuickFIX/j simple example
    http://www.tuicool.com/articles/v2me6r 时间 2014-07-3112:22:00ArulkumaranKumaraswamipillaiblog主题Log4J Q.WhatisFIXProtocol? A.FIXstandsforFinancialInformationeXchange,whichisanopenprotocolintendedtostre......
  • SSM - Mybatis - Example - SQL
     Teacher/Student表CREATETABLE`teacher`(`id`INTNOTNULL,`name`VARCHAR(30)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=INNODBDEFAULTCHARSET=UTF8MB4;INSERTINTOteacher(`id`,`name`)VALUES(1,'秦老师');CREATETABLE`student`(......
  • MqttNet version 4.1.3.563 Basic example
    @@mqttnet4.1.4Theformalenvironmentcannotreceivemessages  Reportthisad1Following this exampleIhavenowthereforebeenrequiredtoupdatetheMQTT.NETfromversion3(thatworksthankstheprovidedhelp)toversion4.Averybasic......
  • QNX-9—QNX官网文档翻译—Resource Managers—Examples
    注:本文翻译自QNXSoftwareDevelopmentPlatform-->Programming-->GettingStartedwithQNXNeutrino-->ResourceManagershttp://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.getting_started/topic/s1_resmgr_examples.html我现在将向您展示一些......
  • 16. Q_ __example_位置如何变化_
    Q:#example位置如何变化:<pid="example">Hello</p>#example{margin-left:-5px;}A:向左移动5px。#i-am-useless会被浏览器加载吗?<divid="test1"><spanid="test2"></span></div>#i-am-useless{backg......
  • Seata 分布式事务 XA 与 AT 全面解析
    目录XA模式是什么?什么是Seata的事务模式?AT模式是什么?为什么Seata要支持XA模式?AT与XA之间的关系总结1.XA模式是什么?首先正如煊檍兄所言,了解了什么是XA与什么是Seata定义的事务模式,便一目了然。1.1什么是XA用非常官方的话来说XA规范是X/Open组织定义的分布式事务处理(DTP,Distr......
  • golang GRPC example
    REF:  GolanggRPCExampleGoinstallationweshouldbetterbuildinagolangcontainer https://go.dev/doc/install#https://go.dev/dl/go1.20.2.linux-amd64.tar.gzwgethttps://go.dev/dl/go1.20.2.linux-amd64.tar.gz#wgethttps://golang.org/dl/go1.18.li......
  • [LeetCode] 2024. Maximize the Confusion of an Exam
    Ateacheriswritingatestwith n true/falsequestions,with 'T' denotingtrueand 'F' denotingfalse.Hewantstoconfusethestudentsby maximizing thenumberof consecutive questionswiththe same answer(multipletruesormultiple......