`
asticx
  • 浏览: 5890 次
社区版块
存档分类
最新评论

分布式事务DTP/WS-Transaction学习笔记

阅读更多

随着公司的系统架构逐渐向分布式SOA化的方向衍变,未来不可避免的需要涉及到分布式事务问题。最近这段时间主要对一些公开的分布式事务解决方案进行了比较粗略的了解,包括企业级的解决方案X/Open DTP,WS-transaction协议簇以及支付宝的分布式事务框架。由于支付宝的事物框架和业务结合的非常紧密,因此在这里只记录对DTP以及ws-transaction的理解(内容可能包含一些错误,欢迎指正)。

 

DTP

DTP模型对于大部分Java程序员来讲并不陌生,实际上主流Java应用服务器很早就实现了基于DTP模型的分布式事物,简单的DTP事务模型如下:
模型中的几个关键组件以及在模型中的作用:
  • Application Program(AP) - 包含业务的应用程序,通过调用TM的相应接口控制事务的生命周期。
  • Transaction Manager(TM) - 事务协调器,主要负责协调各个RM达到事务的全局一致性。
  • Resource Managers(RM) - 事务资源,如JDBC连接JMS会话等。Java语言中的事务资源必须实现XAResource接口才能参与DTP模型中。
  • TX - AP与TM之间的访问协议
  • XA - TM与RM之间的访问协议

上图中的DTP模型仅适合工作在只有一个事务协调器的场景中,随着系统分布化的程度越来越深入,系统架构中会出现多个TM(通常对应着多个业务系统)并且需要在TM之间协调事务一致性,这时的DTP模型则演化为下图的版本:

相比于DTP version1模型,version2模型中新增了以下组件:

  • 主/从事物域 - 由于涉及到了多个事务域,系统需要定义一个主事务域并通过主事物域的TM来协调和其他从事务域之间的事务一致性。通常主事物域都是整个业务中最关键的业务系统。
  • Communication Resource Manager(CRM) - 通讯资源管理器,用于在各个事务域之间传递全局事务上下文
  • TxRPC/XATMI - AP和CRM之间的访问协议
  • XA+ - TM和CRM之间的访问协议

v1版本的DTP模型相对简单,实现分布式事务资源虽然有一定代价但是还算可控,但是由于适用的场景非常有限。v2版本的DTP模型理论上可以适用于绝大多数分布式系统,但是因为大幅度增加了复杂度,所以使用的代价非常高(系统规模达到一定数量之后事务资源的占用情况将非常严重)。

 

目前Java语言环境下,JavaEE应用服务器能够完整的实现DTP v2事务模型,但是必须使用EJB的声明性事务,JTS以及RMI/IIOP,其中JTS(基于OTS的Java实现)承担TM和CRM的角色,IIOP负责事务上下文在各个域之间的传递。Spring框架则只能够实现DTP v1事务模型,如果要实现v2模型,还需要做很多额外的工作。

ws - transaction

ws-transaction协议簇中包含了ws-coordination, ws-atomictransaction, ws-businessactivity核心事务协议以及ws-address, ws-security等辅助协议。对于大部分的业务来说,主要是使用ws-coordination和ws-atomictransaction来实现系统间的分布式事务(ws-businessactivity主要是实现需要非系统自动协调的长事务)。

 

本质上,ws-transaction的运行模式与DTP并无大的差别:ws-coordination结合了和TM和CRM的角色,包括将事务资源加入全局事务中(通过ActivationService以及RegistryService),以及在系统之间传递事务上下文(在SOAP header中加入上下文信息);而ws-atomictransaction则和TM的角色类似,用于协调事务的一致性(都使用2PC算法)。

 

ws-coordination的结构如下:



 

架构中的组件说明(结合分布式事务):

  • Client/Server - 应用程序,主要包含业务逻辑的实现
  • Coordinator/Participant - 事务协调者,类似于DTP中的CRM组件。Coordinator/Participant可以通过调用jta来实现内部的多事务资源协调。Client通过调用ActivationService创建一个新的CoordinationContext,Server通过调用CoordinationContext中的RegistryService将自己做为participant加入到全局事务中。
  • Request/Response/Context - 业务消息,其中消息头中会包括CoordinationContext,在ws-transaction中即事务的上下文信息
  • Coordination Message - Coordinator/Participant之间传递的协调消息,在ws-transaction中即事务的协调信息。
  • Transaction protocol - coordination框架本身可以支持多种protocol,ws-atomictransaction提供了transaction protocol的支持

由于在ws-transaction架构下,Client/Server/Coordinator/Participant之间都是通过web-service进行交互/协调,而在整个分布式事务过程中包括了Coordinator/Participant的enlist,Client/Server之间业务调用,应用/Participant之间的交互以及Coordinator/Participant之间的事务协调,真正业务相关的操作只有Client/Server之间的业务web-service调用,因此非业务资源的消耗会变的非常巨大。

 

综合来看,当系统架构不太复杂并且支撑的业务量不大时,DTP v1模型是个比较合适的选择。一旦系统规模开始上升并且业务量达到一个数量级之后,DTP v1模型无法很好的支持而无论是DTP v2或ws-transaction都会带来性能和维护方面的潜在问题,因此往往基于业务的分布式事务解决方案会是更加好的选择。

  • 大小: 50.8 KB
  • 大小: 42.2 KB
  • 大小: 65.8 KB
分享到:
评论
1 楼 lumi 2013-09-25  
拜读了,收获很大

相关推荐

    龙果学院--微服务架构的分布式事务解决方案--第03节--常用的分布式事务解决方案介绍

    DTP模型(Distributed Transaction Processing Model)是标准的分布式事务处理模型,它包括三个关键组成部分:AP(Application Program)、RM(ResourceManager)和TM(Transaction Manager)。 - **AP**...

    X/OPEN DTP分布式事务模型

    X/OPEN DTP分布式事务模型 X/OPEN DTP分布式事务模型是指一种分布式事务处理模型,由X/Open Company Ltd.提出,旨在提供 يك种通用的分布式事务处理-reference model,指导分布式事务处理系统的设计、实现和测试。...

    mysql分布式事务实现 MySQL XA pdf

    分布式事务处理(Distributed Transaction Processing, DTP)是一种确保在多个物理分布的数据库之间保持数据一致性的方法。这种一致性通常涉及到多个数据库节点同时成功或失败地完成一系列操作。例如,在银行转账场景...

    dtp-sdk-1.6.0

    【dtp-sdk-1.6.0】是一个专门为Java开发者设计的开发工具扩展包,它在1.6.0这个版本中提供了丰富的功能和优化,旨在提升开发效率和代码质量。这个SDK主要用于集成到Eclipse开发环境中,为Java开发者提供更高效、便捷...

    基于TUXEDO中间件构建分布式事务应用研究.pdf

    X/Open DTP(Distributed Transaction Processing)模型是分布式事务处理的一个国际标准,它定义了分布式事务处理的体系结构和接口规范。在DTP模型中,事务处理由多个组件协同工作,包括应用程序(Application)、...

    基于J2EE分布式事务的应用技术研究

    - **JTA (Java Transaction API)**:定义了事务管理器与分布式事务系统各组件之间的接口。它提供了事务控制的API,并且可以与任何符合J2EE规范的事务管理器协同工作。 - **JTS (Java Transaction Service)**:提供了...

    eclipse-dtp-1.8.1-1.1.el6.i686.rpm

    eclipse-dtp-1.8.1-1.1.el6.i686.rpm

    龙果学院(微服务架构的分布式事务解决方案)pdf ppt

    ### 微服务架构下的分布式事务解决方案 #### 一、引言 随着互联网技术的发展和企业级应用需求的增长,传统的单体应用已经难以满足高并发、高性能的要求。微服务架构因其高度解耦、易于扩展等特性成为了当前软件开发...

    DTP分布式事务处理规范XA.pdf

    在X/Open DTP模型中,全局事务(Global Transaction)是跨越多个资源管理器的事务,而事务分支(Transaction Branch)是全局事务在单个资源管理器上的局部表示。事务管理器负责跟踪每个分支的状态,并在所有分支完成...

    分布式事务

    - **X/Open DTP 模型**:遵循 X/Open DTP(Distributed Transaction Processing)模型,该模型定义了事务管理器、资源管理器和应用程序之间的交互。 - **JTA 和 JTS**:Java Transaction API (JTA) 和 Java ...

    Python库 | DTP_Emulator-1.2-py3-none-any.whl

    **Python库DTP_Emulator-1.2-py3-none-any.whl详解** 在Python的开发环境中,库扮演着至关重要的角色,它们提供了各种功能,让开发者能够更高效地完成任务。`DTP_Emulator` 是一个专为Python设计的库,其版本号为...

    第八讲-分布式事务原理及应用.pdf

    在这些场景中,事务模型如X/Open DTP模型被采用,它包括应用程序、资源管理器、事务管理器和通信资源管理,定义了全局事务树形结构。为了协调这些组件,有如XA规范这样的标准,以及2PC(两阶段提交)和3PC(三阶段...

    支付宝大型分布式事务解决方案

    支付宝的分布式事务解决方案遵循了DTP(Distributed Transaction Processing)模型,该模型定义了一个全局事务由一个全局事务管理器(TM)和多个资源管理器(RM)组成。全局事务管理器负责管理事务的全局状态,并与...

    SOA分布式事务

    - **全局事务(DTP模型)**:在分布式环境中,事务跨越多个资源管理器,需要一个全局事务管理器来协调这些资源管理器之间的操作。全局事务管理器通过事务管理协议(如XA协议)与资源管理器进行交互,确保整个事务的...

    PyPI 官网下载 | DTP_Emulator-1.2-py3-none-any.whl

    资源来自pypi官网。 资源全名:DTP_Emulator-1.2-py3-none-any.whl

Global site tag (gtag.js) - Google Analytics