`
keyboardsun
  • 浏览: 58264 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

XA 两阶段详细解说 详解

阅读更多
具体出处我也不知道,这个是我很早以前收藏的。
XA接口标准是事务处理系统与数据库服务器的事务管理接口,CICS事务所作的数据库修改在事务提交(COMMIT)或回撤(ROLLBACK)时由事务处理器通过XA接口向数据库服务器发出提交或回撤请求。由于网络通讯故障随时可能发生,任何发出请求后等待回应的程序都会有失去联系的危险。这种危险发生在发出请求之后,服务器返回应答之前,如果在这个期间网络通讯发生故障,发出请求一方无法收到回应,于是无法判断服务器是否已经成功地处理请求,因为收不到回应可能是请求没有成功地发送到服务器,也可能是服务器处理完成后的回应无法传回请求方。这段时间称为网络通讯的危险期(In-doubt Time)。
无论如何,网络通讯危险期总是存在的,两阶段提交是为了解决这个问题的一种办法。一阶段提交就是事务处理器向数据库服务器发出提交请求,然后等待数据库服务器的回应,收到回应后完成事务的提交,或者服务器返回提交失败的结果就回撤事务。危险期从发出请求开始,到收到回应结束,这段时间中数据库完成数据的修改、日志记录等处理,处理越复杂,危险期就越长。
两阶段提交把事务提交分成两个阶段,第一阶段,事务处理器向数据库服务器发出 " 准备提交 " 请求,数据库收到请求后执行相同的数据修改和日志记录等处理,不同的是处理完成后只是把事务的状态改成 " 可以提交 " ,然后把结果返回给事务处理器。事务处理器收到回应后进入第二阶段,如果在第一阶段内的危险期中发生了故障,事务处理器收不到回应,则认为事务失败,回撤事务。数据库服务器收不到第二阶段的确认提交请求,把 " 可以提交 " 的事务回撤。
两阶段的第二阶段中事务处理器向数据库服务器发出 " 确认提交 " 请求,数据库服务器把事务的 " 可以提交 " 状态改为 " 提交完成 " 状态,然后返回应答。从严格意义上说,两阶段提交并没有完全解决网络通讯危险期的问题,但因为第二阶段的处理很简单,只是修改了事务的状态,与第一阶段相比其处理时间极短,所以危险期极短,发生事务提交故障的可能性几乎不存在。
很多人会问:如果事务处理器只管理一个数据库资源,是不是可以只用一阶段提交的XA接口,如果要管理两个或以上的数据库资源就要使用两阶段提交的XA接口?答案是否定的,用不用两阶段提交不是取决于数据库资源的个数,而是取决于通讯危险期的长短,即事务处理器与数据库服务器间的网络通讯质量。如果事务处理器通过XA接口连接远程数据库,网络通讯质量不高,为了保证事务的完整性,即使只连接一个数据库也应该使用两阶段提交接口。如果事务处理通过XA接口连接局域网上的数据库服务器,连接一个或多个数据库都可以使用一阶段提交接口。
管理多个数据资源的事务处理器中发生的事务可以修改所有相连的数据库,事务提交被分解为多个子事务,分别向各个数据库发出提交请求,这种事务也被称为全局事务。管理单个数据资源的事务处理器中发生的事务只能修改一个数据库,因而不会被分解,这种事务被称为局部事务。虽然多数关于两阶段提交的资料都以全局事务的运作来说明两阶段提交的原理,但两阶段提交与全局事务并没有直接的联系。
同一个事务处理器连接的多个数据资源要使用类型相同的XA接口,不能一些使用一阶段提交接口,另一些却使用两阶段提交接口,如果这样配置,全局事务的提交会失败。两阶段提交的处理过程比一阶段提交复杂,所以效率也较低,大多数企业事务处理系统的事务处理器与数据库服务器运行在同一个计算中心内,以高速而稳定的网络相连接,甚至运行在同一台机器上,这种配置最好使用一阶段提交接口。
这时会引出第二个问题:一台CICS服务器上的应用要连接一个本地的数据库(指运行在同一台机器上或连接在同一个高速的局域网上的数据库),同时也要通过不稳定的网络连接另一个远程数据库,该如何保证CICS应用执行的事务完整性?如果访问远程数据库的响应时间不会过长以至严重地影响整个事务的处理时间,仍然可以采用两阶段提交XA接口。否则应该采用另一种方案,在远程数据库一端安装一个CICS服务器与该数据库通过一阶段提交XA接口相连,本地CICS 服务器上的应用要访问远程数据库时通过CICS间的互连机制向远程CICS服务器发出处理请求,由远程CICS服务器上的程序完成处理,整个事务的完整性由CICS的分布式事务管理机制保证,这就已经超出了XA接口的功能范围了,具体的配置请参阅CICS相关文档CICS Intercommunication Guide 。
分享到:
评论

相关推荐

    XA两阶段提交及一阶段提交说明

    XA接口支持两阶段提交协议,确保跨多个资源的事务一致性。JTA在Java平台上提供了对XA事务的支持,其规范定义了接口,但具体的实现由供应商提供,如J2EE容器的JTA实现或独立的JTA实现(如JOTM, Atomikos)。 【二...

    WebSphere MQ与Oracle 数据库的XA事务(两阶段提交)实现

    XA事务是一种两阶段提交(Two-Phase Commit, 2PC)协议,广泛应用于多资源协调的分布式系统中。 首先,让我们了解一下MQ独立事务。在WebSphere MQ中,每个消息发送或接收操作都可以作为一个事务进行。这意味着如果...

    ByteJTA Transaction Manager旨在提供一个常规的基于XA两阶段提交的分布式事务管理器

    ByteJTA Transaction Manager旨在提供一个常规的基于XA两阶段提交的分布式事务管理器。

    数据库一阶段提交和两阶段提交区别和说明

    【数据库一阶段提交和两阶段提交的区别】 一阶段提交(One-Phase Commit)和两阶段提交(Two-Phase Commit)是分布式事务中常见的两种提交协议,它们主要用于保证跨多个数据库节点的事务一致性。 1. **一阶段提交*...

    XA与非XA驱动差异

    其中,XA驱动和非XA驱动是在多数据源环境中特别重要的两种类型。 #### XA驱动与非XA驱动的区别 ##### 1. 定义与概念 - **非XA驱动**:通常指的是普通的JDBC驱动,它支持基本的SQL操作和单个数据源的事务管理。...

    医学课件安卓Xa因子抑制剂临床研究详解.ppt

    【安卓Xa因子抑制剂临床研究详解】 安卓是一种直接Xa因子抑制剂,它通过与抗凝血酶III(AT III)结合来抑制Xa因子的活性,从而阻止血液凝固过程中的外源性途径。不同于传统的抗凝药物如普通肝素和依诺肝素,安卓对...

    800xA_学习手册

    - **步骤详解**: - **设置BIOS**: 在BIOS中将光驱设为第一启动项。 - **启动安装**: 开机时插入Windows 2000 Server 英文版光盘,按任意键从光驱启动。 - **选择安装**: 进入安装界面后,选择安装Windows 2000 ...

    安卓Xa因子抑制剂临床研究详解PPT培训课件.ppt

    【安卓Xa因子抑制剂临床研究详解】 安卓Xa因子抑制剂是一种新型口服抗凝药物,主要用于预防和治疗血栓性疾病。它通过与抗凝血酶III(AT III)结合,间接抑制Xa因子活性,从而阻断凝血级联反应的外源性和内源性途径...

    mysql分布式事务实现 MySQL XA pdf

    ### MySQL分布式事务处理与XA协议详解 #### 一、引言 在当今互联网技术高度发展的背景下,分布式系统已经成为处理大规模数据的关键技术之一。而在分布式环境中,确保数据的一致性成为了非常重要的挑战。其中,...

    Distributed Transaction Processing The XA Specification

    3. **两阶段提交(2PC)**:XA 规范通常与两阶段提交协议相关联。在第一阶段,事务管理器询问所有参与的资源管理器是否准备提交事务。在第二阶段,如果所有参与者都同意,事务将被提交;如果有任何一方拒绝,事务将...

    AN1001-CMT211xA & CMT221xA通讯范例.pdf

    根据提供的文件内容,以下是关于AN1001-CMT211xA & CMT221xA通讯范例的知识点详细介绍: 1. 无线遥控芯片概述: 文中提到的CMT211xA和CMT221xA是HopeRF公司CMOSTEK无线产品线中的两款芯片,分别适用于单发射和单...

    XA 多数据源分布式事物实现 java

    在分布式系统中,数据一致性是至关重要的,而XA(eXtended Architecture)协议就是为了解决这个问题而设计的一种两阶段提交(2PC, Two-Phase Commit)协议。本项目"XA 多数据源分布式事物实现 java"提供了一个基于...

    Mysql事务控制(XA分布式事务)和锁定语句

    X/Open XA协议提供了用于管理分布式事务的详细命令集: - `XA {START|BEGIN} xid [JOIN|RESUME]`:用于启动一个具有指定xid值的分布式事务。`xid`由三部分组成:全局事务标识符`gtrid`、分支限定符`bqual`以及格式...

    PowerEdge R940xa产品彩页.pdf

    戴尔的PowerEdge R940xa是一款专为高性能计算和大数据分析而设计的四路服务器,特别适合那些需要处理计算密集型任务如GPU数据库加速、人工智能和机器学习的企业。这款服务器提供了强大的处理能力,结合了最新的...

    G120XA.pdf

    本文将详细解析SINAMICS G120XA变频器的特性和应用。 ### 产品概览 SINAMICS G120XA变频器是专为风机和泵类应用设计的矢量型变频器,功率覆盖从0.75kW到560kW。它继承了SINAMICS系列的优势,采用先进的矢量控制算法...

    G120XA和V20变频器调试软件InverterEdge及使用手册.rar

    《G120XA与V20变频器调试软件InverterEdge详解及使用手册》 在现代工业自动化领域,变频器作为一种重要的电力电子设备,广泛应用于电机速度控制、节能以及精密定位等方面。Siemens的G120XA和V20系列变频器以其高效...

    Best Practices for Using XA with RAC

    在Oracle RAC环境中使用XA协议处理分布式事务时,通过实施单例服务策略,可以有效地避免因事务分支跨实例导致的行级锁冲突和两阶段提交过程中的异常。这一策略不仅提高了事务处理的效率和可靠性,还简化了分布式环境...

    ABB 800xa系统入门教程

    总体来看,本教程内容全面,详细介绍了ABB 800xA系统的使用方法和操作步骤,从创建系统到与PLC通讯,再到画面编辑与报警组态等,一步步引导用户熟悉并掌握ABB 800xA系统的操作。对于自动化控制系统初学者来说,本...

    xa分布式事务处理

    4. **两阶段提交协议(2PC)**:这是XA接口规范的基础,用于协调全局事务的提交或回滚。第一阶段,TM询问所有RM是否准备提交事务;第二阶段,如果所有RM都准备好了,TM指示所有RM提交,否则回滚所有操作。2PC保证了...

    ABB-800xA系统入门教程

    ABB-800xA系统入门教程 本教程旨在指导新手快速入门ABB-800xA系统,了解系统的基本配置和操作流程。ABB-800xA系统是一种广泛应用于工业自动化领域的distributed control system(DCS),具有强大的人机界面和可扩展...

Global site tag (gtag.js) - Google Analytics