首页> 中国专利> 事务处理方法、事务参与节点及事务协调节点

事务处理方法、事务参与节点及事务协调节点

摘要

本申请提供了事务处理方法、事务参与节点和事务协调节点,其中一种事务处理方法应用于计算机事务处理系统中的任意一个事务参与节点中,该方法包括:当前事务参与节点向事务协调节点发送创建全局事务的通知;响应于接收事务协调节点返回的全局事务标识和本地事务标识,当前事务参与节点在该全局事务中依据本地事务标识执行自身的本地事务;在当前事务参与节点的本地事务执行完毕的情况下,向与当前事务参与节点相连的数据库提交本地事务,并将全局事务标识发送至与当前事务参与节点相连的其他事务参与节点。在本申请实施例中,可以及时释放事务参与节点中处理事务的系统资源,进一步的,还能在事务参与节点出现异常的情况下,保证事务的正常处理。

著录项

  • 公开/公告号CN106033562A

    专利类型发明专利

  • 公开/公告日2016-10-19

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201510114177.9

  • 发明设计人 姜宇;

    申请日2015-03-16

  • 分类号G06Q10/06;

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人任苏亚

  • 地址 英属开曼群岛大开曼岛资本大厦一座四层847号邮箱

  • 入库时间 2023-06-19 00:39:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-06

    授权

    授权

  • 2016-11-16

    实质审查的生效 IPC(主分类):G06Q10/06 申请日:20150316

    实质审查的生效

  • 2016-10-19

    公开

    公开

说明书

技术领域

本申请涉及事务处理技术领域,特别涉及一种事务处理方法及事务参与节点,以及,一种事务处理方法及事务协调节点。

背景技术

工作流是业务过程的部分或整体在计算机应用环境下的自动化。工作量可以是在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现。工作流可以由多个事务组成,事务是由事务开始(begintransaction)和事务结束(end transaction)之间执行的全体操作组成。而分布式事务则为涉及来自多个事务参与者的资源的事务。

在现有的分布式事务处理过程中,假设事务发起者A提交了一个事务,而该事务涉及事务参与者B、C和D,在A提交事务之后,A就只能处于等待状态,等到事务参与者D也执行完毕之后,再由事务发起者A向事务协调者提交事务,事务协调者还要再等待A、B、C和D都投票表决通过后,再由事务协调者通知A、B、C和D分别做本地提交。

但是发明人在研究过程中发现,现有技术存在如下问题:事务发起者A、事务参与者B和C在事务处理过程中长时间占用系统资源,例如锁资源、数据库连接资源等,这就使得A、B和C在处理一个事务的过程中即便当前不再执行任务,也无法利用被该事务所占用的系统资源,导致系统资源的浪费。进一步的,假设在处理某个事务的过程中,任意一个事务参与者宕机,都会导致当前事务的失败。

发明内容

本申请所要解决的技术问题是提供一种事务处理方法,用于解决现有技术中由于事务发起者或事务参与者在处理一个事务过程中,系统资源被长时间占用无法被其他事务所用的问题,从而节约事务处理系统的资源。进一步的,即便在某个事务的处理过程中,出现事务参与者宕机的情况,本申请实施例也能正常处理该事务。

本申请还提供了一种事务参与节点和事务协调节点,用以保证上述方法在实际中的实现及应用。

为了解决上述问题,本申请公开了一种事务处理方法,应用于计算机事务处理系统中的任意一个事务参与节点中,所述计算机事务处理系统包括至少一个事务参与节点和与所述事务参与节点相连的事务协调节点;该方法包括:

响应于当前触发的全局事务处理请求,当前事务参与节点向所述事务协调节点发送创建全局事务的通知;

响应于接收所述事务协调节点返回的全局事务标识和本地事务标识,当前事务参与节点在该全局事务中依据本地事务标识执行自身的本地事务;其中,所述全局事务标识用于在所述计算机事务处理系统中唯一标识一个全局事务,所述本地事务为所述全局事务分布在各个事务参与节点中的本地分支;

