您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页SOA事务处理系统设计与实现

SOA事务处理系统设计与实现

来源:爱go旅游网
维普资讯 http://www.cqvip.com 第24卷第ll期 2007年11月 计算机应用研究 Application Research of Computers Vo1.24 No.11 Nov.2007 SOA事务处理系统设计与实现水 郭玉彬,王新忠,奚建清 (华南理工大学计算机科学与工程学院,广州510640) 摘要:给出了一种适用于SOA环境的事务处理系统——DTPs。它能够适应SOA的松耦舍环境,完成商用事 务的并发控制与恢复。首先给出DTPS系统的整体结构与功能;然后详细讨论了其并发控制算法及消息传递机 制。 关键词:面向服务的架构;事务处理系统;简单对象访问协议;Web服务 中图分类号:TP311 文献标志码:A 文章编号:1001—3695(2007)11—0218—04 Design and implementation of transaction process system for SOA GUO Yu-bin,WANG Xin-zhong,XI Jian-qing (School ofComputer Science&Engineering,South China University ofTechnology,Guangzhou 510640,China) Abstract:This paper proposed a transaction process model for SOA—DTPS.Introduced main framework of DTPS and primary components,including transaction model,transaction context management,coordinator management and transaction compen- sation.Then discussed concurrency algorithm and message transmitting mechanism in detail Key words:SOA;transaction processing system;SOAP;Web service 且每个组成部分都有自己的事务管理方式。在SOA环境下, O 引言 SOA是一种松散耦合的软件体系结构。在该体系结构 中,由各自可复用的服务构成系统功能。这些服务对外提 供意义明确的接口,软件的开发通过对这些接口的调用来完 事务管理主要是把系统中已存在的事务管理系统组织起来,进 行协同事务管理。 b)脆弱性与冗余性。单个节点更容易断开或消失。所以 单一节点上的事务非常脆弱,更容易失败。但系统可能存在多 个冗余节点,一个事务(或子事务)又可在多个节点同时启动 成¨0 J。在此环境下,事务仍然是并发控制与恢复的基础设 施。但由于系统的各个组成部分都有自己的事务管理系统且 多个副本,因此事务执行的成功率又有所提高。 本文针对SOA环境中对事务系统的新特征,给出一种新 的事务处理系统——DTPS(distirbuted transaction process sys. tem)。该系统采用嵌套事务模型来表示对多个服务的嵌套调 各不相同,传统的事务处理技术 ‘不能直接应用。 针对此环境,IBM、微软和BEA提出WS.C/T 等协议。 WS。C/T建立在SOAP、WSDL等Web服务的标准之上,提供协 调分布式应用活动的可扩展框架及框架支持的协调类型和协 调协议。OASIS组织也提出了business transaction protocol 规 用,利用完全分布的算法进行服务的并发控制管理,并采用 SOAP作为底层通信协议。DTPS的运行可以跨越不同的企业 和组织,能够满足Web服务事务的需求,同时又有一定的灵活 范。BTP采用互操作协议来定义Web服务的事务性表现及消 息内容。文献[7]在满足传统事务ACID性质的基础之上引入 协调器(coordinator)的概念,提出了适用于Web服务的协同工 作框架及协议。此外,文献[8]针对服务组合,基于CORBA和 J2EE对象通信模型,提出了对象事务(object transaction)的解 决方案。文献[9]总结了Web服务环境下事务的主要特点,如 事务涉及到的实体是分布在网络中不同位置、不同平台上的服 性、实用性、可扩展性和可靠性。 1 SOA事务处理框架——DTPS 1.1 DTPS整体设计架构 DT ̄S的整体架构如图1所示。系统由协调者、参与者、事 务、传输构件组成。应用程序通过API接口与协调器交互,提 务参与者;存在很多长事务、交互事务;每个事务都可能存在多 个可选的子事务;事务结构比传统事务更松散、更灵活、更复 杂,并不严格地遵循传统事务ACID原则等。 笔者认为SOA环境下,事务管理还有一些新的特征: a)协同性。系统由多个组成部分按调用关系组合而成, 收稿日期:2006—09—11;修返日期:2006.11.07 目(B6480598) 出或取消事务,并接收事务处理结果。协调器负责管理和控制 事务的运行,负责创建事务,允许参与者登记和解除登记,完成 参与者之间的并发控制和协调等。参与者完成事务承担事务 性工作的Web服务。传输构件则完成事务系统其他部分之间 的消息传送。协调器、参与者、传输构件均以Web服务部署单 基金项目:广东省科技攻关计划资助项目(GO3B2040770);广东省自然科学基金资助项 作者简介:郭玉彬(1973一),女,山东高唐人,讲师,博士研究生,研究方向为数据库、网络计算、事务处理技术(1sy0608@p ̄ple.coin.cn);王新 忠(1981.),男,助教,硕士,研究方向为SOA、事务处理技术;奚建清(1962.),男,教授,博导,博士,研究方向为数据库技术、资源交换. 维普资讯 http://www.cqvip.com 第11期 元的形式部署在Web服务运行时容器中。 郭玉彬,等:SOA事务处理系统设计与实现 ・2l9・ 事件包括数据修改操作(如对数据库的insert、update及delete 操作)、事务协调消息(如begin、commit和abort等)、用户自定 义的事件、系统事件(如系统或机器重启)等。根据补偿规则, 补偿事务产生器在事件驱动下产生补偿操作。补偿事务产生 过程如图3所示。 ⑤[婴堕[ 顶荐  图1 DTPS系统整体架构图 图2事务结构图 图3补偿事务产生过程 在该模型中,事务模型是基础,协调器管理是关键,事务上 1.3事务上下文管理 下文是事务管理的实现机制,而补偿事务处理机制则是一种事 事务上下文用来标志一个事务及与之相关的工作,并记录 务恢复策略。 其协调器的位置,它对应用程序和服务透明。为了让事务能够 1.2 DTPS的事务模型与补偿机制 跨越分布式环境,事务上下文是必需的。它是在资源上的事务 DT ̄S采用嵌套事务模型。嵌套事务模型最早是由Moss 性操作与调用操作构件之间的关联,包含系统当前的事务状 在文献[10]中给出的,目前已广泛应用于多个事务管理系统。 态。在一个事务执行期间,所有参与事务的线程共享事务上下 ~个嵌套事务可以看做是依据调用关系组成的一个树状结构。 文。当应用程序与组成事务的服务联系时,DTPS系统组件负 其中根事务是所有事务的父事务;其他事务称为其子事务。其 责传播上下文。DTPS中上下文包括以下几个部分: 他事务可以是平面事务 ,也可以是嵌套事务。如图2所示, a)Context—Identiifer。URI标志符,对于每一个事务,全局 事务T。是根事务,其他事务T2一T。都是其子事务。事务T3 惟一。 调用了事务T5、T6,所以它是事务的父事务;同时1r5、1r6称为 b)Timeout。超时值,用来指明上下文的有效期。超过了 的子事务。 这个时间,事务将不再有效。 嵌套事务模型中,DTPS定义事务是一个二元组t=(O , c)TransactionType。包括事务类型、原子类型或聚合类型。 < )。其中:O 是事务T的操作集合;< 是操作的偏序关系。 d)Registration service。注册服务的地址,用来注册协调协 依据事务原子性将其划分为聚合事务和原子事务两类。 议中的兴趣点(interest)和参与方式(participation),以确定活 定义1在DTPS中,如果事务的所有操作是一个整体,具 动的整体输出结果。 有原子性,则称之为原子事务;如果一个事务不是原子事务,则 事务上下文的schema定义如下: 称之为聚合事务。 <xsd:complexType name=”TransaetionContextType”) 原子事务在Web服务上执行,要么完全执行,要么完全放 (xsd:sequence) 弃。所有参与者看到相同的执行结果。聚合事务则允许一部 (xsd:element name=”Context・Identifier” 分子事务提交而另外一部分事务回滚,用于协调长时间运行的 (xsd:complexType) (xsd:simpleContent) 商业活动。聚合事务的子事务可以是原子事务或聚合事务。 (xsd:extension base=”xsd:anyURI”> 后者可以进一步划分,直至最终结果为原子事务,从而形成嵌 (xsd:anyAttribute namespace=”##other”/> 套、层次性的结构。其所有状态都是外部可见的。聚合事务放 (/xsd:extension) 松了隔离性和原子性,以适合服务的松耦合性质。聚合事务与 (/xsd:simpleContent> 原子事务的区别如表1所示。 (/xsd:complexType) (/xsd:element) 表1 聚合事务与原子事务的区别 (xsd:element ref=”Timeout”minOccurs=”0”/> (xsd:element name=”TransaetionType”type=”xsd: anyURI”/ xsd:element name=”RegistrationService”type=”Endpoint. ReferenceType”/> (/xsd:sequence) xsd:anyAttribute namespace=”##other”processContents 在DTPS中,聚合事务的子事务之间没有锁定机制,其提 ”lax”/> 交前的故障用回滚操作消除,提交后的恢复采用补偿事务(见 (/xsd:complexType) saga模型”引)来实现。 1.4 协调器管理 定义2补偿事务。用来撤销已提交的事务T所产生影 协调器 是一个软件实体,负责确保多方之间达成一致, 响的事务,称为事务T的补偿事务。 用于跨多个数据源协调工作。DTPS通过使用一个支持多个协 补偿事务的产生采用事件驱动机制,只有那些影响应用系 调协议的插件机制,对协调程序的定义进行扩展。DTPS中的 统的数据或状态的事务操作才会产生相应的补偿操作。驱动 协调器是一个能够驱动各种上下文类型和事务协议的通用协 维普资讯 http://www.cqvip.com

