xa是x/open dtp定义的交易中间件与数据库之间的接口规范(即接口函数),交易中间件用它来通知数据库事务的开始、结束以及提交、回滚等。xa接口函数则由数据库厂商提供。
在谈到xa规范之前,必须首先了解分布式事务处理(distributed transaction processing)的概念。transaction,即事务,指一个程序或程序段,在一个或多个资源如数据库或文件上为完成某些功能的执行过程的集合。
分布式事务处理是指一个事务可能涉及多个数据库操作,分布式事务处理的关键是必须有一种方法可以管理事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)。
x/open组织(即现在的open group)定义了分布式事务处理模型。x/open dtp模型(1994)包括应用程序(ap)、事务管理器(tm)、资源管理器(rm)、通信资源管理器(crm)四部分。一般,常见的事务管理器(tm)是交易中间件,常见的资源管理器(rm)是数据库,常见的通信资源管理器(crm)是消息中间件。为表述方便起见,在本文中直接以其常见表现形式进行描述。
通常把一个数据库内部的事务处理,如对多个表的操作,作为本地事务看待。数据库的事务处理对象是本地事务,而分布式事务处理的对象是全局事务。
所谓全局事务,是指分布式事务处理环境中,多个数据库可能需要共同完成一个工作,这个工作即是一个全局事务,例如,一个事务中可能更新几个不同的数据库。对数据库的操作发生在系统的各处但必须全部被提交或回滚。此时一个数据库对自己内部所做操作的提交不仅依赖本身操作是否成功,还要依赖与全局事务相关的其它数据库的操作是否成功,如果任一数据库的任一操作失败,则参与此事务的所有数据库所做的所有操作都必须回滚。
一般情况下,某一数据库无法知道其它数据库在做什么,因此,在一个dtp环境中,交易中间件是必需的,由它通知和协调相关数据库的提交或回滚。而一个数据库只将其自己所做的操作(可恢复)影射到全局事务中。
xa规范的基础是两阶段提交协议。
在第一阶段,交易中间件请求所有相关数据库准备提交(预提交)各自的事务分支,以确认是否所有相关数据库都可以提交各自的事务分支。当某一数据库收到预提交后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下来,并给交易中间件一个同意提交的应答,此时数据库将不能再在该事务分支中加入任何操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作还未释放(处于上锁状态)。如果由于某种原因数据库无法提交属于自己的事务分支,它将回滚自己的所有操作,释放对共享资源上的锁,并返回给交易中间件失败应答。
在第二阶段,交易中间件审查所有数据库返回的预提交结果,如所有数据库都可以提交,交易中间件将要求所有数据库做正式提交,这样该全局事务被提交。而如果有任一数据库预提交返回失败,交易中间件将要求所有其它数据库回滚其操作,这样该全局事务被回滚。
以一个全局事务为例,ap首先通知交易中间件开始一个全局事务,交易中间件通过xa接口函数通知数据库开始事务,然后ap可以对数据库管理的资源进行操作,数据库系统记录事务对本地资源的所有操作。操作完成后交易中间件通过xa接口函数通知数据库操作完成。交易中间件负责记录ap操作过哪些数据库(事务分支)。ap根据情况通知交易中间件提交该全局事务,交易中间件会通过xa接口函数要求各个数据库做预提交,所有数据库返回成功后要求各个数据库做正式提交,此时一笔全局事务结束。
xa规范对应用来说,最大好处在于事务的完整性由交易中间件和数据库通过xa接口控制,ap只需要关注与数据库的应用逻辑的处理,而无需过多关心事务的完整性,应用设计开发会简化很多。
具体来说,如果没有交易中间件,应用系统需要在程序内部直接通知数据库开始、结束和提交事务,当出现异常情况时必须由专门的程序对数据库进行反向操作才能完成回滚。如果是有很多事务分支的全局事务,回滚时情况将变得异常复杂。而使用xa接口,则全局事务的提交是由交易中间件控制,应用程序只需通知交易中间件提交或回滚事务,就可以控制整个事务(可能涉及多个异地的数据库)的全部提交或回滚,应用程序完全不用考虑冲正逻辑。
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0505weber/index.html
这篇文章里面有非常详细的代码描绘,值得参考。
http://www.cnblogs.com/sunwei2012/archive/2010/01/08/1642295.html
这也是一篇不错的文章。
分享到:
相关推荐
交易中间件的设计和实现通常遵循一些行业标准和技术规范,例如: - **分布式交易处理模型**(DTP):定义了事务处理的基本框架。 - **X/Open XA 协议**:用于分布式事务处理中的资源管理。 - **事务边界标准**(XA...
《服务器&中间件安全标准规范》是一份详细指导企业如何管理和保护其服务器及中间件安全的重要文档。该规范旨在确保信息安全管理的规范化,提升安全防护能力,防止信息安全事件的发生。 规范适用的范围广泛,覆盖了...
- **应用层接口**:提供了应用程序与交易中间件之间的交互接口,包括事务的开始、提交、回滚等操作。 - **数据库接口**:定义了交易中间件如何与底层数据库交互的标准方法,确保数据操作的一致性和完整性。 #### 五...
无线移动中间件是中间件技术的一个重要分支,它主要应用于无线通信和移动计算环境中,起到连接手机操作系统与企业业务系统之间的桥梁作用。中间件技术的核心目标在于实现不同软件组件之间的通信和协同工作,而无线...
东方通交易中间件开发TongEasy 东方通交易中间件开发TongEasy
《AutoSAR规范中通信中间件服务软件规格说明书》详细阐述了如何依据Adaptive AUTOSAR规范实现汽车电子系统中的板内与板间通信。该规范涵盖了通信管理、开发语言绑定、网络底层绑定以及一系列针对智能驾驶和域控开发...
与传统的同步RPC(远程过程调用)中间件相比,消息中间件允许发送者无需等待响应即可继续执行,而且消息可以间接传递给多个接收者。 消息中间件的主要功能包括消息传递、消息排队、消息持久化等。它能够支持多种...
该项目是针对基于SDL(安全开发生命周期)过程的编程语言与中间件安全开发规范而设计的源码集合,包含28个文件,涵盖15个Markdown文档、4个PNG图片、4个Python脚本、1个HTML文件、1个Git忽略文件、1个LICENSE文件、1...
《多应用智能IC卡安全中间件技术规范》是针对智能卡技术领域的一项标准草案,旨在规范多应用智能IC卡的安全中间件技术,确保卡片在处理多个应用时的安全性和互操作性。这一规范对于保障金融、通信、公共服务等领域的...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循Java消息服务(JMS)规范,为分布式系统提供高效、可靠的消息传递。本教程通过视频形式深入讲解了ActiveMQ的使用和JMS规范的相关知识。 Java消息服务...
《交易中间件在银行业务系统中的应用》 在当今金融行业激烈的竞争环境中,各大银行纷纷利用先进的计算机技术和业务系统提升服务质量。然而,随着银行业务的扩展、新需求的增加以及分布式应用的快速发展,银行IT部门...
二、第l章中间件产生背景及分布式计算环境 第2章面向对象中间件oDP 第3章com相关技术 第4章J2EE技术 第5章CORBA初步 第6章CORBA服务 第7章中间件中的事务处理 第8章coRBA高级技术 第9彦无线、移动中间件 第10章反射...
《Tuxedo交易中间件完整教程》是一份深入解析Tuxedo这一交易中间件的...本教程会详细讲解Tuxedo的安装、配置、编程接口、事务管理、监控以及与其他系统的集成等方面,是学习和掌握Tuxedo这一交易中间件的关键参考资料。
由于XA规范的存在,不同的数据库管理系统(例如MySQL XA)、编程语言中的事务API(例如Java事务API, JTA)以及事务中间件(例如Atomikos事务中间件)等可以按照这一规范实现,以确保它们能够在分布式事务环境中无缝...
中间件的分类有很多种, IDC 对中间件的分类包括:终端仿真 / 屏幕转换、数据访问中间件、远程过程调用中间件、消息中间件、交易中间件、对象中间件等。此外,还有新的分类方法,如底层中间件、高层中间件等。不同的...
《常用中间件安装部署手册》V2.0 版本提供了详尽的步骤与指导,旨在帮助运维人员高效地在服务器上安装和配置各种中间件,以满足不同业务需求。以下将逐一阐述其中涉及的关键知识点。 1. **注意事项**: 在开始安装...
【NGB下一代广播电视网中间件平台技术规范建议书V12共48页.pdf】 NGB(Next Generation Broadcasting)下一代广播电视网是中国为了推动电视广播产业的现代化和数字化而提出的一个重要概念。它旨在构建一个融合传统...