在所述当前事务参与节点的本地事务执行完毕的情况下,向与所述当前事务参与节点相连的数据库提交本地事务,并将所述全局事务标识发送至与所述当前事务参与节点相连的其他事务参与节点,以便所述其他事务参与节点在所述全局事务中执行自身的本地事务。

本申请还提供了一种事务处理方法,应用于计算机事务处理系统中的事务协调节点中,所述计算机事务处理系统包括事务协调节点和与所述事务协调节点相连的至少一个事务参与节点;该方法包括:

响应于当前事务参与节点发送的创建全局事务的通知,创建一个全局事务标识和本地事务标识,所述全局事务标识用于在所述计算机事务处理系统中唯一标识一个全局事务;

将所述全局事务标识和所述当前事务参与节点的本地事务标识返回给所述当前事务参与节点,以触发所述当前事务参与节点在该全局事务中依据本地事务标识执行自身的本地事务;其中,所述本地事务为所述全局事务分布在各个事务参与节点中的本地分支;

响应于位于全局事务的执行顺序的最后一个事务参与节点提交全局事务,确认所述全局事务执行完毕。

本申请公开了一种事务参与节点,所述事务参与节点位于计算机事务处理系统中,所述计算机事务处理系统包括至少一个事务参与节点和与所述事务参与节点相连的事务协调节点;所述事务参与节点包括:

发送通知模块,用于响应于当前触发的全局事务处理请求,当前事务参与节点向所述事务协调节点发送创建全局事务的通知;

执行事务模块,用于响应于接收所述事务协调节点返回的全局事务标识和本地事务标识,当前事务参与节点在该全局事务中依据所述本地事务标识执行自身的本地事务;其中,所述全局事务标识用于在所述计算机事务处理系统中唯一标识一个全局事务,所述本地事务为所述全局事务分布在各个事务参与节点中的本地分支;

提交事务模块,用于在所述当前事务参与节点的本地事务执行完毕的情况下,向与所述当前事务参与节点相连的数据库提交本地事务;

发送标识模块,用于将所述全局事务标识发送至与所述当前事务参与节点相连的其他事务参与节点,以便所述其他事务参与节点在所述全局事务中执行自身的本地事务。

本申请公开了一种事务协调节点,所述事务协调节点位于计算机事务处理系统中,所述计算机事务处理系统包括事务协调节点和与所述事务协调节点相连的至少一个事务参与节点;所述事务协调节点包括:

创建标识模块,用于响应于当前事务参与节点发送的创建全局事务的通知,创建一个全局事务标识和本地事务标识,所述全局事务标识用于在所述计算机事务处理系统中唯一标识一个全局事务;

返回标识模块,用于将所述全局事务标识和本地事务标识返回给所述当前事务参与节点,以触发所述当前事务参与节点在该全局事务中依据所述本地事务标识执行自身的本地事务;其中,所述本地事务为所述全局事务分布在各个事务参与节点中的本地分支;

确认模块,用于响应于位于全局事务的执行顺序的最后一个事务参与节点提交全局事务,确认所述全局事务执行完毕。

与现有技术相比,本申请包括以下优点:

在本申请实施例中,对于任意一个事务参与节点,在其本地事务已经执行完毕的情况下,就直接向数据库提交本地事务,在该事务参与节点提交本地事务之后,其在处理本地事务时所占用的系统资源就已经被释放,从而可以使那部分被占用的系统资源可以为其他事务所用,从而节约了系统资源。进一步的,各个事务参与节点之间会传递全局事务标识,并且,各个事务参与节点可以保存执行本地事务的前镜像和后镜像,也因此,即便各个事务参与节点出现宕机或者事务执行失败的情况,还是可以根据前镜像和后镜像来进行回滚或恢复,从而保证了事务的正常处理。

