CN103546440B - 一种客户端发起事务的事务实现方法和系统 - Google Patents
一种客户端发起事务的事务实现方法和系统 Download PDFInfo
- Publication number
- CN103546440B CN103546440B CN201210246336.7A CN201210246336A CN103546440B CN 103546440 B CN103546440 B CN 103546440B CN 201210246336 A CN201210246336 A CN 201210246336A CN 103546440 B CN103546440 B CN 103546440B
- Authority
- CN
- China
- Prior art keywords
- transaction
- affairs
- service
- client
- processing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公布了一种客户端发起事务的事务实现方法和系统,其中所述方法步骤为:通过客户端向服务端的网络处理器发起全局事务开始请求;网络处理器创建事务上下文;客户端随后向网络处理器发起事物性质的服务调用;网络处理器传递事务上下文给应用服务容器并调用服务,其中,服务容器统一将事务性质服务封装成完整的事务分支;客户端随后指示网络处理器提交全局事务;网络处理器分两阶段指示事务处理器向资源管理器提交全局事务;客户端接收到返回的提交的结果,整个事务得到实现。本发明大大减轻客户端和服务器端的压力,同时,能满足客户端快速处理大并发量事务的高性能需求,对客户端发起事务的安全性提供了保障。
Description
技术领域
本发明涉及计算机通信技术领域,具体地说,涉及的是一种客户端发起事务的事务实现方法和系统。
背景技术
事务处理是开发和管理三层结构的客户端/服务器型应用系统工作中需要考虑的问题。由于业务处理的需要,很多应用系统提出必须提供由客户端发起事务的事务实现方案。
目前已有的客户端发起事务的方法和系统中,主要考虑了两个方面:减轻客户端开发压力;提高客户端单位时间内事务处理的并发量。但在以下方面均存在改进空间:在事务处理中,不仅尽可能减轻客户端压力,而且也减轻服务端开发压力;提高客户端大并发事务处理时的吞吐量;增加客户端发起事务的安全性。
事务处理方案的制定需依据一定的事务模型,并得到平台软件和数据库开发商的支持。事务是访问并可能更新数据库中各种数据项的一个程序执行单元。它通常由高级数据库操纵语言或编程语言书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始和事务结束之间执行的全体操作组成。事务具有4个属性:原子性、一致性、隔离性、持久性。涉及到数据库使用的领域,都需要进行事务处理,包括金融、建筑、交通、行政管理等各个行业领域。
以上所述的事务是指全局事务,它其中所包含的诸操作可以分封在多个服务中,而每个服务便是一个事务分支,这些服务在三层结构的客户端/服务器型应用系统中,运行在服务器端。可见,全局事务是有关联的事务分支的集合。这些事务分支的特点是:要么全部被执行,要么全部未被执行。故依事务的原子性特点:一个全局事务提交成功指的是它的所有事务分支均提交成功,否则,就应回滚其所包含的所有事务分支。
为支持事务、使事务的各种属性得到保障,一些国际化组织提供了典型的事务模型,以供三层结构的客户端/服务器型应用系统更好地在事务操作中分工合作。这些事务模型,包括X/Open DTP和OTS模型。
两大主流数据库db2和oracle均支持的DTP事务模型如图1所示,模型中:
RM提供RM API并开放给AP使用。这里RM API的作用是:在资源管理器中插入、删除、更新或搜索指定的资源。如图1中的箭头1所示。
TM提供TX接口并开放给AP使用。这些TX接口的作用是界定事务的开始、结束。如图1中的箭头2所示。同时,TM还提供ax接口并开放给RM使用。这些ax接口的作用是让RM在事务中能动态控制TM。如图1中的箭头4所示。
RM提供xa接口并开放给TM使用。这些xa接口的作用是命令RM(这里RM通常是指数据库)对事务进行提交或回滚。如图1中的箭头3所示。同时,DTP模型推荐TM提交事务的协议采取一阶段提交(one-phase commit)或两阶段提交(two-phase commit)协议。如图1中的箭头5所示。
事务提交的协议有一阶段提交协议和二阶段提交协议。DTP模型推荐采用二阶段提交协议:在第一阶段,TM请求RM准备提交所有事务分支,当且仅当所有事务分支的预提交均成功时,才进入提交的第二阶段,即TM请求RM正式提交所有事务分支,否则,TM应控制RM回滚所有事务分支,保证事务的原子性。如图1中的箭头5所示。
xa接口协议规定RM提供xa接口并开放给TM使用。两大主流数据库db2和oracle定义的xa接口及其与事务分支的关系如下表所示:
综上,DTP模型使得AP可以仅实现业务逻辑,而全局事务的开始、结束、提交则可交由TM控制RM实现。
经对现有技术的检索,申请号为CN201010105099.3的中国发明专利,该专利提供一种处理事务的方法及装置,其中所述方法包括:在多服务调用过程中,当被调用的当前服务需要启动事务时,检测是否已有其它服务启动事务;若没有其它服务启动事务,则当前服务启动事务,并进行当前服务处理;在当前服务处理完毕后,提交启动的事务,并退出当前服务。通过本发明实施例所提供的方法及装置,可以保证处理的事务要么都提交,要么都回滚,有效的保证了事务处理的原子性与一致性。
该发明与本发明的技术要点比较:
1、该发明中,为调用事务性质的服务设计了服务处理单元,为事务提交后的服务退出设计了服务退出单元。而本发明中采用的应用服务容器,既可加载事务性质的服务供调用,也不必在事务提交后让服务退出,这样可以让服务常驻容器中,节省每次重新启动服务时对资源的消耗;同时也可以将服务端的开发量减少到最低(仅需含业务逻辑的实现即可)。
2、该发明中事物性质的服务在每次启动事务前,会通过检测单元判断是否有其他服务启动事务,仅当没有其他服务启动事务时,才会启动事务,这会增加事务处理的等待时间。本发明采取异步XA接口方式操作数据库,可提高事务系统的吞吐量。
申请号为CN200710108595.2的中国发明专利,该发明涉及一种用于在客户机与服务器之间进行事务的方法,该方法包括以下步骤:从所述客户机向所述服务器发送事务请求;从所述服务器接收包括事务策略信息的响应;显示所述事务策略的第一表示,其中,所述第一表示包括链接至事务管理模块的一个或多个事务管理模块启动元件;生成事务菜单,其提供了用于履行所述事务策略的一个或多个事务选项;在所述事务管理模块启动元件启动时,显示包括所述事务菜单的、所述事务策略的第二表示,其中,所述事务菜单被显示具有到所述第一表示的所述事务管理模块启动元件的可视联系;在选择事务选项时,触发向所述服务器发送事务启用信息。
该发明主要应用于客户端向浏览器这样的服务端发起的事务请求,以客户端和Web服务器的交互为主,该方案中未涉及事务处理器与后台数据库的提交处理,主要是对事务菜单的处理更为关注。但是在本发明的中间件应用场景中,以事务上下文足以描述全局事务和分支事务的关系,不必用到事务菜单。
申请号为CN200710108595.2的中国发明专利,该发明提供了一种事务(transaction)业务,它使得无足轻重的客户可以在服务器(106-112)上执行委托的承诺(delegated commit)(140)。这个处理使得无足轻重的客户(102)可以开始和终止事务,同时将用于事务承诺处理的实际责任委托(delegate)给事务协调器和在位于所述服务器上的机器上运行的事务管理器。客户应用(102)不需要本地的事务服务器。可以从客户可访问的多个服务器中选择承诺服务器,并且承诺服务器负责向参加所述事务的其他(参与)服务器承诺事务。
该发明与本发明的技术要点比较:
1.该发明中,由客户处理部件来收集事务活动阶段的信息,但由于客户端较服务端网络处理器来说,前者安全性稍显不足。本发明采取将事务上下文由网络处理器保存的方式,可增加事务交易的安全性。
2.该发明中未提及将应用程序代码像本方案那样加载进应用服务容器中,从而在对应用程序(即服务)调用及事务分支开始和结束的封装上,不如本发明灵活自如。
发明内容
本发明基于DTP模型,主要针对在中间件产品开发过程中遇到的客户端发起事务的事务实现问题,提出了一种客户端发起事务的事务实现方法和系统。本方案使DTP各模块职能分工明确,大大减轻客户端和服务器端的压力,使他们不必关注复杂的网络通信和事务处理,只将精力投入业务处理中。同时,方案还支持采用多事务处理器来接受大并发量客户端事务提交,能满足客户端快速处理大并发量事务的高性能需求。此外,方案也对客户端发起事务的安全性提供了保障。
为实现上述的目的,本发明采用了以下技术方案:
本发明所述的客户端发起事务的事务实现方法,包括如下步骤:
步骤一:客户端向服务端的网络处理器发起全局事务开始请求;
步骤二:网络处理器创建事务上下文;
步骤三:客户端随后向网络处理器发起事务性质的服务调用;
步骤四:网络处理器传递事务上下文给应用服务容器并调用服务,其中,服务容器统一将事务性质服务封装成完整的事务分支;
步骤五:客户端随后指示网络处理器提交全局事务;
步骤六:网络处理器分两阶段指示事务处理器向资源管理器提交全局事务;
步骤七:客户端接收到返回的提交的结果,整个事务得到实现。
进一步的,所述步骤一具体为:
11:客户端发起事务开始的请求,其中,客户端发起的全局事务请求可以是大并发量的,这些请求被服务端的网络处理器接收;
12:服务端的网络处理器可灵活配置为多个,接收到客户端发起的请求后,向事务处理器获取并保存全局唯一的事务标识;
13:网络处理器向客户端返回事务开始请求的执行结果。
进一步的,所述步骤四具体为:
41:网络处理器接收到事务性质的服务调用后,向事务处理器获取并保存全局唯一的事务分支标识。同时向应用服务容器传递由全局事务标识和分支事务标识共同组成的事务上下文并调用应用服务容器中加载的服务;其中,应用服务容器是加载服务的容器,根据服务的不同而不同,各个容器可以互为独立、互不影响。同时,同种应用服务容器可以多份存在;
42:应用服务容器在接收到网络处理器发出的事务性质的服务调用请求后,会统一在执行服务调用之前和之后分别加上带有事务上下文的事务分支的开始和结束,将被调用服务封装成完整的事务分支并调用之;其中,被加载在应用服务容器中的服务,仅仅是业务逻辑的实现,而事务分支的开始和结束由容器自动嵌入服务前后。
43:应用服务容器返回服务调用结果给网络处理器,并经由网络处理器最终返回给客户端。
进一步的,所述步骤五具体为:
51:客户端向网络处理器发起事务提交通知。其中,网络处理器可灵活配置为多个。
进一步的,所述步骤六具体为:
61:网络处理器收到客户端的全局事务提交通知后,通知事务处理器开始两阶段提交事务,其中,事务处理器可灵活配置为多个。
62:第一阶段预提交时,事务处理器向数据库预提交所有事务分支,并返回执行结果和所有事务分支的即时状态给网络处理器,网络处理器保存返回的所有事务分支的即时状态,并通知事务处理器开始第二阶段正式提交。
63:事务处理器作第二阶段正式提交。其中,事务处理器先判断所有事务分支的状态是否为已预备好,若是,则向数据库正式提交所有事务分支。如正式提交时有任一事务分支提交失败,则回滚该分支及所有剩下的事务分支,并对已提交的事务分支做冲正逻辑。如事务处理器判断出并非所有的事务分支均预提交好,则回滚所有事务分支。保证事务的原子性和一致性。
本发明还提供一种用于上述方法的客户端发起事务的事务实现系统,包括:
客户端,用于发起事务、调用服务并指示网络处理器分阶段提交全局事务;
服务端,包括网络处理器、应用服务容器、事务处理器;其中:
网络处理器,位于服务端,用于接收来自客户端的事务开始请求并传递事务上下文给应用服务容器,同时还负责调用服务,并指示事务处理器提交全局事务;
应用服务容器,位于服务端,用于加载服务,供网络处理器调用;
事务处理器,位于服务端,用于向资源管理器提交全局事务;
资源管理器(优选地为数据库),独立于客户端和服务端,用于执行服务的相关操作,包括查询、插入、删除、更新等数据库操作。
本发明针对客户端发起的事务,其事务实现方案具有以下有益效果:
1)对于客户端,提供事务相关的编程接口,使客户端可将精力集中在业务逻辑的调用上,开发量大为简化。
2)对于服务端,提供多应用服务容器,可以加载应用程序,并在事务性质的服务被执行之前和之后,应用服务容器会自动根据事务上下文执行事务分支的开始和结束,使服务端应用程序仅需关注业务逻辑的实现,而不必关注复杂的事务处理,应用程序的开发量大为简化。
3)对于客户端大并发量的事务性质的服务调用,提供可配的多网络处理器和多事务处理器,可减少并发调用的等待时间,从而使快速处理大并发量事务性质的服务调用得到保证。
附图说明
图1为X/Open DTP事务模型示意图;
图2为全局事务开始序列图;
图3为事务性质的服务调用序列图;
图4为全局事务两阶段提交序列图;
图5为全局事务预提交流程图;
图6为全局事务正式提交流程图;
图7为多个异事务分支的服务调用序列图;
图8为并发的全局事务1提交序列图;
图9为并发的全局事务2提交序列图。
具体实施方式
以下结合附图和实施例对本发明的技术方案作进一步的解释,但是以下的内容不用于限定本发明的保护范围。
如图2所示,本方案中所述的客户端发起事务的事务实现系统,包括:
客户端,用于发起事务、调用服务并指示网络处理器分阶段提交全局事务;
服务端,包括网络处理器、应用服务容器、事务处理器;其中:
网络处理器,位于服务端,用于接收来自客户端的事务开始请求并传递事务上下文给应用服务容器,同时还负责调用服务,并指示事务处理器提交全局事务;
应用服务容器,位于服务端,用于加载服务,供网络处理器调用;
事务处理器,位于服务端,用于向资源管理器提交全局事务;
资源管理器,独立于客户端和服务端,用于执行服务的相关操作,包括查询、插入、删除、更新等数据库操作。
采用上述系统,一种客户端发起事务的事务实现方法,按照如下步骤进行:
步骤一:客户端发起事务开始的请求。其中,客户端发起的全局事务请求可以是大并发量的,这些请求被服务端的网络处理器接收。
步骤二:服务端的网络处理器可灵活配置为多个,接收到客户端发起的请求后,向事务处理器获取并保存全局唯一的事务标识。
步骤三:网络处理器向客户端返回事务开始请求的执行结果。
步骤四:客户端向网络处理器发起事务性质的服务调用。
步骤五:网络处理器接收到事务性质的服务调用后,向事务处理器获取并保存全局唯一的事务分支标识。同时向应用服务容器传递由全局事务标识和分支事务标识共同组成的事务上下文并调用应用服务容器中加载的服务。其中,应用服务容器是加载服务的容器,根据服务的不同而不同,各个容器可以互为独立、互不影响。同时,同种应用服务容器可以多份存在。
步骤六:应用服务容器在接收到网络处理器发出的事务性质的服务调用请求后,会统一在执行服务调用之前和之后分别加上带有事务上下文的事务分支的开始和结束,将被调用服务封装成完整的事务分支并调用之。其中,被加载在应用服务容器中的服务,仅仅是业务逻辑的实现,而事务分支的开始和结束由容器自动嵌入服务前后。
步骤七:应用服务容器返回服务调用结果给网络处理器,并经由网络处理器最终返回给客户端。
步骤八:客户端向网络处理器发起事务提交通知。其中,网络处理器可灵活配置为多个。
步骤九:网络处理器收到客户端的全局事务提交通知后,通知事务处理器开始两阶段提交事务。其中,事务处理器可灵活配置为多个。
步骤十:第一阶段预提交时,事务处理器向数据库预提交所有事务分支,并返回执行结果和所有事务分支的即时状态给网络处理器,网络处理器保存返回的所有事务分支的即时状态,并通知事务处理器开始第二阶段正式提交。
步骤十一:事务处理器作第二阶段正式提交。其中,事务处理器先判断所有事务分支的状态是否为已预备好,若是,则向数据库正式提交所有事务分支。如正式提交时有任一事务分支提交失败,则回滚该分支及所有剩下的事务分支,并对已提交的事务分支做冲正逻辑。如事务处理器判断出并非所有的事务分支均预提交好,则回滚所有事务分支。保证事务的原子性和一致性。
本方案中,事务实现依次经过:全局事务的开始、各事务分支的调用、全局事务的两阶段提交三个阶段。图2,3,4显示了本事务实现系统分三个阶段逐步实现事务的方法。图7,8和9对事务实现方法做了补充说明。
1、全局事务开始,如图2所示。
由图2可见,全局事务的发起者是客户端。这就是本发明适用的范围:针对客户端发起的事务,提供一套通用的事务实现方案。
在全局事务的开始阶段中,应用服务容器和事务处理器分别与资源管理器(通常是数据库)建立连接,同时,由客户端向服务端的网络处理器发起全局事务请求,而接收到请求的网络处理器通过事务处理器获取并保存全局事务的唯一标识。
这个阶段中:
1)应用服务器与数据库建立连接,是为了在事务实现的第二阶段时可将AP(应用程序)的操作直接映射到RM(资源管理器)。
2)事务处理器与数据库建立连接,是为了在第三阶段中可将TM(事务处理器)的操作直接映射到RM。
获取全局事务标识的作用是:可将后续服务调用中的全局事务下的所有事务分支均与该全局事务标识相关联,方便在事务实现的第三阶段---提交阶段进行成功时统一提交或失败时统一回滚,保证事务的原子性和一致性。
全局事务开始阶段有以下特点:
1)提供客户端事务开始的编程接口,可将客户端代码简化到只用关心业务逻辑调用。减轻了客户端开发压力。
2)本阶段获得的全局事务标识由服务端的网络处理器保存,而不是交给客户端收集记录,增加了事务交易的安全性。
2、事务性质的服务调用,如图3所示。
在事务性质的服务调用阶段,网络处理器会获取针对本次服务调用的事务分支唯一标识,并将其与在事务开始阶段获得的全局事务标识组合成事务上下文保存起来。随后,网络处理器调用加载在应用服务容器中的服务,并将事务上下文传递给它。应用服务容器负责在服务执行的前后自动加入事务分支开始和结束的界定逻辑,将服务封装在事务分支中。最后,服务调用的结果由应用服务容器返回给客户端。
事务性质的服务调用阶段,有以下特点:
1)提供应用服务容器加载服务,并利用应用服务容器在服务的首尾自动加入界定事务分支开始和结束的逻辑,使服务作为完整的事务分支呈现。从而使应用服务代码仅需关注服务的实现(即业务逻辑),减轻服务端的开发压力。
采用事务分支标识与第一阶段获得的全局事务标识“绑定”,共同生成事务上下文的方式,可将相关联的事务分支组合起来,保证事务的原子性、一致性。而针对不同的全局事务,由于获取的全局唯一事务标识不同,可保证事务的隔离性。
3、全局事务的提交,如图4所示。
由图4可见全局事务两阶段提交的正常流:在全局事务提交阶段,首先,由客户端向网络处理器发起事务提交通知(其中,网络处理器可灵活配置为多个)。随后,当网络处理器收到客户端的全局事务提交通知后,通知事务处理器开始两阶段提交事务(其中,事务处理器可灵活配置为多个)。
当进行第一阶段预提交时,首先,事务处理器向数据库预提交所有事务分支:若所有事务分支均预提交成功,则事务处理器返回执行结果和所有事务分支的即时状态给网络处理器;若某一事务分支预提交失败,则由事务处理器保存失败信息,跳过所有剩下分支,直接返回预提交失败的结果给网络处理器。随后,网络处理器保存返回的所有事务分支的即时状态,并通知事务处理器开始第二阶段正式提交。(如图5所示)。
当事务处理器进行第二阶段正式提交时,事务处理器先判断所有事务分支的状态是否为已预备好,若是,则向数据库正式提交所有事务分支。如正式提交时有任一事务分支提交失败,则回滚该分支及所有剩下的事务分支,并对已提交的事务分支做冲正逻辑。如事务处理器判断出并非所有的事务分支均预提交好,则回滚所有事务分支。保证事务的原子性和一致性(如图6所示)。
本方案中的全局事务提交,有以下特点:
1)预提交阶段,网络处理器会保存返回的预提交事务状态,并在正式提交时将事务状态传递给事务处理器,使得事务处理器能够根据预提交事务状态成功与否,快速预判是否应对全局事务进行正式提交或者全部回滚,而不必在部分事务分支提交成功而部分失败后考虑冲正逻辑,从而将两阶段提交的好处凸显。
2)事务处理器只需关注通知资源管理器执行全局事务的预提交和提交,而控制全局事务开始预提交及提交的逻辑则由网络处理器掌握,从而使得事务处理器功能单一化,实现容易。对于网络处理器,由于其直接与客户端进行网络通信,因而能方便地知晓何时应开始提交全局事务,故由它来控制事务逻辑方便易行。
4、事务实现方案的补充说明
(1)、多个异事务分支的服务调用
当一个全局事务拥有多个事务分支,而这些事务分支所在的服务并不相同时,采用本方案,会得到如图7所示的调用情形:首先,客户端通过网络处理器调用服务1,而网络处理器通过事务处理器获取并保存分支事务1的唯一标识并通过服务容器指示事务处理器完成对资源管理器的指定操作,从而实现事务分支1的服务调用;随后,客户端通过网络处理器调用服务2,而网络处理器通过事务处理器获取并保存分支事务2的唯一标识并通过服务容器指示事务处理器完成对资源管理器的指定操作,从而实现事务分支2的服务调用。至此,实现了全局事务的多个异事务分支的服务调用。
多个异事务分支的服务调用特点是:不同带事务性质的服务可以被装载进不同服务容器,且服务容器之间可以互不影响,这样能够成功削减大并发量时单个服务容器所承受的压力,并使大并发量的客户端服务调用能由多个服务容器并行处理,提高服务调用的吞吐量。
(2)、全局事务并发提交
客户端提交多个全局事务时,采用本方案,可以由多网络处理器和多事务处理器各自独立地、并行地处理,如图8和9所示。
图8所示的是并发提交多个全局事务时,提交全局事务1的流程:
首先,由客户端向网络处理器发起全局事务1的提交通知(其中,网络处理器可灵活配置为多个)。随后,当网络处理器收到客户端的全局事务提交通知后,通知事务处理器向资源管理器发起预提交和正式提交的两阶段提交(其中,事务处理器可灵活配置为多个),并从事务处理器得到两阶段提交结果,返回给客户端。
图9所示的是并发提交多个全局事务时,提交全局事务2的流程:
首先,由客户端向网络处理器发起全局事务2的提交通知(其中,网络处理器可灵活配置为多个)。随后,当网络处理器收到客户端的全局事务提交通知后,通知事务处理器向资源管理器发起预提交和正式提交的两阶段提交(其中,事务处理器可灵活配置为多个),并从事务处理器得到两阶段提交结果,返回给客户端。
本方案提供全局事务并发提交方式,其特点是:
1)网络服务器和事务处理器可灵活配置成多个,当客户端提交不同的全局事务时,可被不同的网络服务器和事务处理器配合起来并行执行;
2)预提交和提交还可结合异步的XA操作方式,从而缩减了事务处理请求的等待时间,提高了事务系统的吞吐量。
本方案已经应用在XX集团的硅钢系统,其中中间件逻辑层的交易中间件事务处理系统即采用本方案实现。客户端通过调用本方案提供的事务发起、事务性质的服务调用、事务结束应用编程接口,将事务控制和事务处理在交易中间件各模块之间流转,实现了对客户端大并发量事务的处理,减轻了客户端和服务端开发的压力,同时提高了事务系统的吞吐量。
本发明针对中间件开发过程中,减轻客户端和服务器压力,使他们仅需关注业务逻辑,提供客户端TX编程接口以发起全局事务开启及提交,提供客户端编程接口以调用服务器端服务,提供多应用服务容器以加载多种应用服务并控制所有应用程序事务分支的开启和断开。
本发明满足客户端快速处理大并发量事务的高性能需求,提供中间件可灵活配置的多事务处理器(及多网络处理器)以提高事务处理的吞吐量。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
Claims (10)
1.一种基于DTP模型的客户端发起事务的事务实现方法,其特征在于包括如下步骤:
步骤一:客户端向服务端的网络处理器发起全局事务开始请求;
步骤二:网络处理器创建事务上下文;
步骤三:客户端随后向网络处理器发起事务性质的服务调用;
步骤四:网络处理器传递事务上下文给应用服务容器并调用服务,其中,服务容器统一将事务性质服务封装成完整的事务分支;
步骤五:客户端随后指示网络处理器提交全局事务;
步骤六:网络处理器分两阶段指示事务处理器向资源管理器提交全局事务;
步骤七:客户端接收到返回的提交的结果,整个事务得到实现。
2.根据权利要求1所述的客户端发起事务的事务实现方法,其特征在于:所述步骤一具体为:
11:客户端发起事务开始的请求,其中,客户端发起的全局事务请求可以是大并发量的,这些请求被服务端的网络处理器接收;
12:服务端的网络处理器可灵活配置为多个,接收到客户端发起的请求后,向事务处理器获取并保存全局唯一的事务标识;
13:网络处理器向客户端返回事务开始请求的执行结果。
3.根据权利要求1所述的客户端发起事务的事务实现方法,其特征在于:所述步骤四具体为:
41:网络处理器接收到事务性质的服务调用后,向事务处理器获取并保存全局唯一的事务分支标识,同时向应用服务容器传递由全局事务标识和分支事务标识共同组成的事务上下文并调用应用服务容器中加载的服务;
42:应用服务容器在接收到网络处理器发出的事务性质的服务调用请求后,会统一在执行服务调用之前和之后分别加上带有事务上下文的事务分支的开始和结束,将被调用服务封装成完整的事务分支并调用之;
43:应用服务容器返回服务调用结果给网络处理器,并经由网络处理器最终返回给客户端。
4.根据权利要求3所述的客户端发起事务的事务实现方法,其特征在于:所述应用服务容器是加载服务的容器,根据服务的不同而不同,各个容器可以互为独立、互不影响;同时,同种应用服务容器可以多份存在。
5.根据权利要求3所述的客户端发起事务的事务实现方法,其特征在于:被加载在所述应用服务容器中的服务,仅仅是业务逻辑的实现,而事务分支的开始和结束由容器自动嵌入服务前后。
6.根据权利要求1所述的客户端发起事务的事务实现方法,其特征在于:所述步骤五具体为:客户端向网络处理器发起事务提交通知,其中,网络处理器可灵活配置为多个。
7.根据权利要求1所述的客户端发起事务的事务实现方法,其特征在于:所述步骤六具体为:
61:网络处理器收到客户端的全局事务提交通知后,通知事务处理器开始两阶段提交事务,其中,事务处理器可灵活配置为多个;
62:第一阶段预提交时,事务处理器向数据库预提交所有事务分支,并返回执行结果和所有事务分支的即时状态给网络处理器,网络处理器保存返回的所有事务分支的即时状态,并通知事务处理器开始第二阶段正式提交;
63:事务处理器作第二阶段正式提交:其中,事务处理器先判断所有事务分支的状态是否为已预备好,若是,则向数据库正式提交所有事务分支;如正式提交时有任一事务分支提交失败,则回滚该分支及所有剩下的事务分支,并对已提交的事务分支做冲正逻辑;如事务处理器判断出并非所有的事务分支均预提交好,则回滚所有事务分支,保证事务的原子性和一致性。
8.一种用于权利要求1-7所述方法的客户端发起事务的事务实现系统,其特征在于:包括:
客户端,用于发起事务、调用服务并指示网络处理器分阶段提交全局事务;
服务端,包括网络处理器、应用服务容器、事务处理器;其中:
网络处理器,位于服务端,用于接收来自客户端的事务开始请求并传递事务上下文给应用服务容器,同时还负责调用服务,并指示事务处理器提交全局事务;
应用服务容器,位于服务端,用于加载服务,供网络处理器调用;
事务处理器,位于服务端,用于向资源管理器提交全局事务;
资源管理器,独立于客户端和服务端,用于执行服务的相关操作,包括查询、插入、删除、更新数据库操作。
9.根据权利要求8所述的客户端发起事务的事务实现系统,其特征在于:在全局事务的开始阶段中,所述应用服务容器和事务处理器分别与资源管理器建立连接,同时,由客户端向服务端的网络处理器发起全局事务请求,而接收到请求的网络处理器通过事务处理器获取并保存全局事务的唯一标识。
10.根据权利要求8或9所述的客户端发起事务的事务实现系统,其特征在于:在事务性质的服务调用阶段,所述网络处理器会获取针对本次服务调用的事务分支唯一标识,并将其与在事务开始阶段获得的全局事务标识组合成事务上下文保存起来;随后,网络处理器调用加载在应用服务容器中的服务,并将事务上下文传递给它;应用服务容器负责在服务执行的前后自动加入事务分支开始和结束的界定逻辑,将服务封装在事务分支中,最后,服务调用的结果由应用服务容器返回给客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210246336.7A CN103546440B (zh) | 2012-07-16 | 2012-07-16 | 一种客户端发起事务的事务实现方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210246336.7A CN103546440B (zh) | 2012-07-16 | 2012-07-16 | 一种客户端发起事务的事务实现方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103546440A CN103546440A (zh) | 2014-01-29 |
CN103546440B true CN103546440B (zh) | 2016-10-12 |
Family
ID=49969496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210246336.7A Active CN103546440B (zh) | 2012-07-16 | 2012-07-16 | 一种客户端发起事务的事务实现方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103546440B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9542220B2 (en) * | 2014-04-28 | 2017-01-10 | Oracle International Corporation | System and method for supporting resource manager (RM) instance awareness in a transactional environment |
CN105988862B (zh) * | 2015-02-04 | 2019-06-21 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及装置 |
CN106156119A (zh) * | 2015-04-07 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种分布式事务通信方法、系统及装置 |
US10339127B2 (en) * | 2016-01-28 | 2019-07-02 | Oracle International Corporation | Guaranteed commit outcome in a distributed transaction processing system |
CN106874073A (zh) * | 2016-07-01 | 2017-06-20 | 阿里巴巴集团控股有限公司 | Soa架构下事务的实现方法和装置 |
CN107766080B (zh) * | 2016-08-23 | 2021-11-09 | 阿里巴巴集团控股有限公司 | 事务消息处理方法、装置、设备及系统 |
CN109426552A (zh) * | 2017-09-05 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置和系统以及电子设备 |
CN107844363B (zh) * | 2017-10-27 | 2020-08-28 | 东软集团股份有限公司 | 业务事务处理方法、装置、存储介质及设备 |
CN108009011A (zh) * | 2017-12-04 | 2018-05-08 | 科大国创软件股份有限公司 | 一种基于java反射原理的工作流平台多接口事务链处理方法 |
CN109376141B (zh) * | 2018-08-31 | 2021-09-14 | 创新先进技术有限公司 | 一种数据迁移方法和装置 |
CN114625949A (zh) * | 2020-12-08 | 2022-06-14 | 金篆信科有限责任公司 | 全局事务管理方法、系统、电子设备及存储介质 |
CN117632140A (zh) * | 2023-12-07 | 2024-03-01 | 易方达基金管理有限公司 | 一种业务流程处理方法、装置及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135899A (zh) * | 2010-01-26 | 2011-07-27 | 华为技术有限公司 | 一种事务控制方法及装置 |
-
2012
- 2012-07-16 CN CN201210246336.7A patent/CN103546440B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135899A (zh) * | 2010-01-26 | 2011-07-27 | 华为技术有限公司 | 一种事务控制方法及装置 |
Non-Patent Citations (3)
Title |
---|
《SOA环境下分布式事务处理的研究》;何一昕;《中国优秀硕士学位论文全文数据库》;中国学术期刊(光盘版)电子杂志社;20091215(第12期);全文 * |
《Web服务事务处理模型研究与设计》;何演;《中国优秀硕士学位论文全文数据库》;中国学术期刊(光盘版)电子杂志社;20120415(第04期);全文 * |
《一种支持QoS的Web服务事务中间件研究与实现》;周志敏;《中国优秀硕士学位论文全文数据库》;中国学术期刊(光盘版)电子杂志社;20081115(第11期);第6,47-48,55页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103546440A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103546440B (zh) | 一种客户端发起事务的事务实现方法和系统 | |
CN109284197B (zh) | 基于智能合约的分布式应用平台及实现方法 | |
JP6223569B2 (ja) | ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置 | |
CN105205766B (zh) | 基于云平台的移动互联网医院就诊系统 | |
CN100594498C (zh) | 海量数据实时处理架构及用于该架构的实时随需处理平台 | |
EP1025493B1 (en) | Queued method invocations on distributed component applications | |
US9923975B2 (en) | Session handling based on shared session information | |
US8572236B2 (en) | Distributing services in graph-based computations | |
KR102072726B1 (ko) | 데이터베이스로의 미들-티어 트랜잭션 로그들의 인라인 위임을 지원하는 시스템들 및 방법들 | |
KR100625595B1 (ko) | 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템 | |
US10248415B2 (en) | Dynamic code generation and memory management for component object model data constructs | |
EP2733604A1 (en) | Service model-oriented software running platform and running method thereof | |
US7672949B2 (en) | Connection manager having a common dispatcher for heterogeneous software suites | |
CN1967485B (zh) | 一种实现j2ee应用的方法及系统 | |
US20150149980A1 (en) | Service model-oriented software operation platform and operation method thereof | |
CA2824393C (en) | Method and system for providing a session involving a plurality of software applications | |
CN104219235B (zh) | 一种分布式交易请求方法及装置 | |
JPH06332870A (ja) | オブジェクト指向コンピュータ環境における協調処理のためのオブジェクト・マネージャをリンクする方法及び装置 | |
US7536688B2 (en) | Segmented virtual machine | |
CN110661842B (zh) | 一种资源的调度管理方法、电子设备和存储介质 | |
CN103425462A (zh) | 一种工作流数据持久化的方法和装置 | |
JPH08286918A (ja) | 手順トランザクション・コーディネータと相互動作するオブジェクト指向トランザクション・サービスを作成するためのシステムおよび方法 | |
WO2019047441A1 (zh) | 一种通信优化方法及系统 | |
US20060123070A1 (en) | Method and system of committing operations of a synchronized transaction | |
JP3409308B2 (ja) | クライアント/サーバ・コンピューティング・システム及びサーバ処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |