分布式事务:X/Open DTP分布式事务处理模型与分布式事务处理XA规范

发布时间:2024年01月19日

简介

X/OPEN

X/Open国际联盟有限公司是一个欧洲基金会。

在1996年,由X/Open与Open Software Foundation合并组成The Open Group。

The Open Group

已有超过20年的标准制定与推广历史。The Open Group最有名是作为UNIX商标的认证机构。在过去,协会最出名的是其出版的Single UNIX Specification,它扩充了POSIX标准而且是UNIX的官方定义。其成员包括买主、供应商以及政府机构, 例如 Capgemini, Fujitsu, Hitachi, US Department of Defense, NASA等。

The Open Group是一个通过技术标准实现业务目标的全球联盟。The Open Group为其成员组织提供了一个有效的平台来影响竞争环境,提高其公司地位,并实现其技术和企业投资的持久回报。

The Open Group Library?在里面可以找到相关的规范和模型

X/OPEN DTP模型

X/Open DTP (X/Open?Distributed Transaction Processing Reference Model) 是X/Open 这个组织定义的一套分布式事务的标准,也就是了定义了规范和API接口。

使用X/Open DTP模型的有2PC(Seata的XA,3PC),JTA(JBoss,JOTM,Atomikos),JTS

官方DTP模型文档资源下载:https://download.csdn.net/download/ycsdn10/88759116

XA规范

XA 规范是 X/Open 组织提出的分布式事务处理规范,XA 规范定义了 2PC(两阶段提交协议)中需要用到的接口,也就是DTP 模型定义 中TM 和 RM 之间通讯的接口规范叫 XA

官方XA规范文档资源下载:https://download.csdn.net/download/ycsdn10/88759125?

2PC

2PC 是 Two-Phase Commit 的缩写,即二阶段提交,是计算机网络尤其是数据库领域内,为了保证分布式系统架构下所有节点在进行事务处理过程中能够保证原子性和一致性而设计的一种算法。同时,2PC 也被认为是一种一致性协议,用来保证分布式系统数据的一致性

XA方案

关系数据库(比如Oracle、MySQL)基于 X/Open 提出的的 XA 规范(核心依赖于 2PC 算法)被称为 XA 方案

分布式事务处理 (DTP) 模型

X/Open DTP中的角色

AP(Application Program)

应用程序,主要是通过TX接口定义事务边界以及那些组成事务的特定于应用程序的操作。

RM(Resouces Manager)

资源管理器,管理一些共享资源的自治域,提供对享资源的访问。资源必须实现XA定义的接口

RM示例

1.这里可以理解为一个DBMS数据库系统以原子方式定义事务和提交工作

2.消息服务器管理系统,应用程序通过资源管理器对资源进行控制。

3.在文件访问方法当中,如索引顺序访问方法(ISAM)也可以是RM的基础。

4.打印服务器可以实现为RM

TM(Transaction Manager)

事务管理器,管理全局事务,接受来自AP(应用程序)发起的XA事务操作,协调事务的提交或者回滚,并协调故障恢复。总的来说就是提供给AP应用程序编程接口以及管理(RM)资源管理器

CRM(Communication Resource Manager)

通信资源管理器,控制一个TM域(TM domain)内或者跨TM域的分布式应用之间的通信。CRM可以支持多种类型的通信模式

DTP概念

事务

一个事务是一个完整的工作单元,由多个独立的计算任务组成,这多个任务在逻辑上是原子的。

事务是一个完整的工作单元。它可以包括许多计算任务,其可以包括用户界面、数据检索和通信。典型的事务修改共享资源,(参考OSI DTP规范(模型)更精确地定义事务。)

事务必须能够回滚。用户可以回滚事务以响应诸如客户决策之类的真实世界事件。程序可以选择回滚事务。例如,帐号验证可能失败或帐户可能无法通过余额测试。如果的组件系统出现故障,无法检索、通信或存储数据,那么每个DTP受事务控制的软件组件必须能够撤消事务,并随时回滚事务。当系统确定交易在没有任何故障的情况下完成,它才提交事务。这意味着对共享资源的更改需要永久性影响。完成提交或回滚都会导致一致的状态(一致性)。

全局事务

对于一次性操作多个资源管理器的事务,就是全局事务。

在DTP环境中,许多RM可能支持同一工作单元。此工作单元是一个全局事务。例如,AP可能会请求更新几个不同的数据库。系统中任何位置发生的工作都必须以原子方式提交。每个RM必须让TM协调RM的可恢复性作为全局事务一部分的工作单元。给定的RM通常不知道

其他RM正在做的工作。TM通知每个RM存在,以及指导全局事务的完成。RM负责映射其

全局事务的可恢复工作单位。

分支事务

全局事务具有一个或多个事务分支,某一个资源管理器有自己独立的任务,这些任务的集合作为这个资源管理器的分支任务

分支事务是TM和RM进行的 全局事务当中的的部分工作。例如,当AP使用多个进程或由多个远程参与同一全局事务。在TM开始事务之后,不同分支事务都是同一全局事务。TM提供RM标识全局事务和特定分支。不同的分支必须以原子方式完成。RM可以使用这些信息来优化其对共享资源和锁的使用。

控制线程

用来表示一个工作线程,主要是关联AP,TM,RM三者的一个线程,也就是事务上下文环境。简单的说,就是需要标识一个全局事务以及分支事务的关系。

控制线程是操作系统进程包含地址空间和在该地址空间内执行的单个控制线程,以及

所需的系统资源。上下文可能包括进程对共享的锁定资源以及进程打开的文件。出于可移植性的原因控制线程必须在AP、TM和RM之间是通用的。线程概念是TM协调RM的核心。AP呼叫RM请求工作,而TM调用RM来描述事务分支。一个AP线程调用TM来声明启动全局事务。TM记录这一事实并通知RM。AP之后重新获得控制,它使用一个或多个RM的本地接口来完成工作。RM在同一控制线程中接收来自AP和TM的叫请求。因此,某些XA例程必须从特定线程调用。

DTP模型当中的二阶段提交使用全流程

1.应用程序AP通过事务管理器TM开始全局事务

2.应用程序AP申明需要哪些资源后,在事务管理器当中注册资源

3.应用程序AP利用资源操作接口进行操作资源

4.应用程序AP进行提交事务

5.二阶段提交,事务管理器TM先进行准备提交,通过XA接口请求资源管理器RM

6.二阶段提交, 事务管理器TM正常接受资源管理器RM成功反馈则进行再次利用XA接口进行提交,否则利用XA接口进行放弃提交及回滚

二阶段提交详细流程见

分布式事务:2PC与3PC的区别-CSDN博客

XA

XA规范下的XA接口是事务管理器和资源管理器之间的双向接口。XA接口不是普通的

应用程序编程接口(API)。它是DTP之间的系统级接口的软件组件。

大致有以下接口功能:

1.在事务管理器TM中注册资源管理器RM

2.在事务管理器TM中解除注册资源管理器RM

3.终止应用程序AP资源管理器RM的使用

4.告诉资源管理器RM去提交事务分支

5.测试异步xa_操作的完成

6.将线程与事务分支解除关联

7.允许资源管理器RM对完成的事务分支进行放弃。

8.初始化资源管理器RM以供应用程序AP使用

9.请求资源管理器RM准备分支事务的提交

10.获取资源管理器RM准备好或者启发式完成的的XID列表

11.告诉资源管理器RM回滚分支事务

12.利用XID,进行启动或恢复事务分支

总结

在分布式事务处理DTP模型发布后,是一个里程碑,之后很多的技术都进行了兼容或者推陈出新。关于更加具体的DTP模型内容与XA规范,在官方文档中有更详细的描述,有兴趣的朋友可以看下。

文章来源:https://blog.csdn.net/ycsdn10/article/details/135657525
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。