当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请的事务处理方法实施例1的流程图;

图2是本申请的方法实施例在实际应用中场景架构图;

图3是本申请的事务处理方法实施例2的流程图;

图4是本申请的事务参与节点实施例的结构示意图;

图5是本申请的事务协调节点实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

参考图1,示出了本申请的事务处理方法实施例1的流程图,本实施例可以应用于计算机事务处理系统中的任意一个事务参与节点上,所述计算事务处理系统可以包括至少一个事务参与节点和与所述事务参与节点相连的事务协调节点;本实施例可以包括以下步骤:

步骤101:响应于当前触发的全局事务处理请求,当前事务参与节点向所述事务协调节点发送创建全局事务的通知。

参考图2所示,为本申请的事务处理方法的应用场景的架构图。其中,事务参与节点有一个或多个,事务协调者也可以有一个或多个,但是一个事务协调者一般对应一个全局事务中的多个事务参与节点。例如图2所示,事务参与节点A、B、C和D为一个全局事务的四个事务参与者,而与这四个事务参与节点相连的事务协调节点A则是该全局事务中的事务协调者。而数据库A和数据库B则可以与事务参与节点1相连接,以供事务参与节点能够将事务执行过程中产生的数据存储至数据库中。

以当前事务参与节点为图2中的事务参与节点1为例,如果当前被用户或者其他应用程序等触发了一个全局事务处理请求,则,当前事务参与节点向与其相连的事务协调节点1发送一个创建全局事务的通知。该全局事务可以为:在事务协调节点1和与该事务协调节点1相连的其他事务参与节点共同实现的一个分布式事务。例如,一个全局事务可以包括:分别实现任务A、任务B和任务C,其中,任务A可以例如读取数据库A的第3行,任务B可以为更新数据库B中的用户姓名,而任务C可以为在数据库A中新增一个年龄字段,等等。

步骤102:响应于接收所述事务协调节点返回的全局事务标识和所述当前事务参与节点的本地事务标识,当前事务参与节点在该全局事务中依据所述本地事务标识执行自身的本地事务;其中,全局事务标识用于在所述计算机事务处理系统中唯一标识一个全局事务,本地事务为所述全局事务分布在各个事务参与节点中的本地分支。

可以理解的是,在本实施例中,事务协调节点在接收到当前事务参与节点发送的通知之后,会创建一个全局事务标识(XID,Transaction ID)。其中,该全局事务标识可以由事务协调节点的IP(网络之间互连的协议,Internet Protocol)地址、事务协调节点的端口号和事务协调节点为当前事务分配的一个事务序号组成。其中,事务序号可以按照全局事务的发起顺序来随机生成,例如,可以为:1、2、3……等等。此外,因为分布式事务涉及多个事务参与节点,因此,事务协调节点还会为当前事务参与节点分配在其创建的全局事务下的一个事务分支,该事务分支由该当前事务参与节点执行。而本地事务标识可以区分各个事务参与节点之间的事务分支。

在本步骤中,当前事务参与节点在接收到事务协调节点返回的全局事务标识和自己的本地事务标识后,在该全局事务标识表示的全局事务中,执行该本地事务标识表示的本地事务。例如,更新数据库A中的用户的姓名。

其中,当前事务参与节点执行自身的本地事务之前,还可以包括:

步骤A1:所述当前事务参与节点在所述数据库中保存第一镜像,所述第一镜像为所述当前事务参与节点在执行自身的本地事务前的初始事务数据。

在实际应用中,即便当前事务参与节点的本地事务执行成功,可是还存在同一个全局事务下其他事务参与节点执行本地事务不成功的情况,在这种情况下,当前事务参与节点就需要对执行成功的本地事务进行回滚。为了回滚方便(即将数据库中的数据恢复至未执行事务之前的状态),在当前事务参与节点执行自身的本地事务之前,当前事务参与节点首先将执行自身的本地事务前的初始事务数据在数据库中保存下来,即第一镜像。例如,如果执行本地事务为“将数据库A中的用户姓名张三修改为李四”,那么第一镜像就可以为未修改之前的用户姓名“张三”。