-220・ 计算机应用研究 第24卷 调程序,而不是把协调程序绑定到两阶段提交协议上。 //执行局部事务t; 协调器由下列三个服务组成: 接收其他节点发送的消息; a)激活服务(activation service)。用于创建活动和事务上 switch消息类型 case执行局部事务{ 下文,管理上下文的生命周期。它允许用户制订新事务及其与 设置与事务T冲突的集合中 0nnh(T)为空集; 已有事务的关系,建立并维护事务调用关系树,进行并发控制 ofr each t;∈执行列表d0 与事务恢复。 If(ti t.) b)注册服务(registration service)。用于协调协议选择、注 中。舢 (T)=中 Icl(T)utj所属的全局事务; 把t;添加到执行列表中; 册参与方。它允许参与者进行注册,以接收与特定协调器相关 if(与事务T冲突的集合中 Ⅱic (T)是空集){ 的协议。 在13志中写入局部事务t 操作步骤; c)协调服务(coordination service)。用于活动完成处理。 执行局部事务t.; 参与者用它注册协调协议,参加到事务中。 修改局部事务t 的执行状态; 协调是指协调器发送信息到许多参与者,以保证所有参与 向事务T发送成功执行结果和冲突事务集合;  }者得到特定消息的行为。它创建子协调器或者对等协调器之 else{ 间的关系树,如图4所示。 设置局部事务t.为等待执行状态; 向事务T发送局部事务t 执行状态和冲突事务集合 获取执行列表中的第一个局部事务t ; if(tj是等待执行状态){ 在13志中写入局部事务t;操作步骤; 图4协调器和参与者之间的关系树 执行局部事务ti; 修改局部事务ti的执行状态 2 DTPS实现技术 向t;所属的全局事务T 发送成功执行结果; }//end of else 2.1 完全分布的并发控制算法 }//end offor }//end of case 该系统在并发控制方面采用基于序列化图的完全分布的 //提交局部事务t. 死锁检测算法。算法分两部分:协调器方面负责检测是否存在 case提交局部事务{ 死锁;参与者负责传送事务上下文。 在13志中写入全局事务提交操作; 算法1 协调器端并发控制算法 执行提交操作,提交局部事务; (T)={t .-,t }//事务T的局部事务集合 设置事务T后序事务的集合中 (T)为空集; 中(P)={P .-,P }//执行局部事务的站点集合 for each t;∈执行列表d0 if(tl—t )中 (T):中 (T)utj所属的全局事务; SG =¨//事务T的序列化图 在13志中写入局部事务t;提交; {//算法开始 从执行列表中删除t ; //执行阶段,启动事务并更新序列化图 向事务T发送后序事务集合; for eacht ∈中(T)do{ } 将t。发送到相应的P 去执行; f//end of switch 等待来自P 的回答; }//end of algorithm 更新t 的执行状态; Void Update(SefiMGraph SGT,Message answer from Pi) Update(SGT,answer from P。);//更新序列化图 whiletrue do{ if(updated(SGT))//判定SGT是否更新 if(SGT有更新){ 将SG 的更新信息传递给事务T的所有前序事务; 更新SGT; } 将sG 的更新信息传递给事务T的所有前序事务; //验证阶段 } wait until SGT中节点T没有人边; if(SGT有更新^SGT中有环){ //提交阶段 在环中选择时间戳值最大的全局事务进行回滚; for each t.∈中(T)do{ 给该全局事务管理器发送回滚消息; 给执行局部事务t.的P。发送提交命令; Update(SGT,answer from Pi); //end of case 从序列化图sG 获取全局事务T的所有后序事务; //算法结束 将SG 的更新信息传递给事务T的后序事务; Boolean Updated(SerilaGraph SG) } {/ 判定sG是否被上次update操作改变,若有改变返回true,否 }//算法结束 则返回false /} 在该算法中,局部事务管理器等待接收来自其他服务节点 Boolean hasWcycle(SerialGraph SG) 的事务请求,根据事务请求的操作类型,执行不同操作。 {//判定sG中是否有回路,若有返回true,否则返回false} 算法2参与者并发控制算法 以上算法保证死锁的正确检测。其正确性源于序列化图 { 方法的正确性,证明见文献[13]。 维普资讯 http://www.cqvip.com 第11期 2.2消息传递机制 郭玉彬,等:SOA事务处理系统设计与实现 ・221・ 4结束语 本文给出了一个用于SOA环境的事务处理模型DTPS。 DTPS采用SOAP进行底层通信支持。SOAP是Web ser- vices技术的核心之一,用于Web services调用的XML消息表 示。SOAP消息还可以组合以支持多种通信行为,这其中包括 从事务模型、事务上下文管理、协调器管理和补偿事务处理机 请求/响应、请求响应、单向异步消息或者事件通知等。因此系 统采用SAOP协议进行事务之间消息的传递。消息类型如表2 制等方面详细介绍了DTPS的架构,详细讨论了DTPS的并发 控制算法以及消息传递机制。DTPS能够较好地适应SOA架 所示。 表2 DTPS系统的主要消息类型 3相关工作比较 目前SOA正处于不断发展之中,许多公司和标准化组织 已推出支持SOA事务的产品。OASIS的BTP是其中较成熟的 模型。BTP不是专门用于Web服务的事务处理协议,其目的 是使它也能用于其他环境中。因而BTP定义了事务性的XML 协议,并且必须在规范中指定所有的服务依赖性。BTP规范本 质上还是封闭的,而且受到其两阶段协议的。DTPS与 BTP的异同如表3所示。 表3 DTPS与BTP的比较 IBM公司的WSAT 也是一个Web服务事务系统。但 WSAT基于两段提交协议,要求所有参与者的工作完全提交或 者完全取消。其事务性应用程序的开发受限于WebSphere平 台。而DTPS系统中能做到依据自己的商业逻辑,部分地回滚 或提交事务,更好地适应了复杂商业逻辑的需要。DTPS在系 统结构设计上把事务的主要工作放在协调器上,相应地简化了 客户端和参与者的工作。DTPS的运行可以跨越不同的企业 和组织,能够满足Web服务事务的需求,同时又有一定的灵活 性、实用性、可扩展性和可靠性。 构的松耦合特征,同时又有一定的灵活性、实用性、可扩展性和 可靠性。 目前笔者已实现了DTPS的原型系统,正准备推广到应用 中去,考虑增加图形界面,让用户更方便地进行事务管理。补 偿事务并不能适用于所有事务,对不可补偿事务的处理是下一 步的工作重点。另外对事务的原子性进一步的放松及恢复机 制的研究也是下一步要做的工作。 参考文献: [1]ENDREI M,ANG J,ARSANJANI A,et a1.Patterns:service often- ted architecture and Web services[R].[S.1.]:IBM International Technical Support Organization,2004. [2]BLOOMBERG J.The role of the service oriented architect[EB/ OL].(2003—04—12).http://www.ibm.com/developerworks/ratio— nal/library/content/RationalEdge/may03/Bloomberg.pdf. [3]GRAY J,PEUTER A.Transaction processing:concepts and tech— niques[M].San Francisco:Moran Kaufmann,1993. [4]ORCHARD D.Web services coordination[EB/OL].(2002・08).ht・ tp://dev.bea.com/technologies/webservices/stnadards.jsp. [5]COX W.Web services transaction[EB/OL].(2002・08).http:// dev.bea.com/technologies/webservices/stnadards.jsp. [6]FURNISS P.Business transaction protocol version1.1.0[EB/OL]. (2004—1 1・24).http://www.oasis—open.org/committees/download. php/4343/WS2CAF%2Primer.pdf. [7]ZHAO Wen・bing,MOSER L E,MELLIAR—SMITH P M.A reserva・ tion.based coordination protocol for Web services[C]//Proc of the IEEE Intematronal Conference on Web Services.Orlnado:[S.n.], 2005. [8]SCHMIT B A,DUSTDAR S.Towards trnasitional web services [C]//Proc of the 7th Int’1 Conf"on E・commeme Technology Work・ shop.2005. [9]岳昆,王晓玲,周傲英.web服务核心支撑技术:研究综述[J]. 软件学报,2004,15(3):428—442. [10]MOSS J E B.Nested transactions:an introduction[C]//Pmc of Con. currency Control and Reliability in Distributed Systems.New York: Van Nostrand Reinhold,1987:395・425. [1 1]GARCIA・MOLINA H,SALEM K.Sagas[C]//Pmc of the ACM SIG. MOD Conference on Management ofData.San Diego:[s.n.],1987: 249.259. [12]丁柯.网络分布计算中的事务工作流研究[D].北京:中国科学 院.2003. [13]IBM Corporation.Web services atomic transaction for WebSphere application server 5.0.2 technical preview[EB/OL].(2003・10). http://www.alphaworks.ibm.com/tech/wsat. [14]王新忠.SOA事务处理技术的研究[D].广州:华南理工大学, 2006. [15]陈晓萍.虚拟数据库事务模型研究与设计[D].广州:华南理工大 学,2006. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务