相应的,在所述当前事务参与节点执行自身的本地事务之后,还可以包括:

步骤A2:所述当前事务参与节点在所述数据库中保存第二镜像,所述第二镜像为所述当前事务参与节点在执行自身的本地事务后的更新事务数据。

同样的,在当前事务参与节点执行自身的本地事务之后,当前事务参与节点再将执行本地事务之后的更新事务数据也保存至数据库中。例如,修改了用户姓名之后的“李四”。

步骤103:在所述当前事务参与节点的本地事务执行完毕的情况下,向与所述当前事务参与节点相连的数据库提交本地事务,并将所述全局事务标识发送至与其相连的其他事务参与节点,以便所述其他事务参与节点在所述全局事务中执行自身的本地事务。

在当前事务参与节点的本地事务执行完毕的情况下,当前事务参与节点在与其相连的数据库中提交本地事务,例如,在数据库中确定用户姓名“李四”的修改,当前事务参与节点再将全局事务标识发送至与其相连的其他事务参与节点,以便其他事务参与节点依据全局事务标识向事务协调节点请求自己的本地事务标识,并根据自己的本地事务标识在所述全局事务中执行本地事务。其中,其他事务参与节点指的是:都需要执行该全局事务中某一个事务分支的那些事务参与节点。以图2为例,当前事务参与节点A会将全局事务标识发送至事务参与节点B,事务参与节点B可以将全局事务标识告知事务协调节点,由事务协调节点将事务参与节点B的本地事务标识返回,以便事务参与节点B也在该全局事务中执行自身的本地事务。

其中,可以理解的是,各个其他事务参与节点执行本地事务的流程和当前事务参与节点是相同的,都可以包括:执行本地事务,提交本地事务,保存本地的第一镜像和第二镜像,以及,向其他事务参与节点发送全局事务标识和本地事务标识,等等。

在实际应用中,针对一个全局事务中的多个事务参与节点,有可能存在事务参与节点A执行本地事务成功,而事务参与节点B执行本地事务不成功的情况,在这种情况下,事务参与节点B就无法在数据库中正常提交本地事务,事务参与节点B会向事务协调节点发送事务执行不成功的通知,以便事务协调节点向事务参与节点A发送回滚命令,则在本实施例还可以包括:

步骤A3:依据所述第一镜像和第二镜像对所述当前事务参与节点执行的自身的本地事务进行回滚。

当前事务参与节点在接收到事务协调节点发送的回滚命令之后,可以依据之前在数据库中保存的第一镜像和第二镜像,来对自己已经执行成功的本地事务进行回滚。例如,再将数据库A中用户姓名从“李四”修改为“张三”。

可见,在本申请实施例中,对于任意一个事务参与节点,在其本地事务已经执行完毕的情况下,就直接向数据库提交本地事务,在该事务参与节点提交本地事务之后,其在处理本地事务时所占用的系统资源就已经被释放,从而可以使那部分被占用的系统资源可以为其他事务所用,从而节约了系统资源。进一步的,各个事务参与节点之间会传递全局事务标识,并且,各个事务参与节点可以保存执行本地事务的前镜像和后镜像,也因此,即便各个事务参与节点出现宕机或者事务执行失败的情况,还是可以根据前镜像和后镜像来进行回滚或恢复,从而保证了事务的正常处理。

参考图3,示出了本申请的事务处理方法实施例2的流程图,本实施例可以应用于计算机事务处理系统中的任意一个事务协调节点上,所述事务处理系统包括事务协调节点和与所述事务协调节点相连的至少一个事务参与节点;本实施例可以包括以下步骤:

步骤301:响应于当前事务参与节点发送的创建全局事务的通知,创建一个全局事务标识和当前事务参与节点的本地事务标识,所述全局事务标识用于在所述计算机事务处理系统中唯一标识一个全局事务,所述本地事务标识用于区分所述全局事务分布在各个事务参与节点上的本地事务。

本实施例与实施例1的区别之处在于,本实施例的执行主体为事务协调节点,至于步骤的实现过程与实施例1并无实质区别,在此不再赘述。

步骤302:将所述全局事务标识和当前事务参与节点的本地事务标识返回给所述当前事务参与节点,以触发所述当前事务参与节点在所述全局事务中依据本地事务标识执行自身的本地事务。

其中,所述本地事务为所述全局事务分布在各个事务参与节点中的本地分支。

步骤303:响应于位于全局事务的执行顺序的最后一个事务参与节点提交全局事务,确认所述全局事务执行完毕。

在本实施例中,假设全局事务的执行涉及如图2所示的4个事务参与节点,而全局事务中各个事务分支的执行顺序分别为:事务参与节点A、事务参与节点B、事务参与节点C和事务参与节点D,那么在事务参与节点D也执行完自身的本地事务之后,不仅会在数据库中提交本地事务,还会向事务协调节点提交全局事务,用以告知事务协调节点该全局事务已经执行完毕。

在各个事务参与节点将各自的第一镜像和第二镜像保存在数据库中的情况下,如果事务协调节点接收到了全局事务中最后一个事务参与节点提交全局事务的通知,那么本实施例还可以包括:

步骤B:事务协调节点通知与所述数据库相连的资源管理器删除各个事务参与节点在数据库中存储的各自的第一镜像和第二镜像。

其中,所述第一镜像可以为各个事务参与节点在执行自身的本地事务之前的初始事务数据;所述第二镜像可以为所述各个事务参与节点在执行自身的本地事务之后的更新事务数据。在本步骤中,如果全局事务已经提交成功了,事务协调节点还可以向与数据库相连的资源管理器发送通知消息,通知资源管理器在数据库中删除该全局事务涉及的各个事务参与节点存储的各自的第一镜像和第二镜像。

相应的,如果全局事务中的某个事务分支没有执行成功,而事务参与节点又关机的情况下,本实施例还可以包括:

步骤C:通知与所述数据库相连的资源管理器依据数据库中保存的、各个事务参与节点存储的第一镜像和第二镜像,对所述全局事务的各个事务分支进行回滚。

可以理解的是,在本实施例中的资源管理器只需要与数据库连接即可,无需与事务参与节点也连接。在一个事务处理系统中,可以有多个资源管理器,每个资源管理器都可以从数据库中获取到各个事务参与节点存储的第一镜像和第二镜像,从而即便在事务参与节点关机或者出现异常的情况下,也能依据第一镜像和第二镜像对各个事务参与节点的本地事务分支执行回滚操作。

可见,在本申请实施例中,事务协调节点会创建一个全局事务标识发送给发起事务的那个事务参与节点,各个事务参与节点在其本地事务已经执行完毕的情况下,就直接向数据库提交本地事务,在该事务参与节点提交本地事务之后,其在处理本地事务时所占用的系统资源就已经被释放,从而可以使那部分被占用的系统资源可以为其他事务所用,从而节约了系统资源。进一步的,各个事务参与节点之间会传递事务协调节点创建的全局事务标识,并且,各个事务参与节点可以保存执行本地事务的前镜像和后镜像,也因此,即便各个事务参与节点出现宕机或者事务执行失败的情况,事务协调节点也可以通知事务参与节点或者资源管理器根据前镜像和后镜像进行回滚或恢复,从而保证了事务的正常处理。

为了方便本领域技术人员对本申请在实际应用中的实现过程的理解,下面介绍一个具体的例子。在本例子中,以四个事务参与节点和一个事务协调节点参与执行一个分布式全局事务为例。

步骤D1:响应于当前触发的全局事务处理请求,事务参与节点A向事务协调节点A发送创建全局事务的通知。

假设在本例子中,参考图2所示,事务参与节点A与事务参与节点B相连,而事务参与节点B与事务参与节点C相连,事务参与节点C又与事务参与节点D相连,这四个事务参与节点都与事务协调节点A相连,并且这四个事务参与节点都与数据库A相连。

步骤D2:事务协调节点A创建一个全局事务标识和事务参与节点A的本地事务标识,并发送给事务参与节点A。

步骤D3:事务参与节点A开始执行本地事务,首先在数据库A中保存第一镜像。

步骤D4:事务参与节点A在全局事务中依据本地事务标识执行自身的本地事务。

步骤D5:事务参与节点A在本地事务执行成功之后,在数据库A中保存第二镜像。

步骤D6:事务参与节点A在数据库A中提交本地事务。

步骤D7:事务参与节点A将全局事务标识发送至与事务参与节点B,事务参与节点B再将全局事务标识发给事务协调节点,以便事务协调节点返回事务参与节点B的本地事务标识,事务参与节点B再在该全局事务中依据自己的本地事务标识执行自身的本地事务,并分别保存第一镜像和第二镜像。

步骤D8:事务参与节点B在数据库中提交本地事务后,将全局事务标识发送至事务参与节点C。

步骤D9:事务参与节点C再将全局事务标识发给事务协调节点,以便事务协调节点返回事务参与节点C的本地事务标识,事务参与节点C再在该全局事务中执行自身的本地事务,并分别保存第一镜像和第二镜像,最后在数据库中提交本地事务后,将全局事务标识发送至事务参与节点D。

步骤D10:事务参与节点D再将全局事务标识发给事务协调节点,以便事务协调节点返回事务参与节点D的本地事务标识,事务参与节点D再在在该全局事务中执行自身的本地事务,并分别保存第一镜像和第二镜像,最后在数据库中提交本地事务后,再向事务协调节点提交全局事务。

步骤D11:响应于事务参与节点D提交全局事务,事务协调节点A确认所述全局事务执行完毕。

步骤D12:事务协调节点A通知与所述数据库A相连的资源管理器删除事务参与节点A、B、C和D在数据库A中存储的各自的第一镜像和第二镜像。

其中,本例子介绍的为四个事务参与节点A、B、C和D的本地事务都提交成功的情况,而对于某个事务参与节点的本地事务执行不成功的情况,例如,假设事务参与节点D的本地事务执行不成功,则事务参与节点D会向事务协调节点A发送通知消息,事务协调节点A再分别向事务参与节点A、B和C发送回滚命令,以触发事务参与节点A、B和C对各自执行的本地事务进行回滚。或者,事务协调节点A也可以向与数据库A相连的资源管理器发送回滚命令,以触发资源管理依据数据库A中存储的第一镜像和第二镜像,来对事务参与节点A、B和C各自执行的本地事务进行回滚。

对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

与上述本申请一种事务处理方法实施例1所提供的方法相对应,参见图4,本申请还提供了一种事务参与节点实施例,在本实施例中,所述事务参与节点位于计算机事务处理系统中,所述计算机事务处理系统可以包括至少一个事务参与节点和与所述事务参与节点相连的事务协调节点;所述事务参与节点包括:

发送通知模块401,用于响应于当前触发的全局事务处理请求,当前事务参与节点向所述事务协调节点发送创建全局事务的通知。

执行事务模块402,用于响应于接收所述事务协调节点返回的全局事务标识和所述当前事务参与节点的本地事务标识,当前事务参与节点在该全局事务中依据所述本地事务标识执行自身的本地事务;其中,所述全局事务标识用于在所述计算机事务处理系统中唯一标识一个全局事务,所述本地事务标识用于区分所述全局事务分布在各个事务参与节点中的本地分支。

提交事务模块403,用于在所述当前事务参与节点的本地事务执行完毕的情况下,向与所述当前事务参与节点相连的数据库提交本地事务。

发送标识模块404,用于将所述全局事务标识发送至与所述当前事务参与节点相连的其他事务参与节点,以便所述其他事务参与节点在所述全局事务中执行自身的本地事务。

在实际应用中,该事务参与节点还可以包括:

第一保存模块,用于在所述数据库中保存第一镜像,所述第一镜像为所述当前事务参与节点在执行自身的本地事务前的初始事务数据;以及,第二保存模块,用于在所述数据库中保存第二镜像,所述第二镜像为所述当前事务参与节点在执行自身的本地事务后的更新事务数据。

在实际应用中,该事务参与节点还可以包括:

回滚模块,用于依据所述第一镜像和第二镜像对所述当前事务参与节点执行的自身的本地事务进行回滚。

可见,在本申请实施例中,对于任意一个事务参与节点,在其本地事务已经执行完毕的情况下,就直接向数据库提交本地事务,在该事务参与节点提交本地事务之后,其在处理本地事务时所占用的系统资源就已经被释放,从而可以使那部分被占用的系统资源可以为其他事务所用,从而节约了系统资源。进一步的,各个事务参与节点之间会传递全局事务标识,并且,各个事务参与节点可以保存执行本地事务的前镜像和后镜像,也因此,即便各个事务参与节点出现宕机或者事务执行失败的情况,还是可以根据前镜像和后镜像来进行回滚或恢复,从而保证了事务的正常处理。

与上述本申请一种事务处理方法实施例所提供的方法相对应,参见图5,本申请还提供了一种事务协调节点实施例,在本实施例中,事务协调节点位于计算机事务处理系统中,所述计算机事务处理系统包括事务协调节点和与所述事务协调节点相连的至少一个事务参与节点;所述事务协调节点包括:

创建标识模块501,用于响应于当前事务参与节点发送的创建全局事务的通知,创建一个全局事务标识和所述当前事务参与节点的本地事务标识,所述全局事务标识用于在所述事务处理系统中唯一标识一个全局事务。

返回标识模块502,用于将所述全局事务标识和所述当前事务参与节点的本地事务标识返回给所述当前事务参与节点,以触发所述当前事务参与节点在该全局事务中依据自身的本地事务标识执行自身的本地事务;其中,所述本地事务为所述全局事务分布在各个事务参与节点中的本地分支。

确认模块503,用于响应于位于全局事务的执行顺序的最后一个事务参与节点提交全局事务,确认所述全局事务执行完毕。

在实际应用中,在各个事务参与节点将各自的第一镜像和第二镜像保存在数据库中的情况下,该事务协调节点还可以包括:

通知模块,用于通知与所述数据库相连的资源管理器删除各个事务参与节点在数据库中存储的各自的第一镜像和第二镜像;其中,所述第一镜像为各个事务参与节点在执行自身的本地事务之前的初始事务数据;所述第二镜像为所述各个事务参与节点在执行自身的本地事务之后的更新事务数据。

可见,在本申请实施例中,事务协调节点会创建一个全局事务标识发送给发起事务的那个事务参与节点,各个事务参与节点在其本地事务已经执行完毕的情况下,就直接向数据库提交本地事务,在该事务参与节点提交本地事务之后,其在处理本地事务时所占用的系统资源就已经被释放,从而可以使那部分被占用的系统资源可以为其他事务所用,从而节约了系统资源。进一步的,各个事务参与节点之间会传递事务协调节点创建的全局事务标识,并且,各个事务参与节点可以保存执行本地事务的前镜像和后镜像,也因此,即便各个事务参与节点出现宕机或者事务执行失败的情况,事务协调节点也可以通知事务参与节点或者资源管理器根据前镜像和后镜像进行回滚或恢复,从而保证了事务的正常处理。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的事务处理方法、事务参与节点和事务协调节点进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号