CN102347986B - 多事务同步协作管理方法、系统及其装置 - Google Patents
多事务同步协作管理方法、系统及其装置 Download PDFInfo
- Publication number
- CN102347986B CN102347986B CN201110315216.3A CN201110315216A CN102347986B CN 102347986 B CN102347986 B CN 102347986B CN 201110315216 A CN201110315216 A CN 201110315216A CN 102347986 B CN102347986 B CN 102347986B
- Authority
- CN
- China
- Prior art keywords
- affairs
- local matter
- transaction
- remote
- management server
- 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
- Computer And Data Communications (AREA)
Abstract
本发明提出了一种多事务同步协作管理方法、系统及其装置。该方法包括:建立本地事务;向一个或多个远程协同事务管理服务器发送事务开启指令,其中,所述事务开始指令之中包括全局事务标识;一个或多个远程协同事务管理服务器根据所述事务开启指令建立远程协同事务,且远程协同事务具有全局事务标识,其中,所述本地事务管理服务器根据所述全局事务标识对所述远程协同事务进行同步协作管理。本发明可以在本地事务管理服务器和一个或多个远程协同事务管理服务器之间进行统一的同步协作管理。
Description
技术领域
本发明涉及互联网技术领域,特别地涉及一种多事务同步协作管理方法、系统及其装置。
背景技术
事务管理在应用程序中起着至关重要的作用。它是一系列任务的组成工作单元,在这个工作单元中,所有的任务必须同时执行。它们只有二种可能执行结果,要么所有任务全部执行成功,要么所有任务全部执行失败。在SpringFramework中提供了丰富的事务管理功能。Spring Framework是一种基于动态代理的AOP(Aspect Oriented Programming,面向切面编程)框架,其中动态代理来自于代理设计模式。
然而,现有技术的缺点是,多个Spring Framework实例上事务不能够实现同步协作管理,例如事务的统一提交等,从而导致无法满足目前商业灵活应用的需求。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一,特别是解决目前事务不能实现同步协作管理的缺陷。
本发明实施例第一方面提出了一种多事务同步协作管理方法,包括以下步骤:本地事务管理服务器建立本地事务;所述本地事务管理服务器向一个或多个远程协同事务管理服务器发送事务开启指令,其中,所述事务开始指令之中包括全局事务标识;以及所述一个或多个远程协同事务管理服务器根据所述事务开启指令建立远程协同事务,且所述远程协同事务具有所述全局事务标识,其中,所述本地事务管理服务器根据所述全局事务标识对所述远程协同事务进行同步协作管理。
在本发明的一个实施例中,所述本地事务管理服务器中设置有远程方法调用RMI客户端,所述一个或多个远程协同事务管理服务器中均设置有RMI服务器端,所述本地事务管理服务器通过所述RMI客户端向所述一个或多个远程协同事务管理服务器的RMI服务器端发送事务远程控制指令。
通过本发明第一方面实施例提出的方法,可以在本地事务管理服务器和一个或多个远程协同事务管理服务器之间进行统一的同步协作管理,这样本地事务管理服务器就可以接管一个或多个远程协同事务管理服务器中的远程协同事务(与全局事务标识相对应的远程协同事务),在本地事务管理服务器对本地事务进行操作的同时,根据设置的全局事务标识可以对其他一个或多个远程协同事务管理服务器中对应的远程协同事务进行管理,例如控制这些对应的远程协同事务与该本地事务同时递交,或者同时进行回滚操作等。在本发明的优选实施例中,本地事务管理服务器和一个或多个远程协同事务管理服务器之间是通过RMI的方式进行远程控制指令的传递,本发明实施例通过RMI技术可实现SpringFramework事务的同步及协调管理。
本发明实施例第二方面还提出了一种多事务同步协作管理系统,包括本地事务管理服务器和与所述本地事务管理服务器相互通信的一个或多个远程协同事务管理服务器:所述本地事务管理服务器用于建立本地事务,并向所述一个或多个远程协同事务管理服务器发送事务开启指令,其中,所述事务开始指令之中包括全局事务标识;所述一个或多个远程协同事务管理服务器用于根据所述本地事务管理服务器发送的事务开启指令建立远程协同事务,且所述远程协同事务具有所述全局事务标识,其中,所述本地事务管理服务器根据所述全局事务标识对所述远程协同事务进行同步协作管理。
在本发明的一个实施例中,所述本地事务管理服务器具有RMI客户端,所述一个或多个远程协同事务管理服务器具有RMI服务器端,所述本地事务管理服务器通过所述RMI客户端向所述一个或多个远程协同事务管理服务器的RMI服务器端发送事务远程控制指令。
通过本发明第二方面实施例提出的系统,本地事务管理服务器和一个或多个远程协同事务管理服务器之间可以进行统一的同步协作管理,这样本地事务管理服务器就可以接管一个或多个远程协同事务管理服务器中的远程协同事务(与全局事务标识相对应的远程协同事务)。在本地事务管理服务器对本地事务进行操作的同时,本地事务管理服务器能够根据设置的全局事务标识可以对其他一个或多个远程协同事务管理服务器中对应的远程协同事务进行管理,例如控制这些对应的远程协同事务与该本地事务同时递交,或者同时进行回滚操作等。在本发明的优选实施例中,本地事务管理服务器和一个或多个远程协同事务管理服务器之间是通过RMI的方式进行远程控制指令的传递,本发明实施例通过RMI技术可实现SpringFramework事务的同步及协调管理。
本发明实施例第三方面还提出了一种本地事务管理服务器,包括:建立模块,用于建立本地事务;以及指令生成及发送模块,用于根据所述本地事务的操作生成事务远程控制指令,其中,所述事务开始指令之中包括全局事务标识,并根据所述全局事务标识向所述一个或多个远程协同事务管理服务器发送控制相应远程协同事务的远程控制指令,所述一个或多个远程协同事务管理服务器根据所述远程控制指令及所述全局事务标识对对应的远程协同事务进行操作。
本发明实施例的第四方面还提出了一种远程协同事务管理服务器,包括:接收模块,用于接收本地事务管理服务器发送的远程控制指令;解析模块,用于从所述远程控制指令中获得对应的全局事务标识;以及控制模块,用于根据所述全局事务标识及所述远程控制指令创建远程协同事务或对已有的远程协同事务进行控制。
通过本发明实施例的上述本地事务管理服务器及远程协同事务管理服务器,可以实现统一的同步协作管理,这样本地事务管理服务器就可以接管一个或多个远程协同事务管理服务器中的远程协同事务(与全局事务标识相对应的远程协同事务)。在本地事务管理服务器对本地事务进行操作的同时,本地事务管理服务器能够根据设置的全局事务标识可以对其他一个或多个远程协同事务管理服务器中对应的远程协同事务进行管理,例如控制这些对应的远程协同事务与该本地事务同时递交,或者同时进行回滚操作等。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的多事务同步协作管理方法流程图;
图2为本发明实施例通过RMI方式发送远程控制指令的流程图;
图3为本发明实施例的横向协同事务管理示意图;
图4为本发明实施例的纵向协同事务管理示意图;
图5为本发明实施例的多事务同步协作管理系统结构图;和
图6为本发明实施例的远程协同事务管理服务器结构图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
如图1所示,为本发明实施例的多事务同步协作管理方法流程图。需要说明的是,在该实施例中所述的事务为在JVM(Java Virtual Machine,Java虚拟机)之上的SpringFramework事务,当然在本发明的其他实施例中也可为其他类型的事务。此外,在该实施例中包括本地事务管理服务器和一个或多个远程协同事务管理服务器,当然还可包括另外一些远程协同事务管理服务器(在本发明的实施例中将其称为下一级的远程协同事务管理服务器),这些远程协同事务管理服务器与上述一个或多个远程协同事务管理服务器相互通信,从而构成纵向协同事务管理(在后续的实施例中将对此进行详细描述)。另外还需要说明的是,在实际的应用中一个事务管理服务器即可能是本地事务管理服务器,也可能是远程协同事务管理服务器,其针对事务的不同而有所变化。例如以工商银行的事务管理服务器举例来说,如果建设银行的用户从工商银行取钱,则工商银行的事务管理服务器就是本地事务管理服务器,此时建设银行的事务管理服务器就是远程协同事务管理服务器;反之,如果工商银行的用户从建设银行取钱,则建设银行的事务管理服务器就是本地事务管理服务器,而工商银行的事务管理服务器就是远程协同事务管理服务器。以上仅是举例描述,在实际的事务应用中,应用场景更为复杂,但均可采用本发明实施例的方法。具体地,该方法包括以下步骤:
步骤S101,本地事务管理服务器建立本地事务。在本发明的一个实施例中,本地事务管理服务器中可仅运行一个本地事务。在本发明通常的实施例中,本地事务管理服务器中运行有多个线程和多个本地事务,且每个本地事务均与一个线程相对应,即在一个线程之内仅保持有一个本地事务。在本发明实施例的实际应用之中在本地事务管理服务器之中可运行有多个事务,其中,多个事务中的一些需要与远程协同事务管理服务器之中的远程协同事务进行同步协同管理,在此将这些事务称之为本地事务。在本发明的实施例中,所谓的“同步协同管理”是指本地事务与远程协同事务之间同步地操作,或者按照预设的顺序进行操作,在之后的实施例中将结合横向协同事务管理及纵向协同事务管理进行详细地介绍。
步骤S102,本地事务管理服务器向一个或多个远程协同事务管理服务器发送事务开启指令,其中,该事务开始指令之中包括全局事务标识。在本发明的实施例中,如果本地事务管理服务器中运行有多个线程,则每个线程对应有独立的全局事务标识。这样本地事务管理法服务器就可根据线程号来确定全局事务标识。在本发明的一个实施例中,该全局事务标识可为一个唯一的UUID(Universally Unique Identifier,通用唯一识别码)串。其中,UUID是一个软件建构的标准,也是被开源软件基金会(Open Software Foundation,OSF)的组织在分布式计算环境(Distributed Computing Environment,DCE)领域的一部份。由于UUID为本领域已知的技术,因此在此不再赘述。在本发明的实施例中,全局事务标识是标记事务协同操作的唯一ID,在一次协同事务处理过程之中,全局事务标识都只有一个且唯一。因此,事务的远程控制指令(也可称为协同处理命令)都需要通过这个全局事务标记发起,从而一个或多个远程协同事务管理服务器才能够获知本地事务管理服务器想要对其上的哪个事务进行操作。
在该实施例中,事务开启指令可通过多种方式发送。优选地,通过RMI(Remote Method Invocation,远程方法调用)发送事务开启指令。在以下的实施例中将对如何通过RMI发送事务开启指令及其他远程控制指令,例如事务提交指令和事务回滚指令等,以及全局事务标识的选择及添加等,进行详细描述。
步骤S103,一个或多个远程协同事务管理服务器根据事务开启指令建立远程协同事务,且远程协同事务具有对应的全局事务标识。一个或多个远程协同事务管理服务器在收到本地事务管理服务器发送的事务开启指令之后,根据事务开启指令之中的信息建立相应的事务(在此将其称为远程协同事务),将该远程协同事务与事务开启指令之中的全局事务标识相关联。这样一个或多个远程协同事务管理服务器之后如果再收到本地事务管理服务器的远程控制指令的话,就可以根据远程控制指令之中的全局事务标识获知该远程控制指令是想要对哪个事务进行操作。
步骤S104,在本地事务管理服务器对本地事务进行操作时,例如事务提交操作或回滚操作等,本地事务管理服务器根据全局事务标识向一个或多个远程协同事务管理服务器发送控制相应远程协同事务的远程控制指令,以对本地事务与一个或多个远程协同事务管理服务器中的远程协同事务进行同步协作管理。在本发明的一个实施例中,本地事务管理服务器和一个或多个远程协同事务管理服务器之间是通过RMI的方式进行远程控制指令的传递。进一步地,本地事务管理服务器中设置有远程方法调用RMI客户端,一个或多个远程协同事务管理服务器中均设置有RMI服务器端,本地事务管理服务器通过RMI客户端向一个或多个远程协同事务管理服务器的RMI服务器端发送事务远程控制指令。如上所述的对于一个事务管理服务器来说,其可能既是本地事务管理服务器,也是远程协同事务管理服务器,因此该事务管理服务器既包括RMI客户端,也包括RMI服务器端。需要说明的是,在该步骤中优选地,可在本地事务操作之前的预设时间发送远程控制指令,从而可以使得本地事务及远程协同事务可同步进行操作,例如同步提交等。该预设时间需要根据本地事务管理服务器与远程协同事务管理服务器之间的通信时间等因素设定。在该实施例中,同时仅是相对的概念,只要在可容忍的误差范围内保证本地事务与远程协同事务递交即可。在本发明的其他实施例中,该远程控制指令中还可以包括提交时间,这样本地事务管理服务器和远程协同事务管理服务器就可在该提交时间同时提交本地事务和远程协同事务。具体地,如图2所示,为本发明实施例通过RMI方式发送远程控制指令的流程图,进一步包括以下步骤:
步骤S201,在本地事务管理服务器对本地事务进行操作时,例如事务提交操作或回滚操作等,本地事务管理服务器生成事务远程控制指令,并将所述事务远程控制指令发送至RMI客户端。
步骤S202,在RMI客户端的调用接口对携带事务远程控制指令的RMI消息包进行拦截。在本发明的一个实施例中,如果为SpringFramework事务,则可扩展SpringFramework的声明式事务拦截类TransactionInterceptor,对每次事务的处理过程中,事务开启指令“createTransactionIfNecessary”,事务提交指令“commitTransactionAfterReturning”,以及事务回滚指令“completeTransactionAfterThrowing”进行扩展以确定事务的执行状态(分为开始,提交或回滚三个状态),并且将事务的执行状态保存到线程的ThreadLocal对象中。因此本发明实施例基于上述扩展可对RMI消息包进行拦截,具体拦截的方式可为侵入式拦截或非侵入式拦截。例如利用SpringFramework的AOP(Aspect Oriented Programming,面向界面编程)技术对每次事务的处理过程中所有涉及RMI操作的指令进行拦截,并对RMI消息包进行扩展。
步骤S203,根据事务远程控制指令的类型及本地事务所对应的线程确定全局事务标识。具体地,如果该事务远程控制指令为事务开启指令,则根据该本地事务所对应的线程号设定全局事务标识,或者,直接为该本地事务分配一个唯一的全局事务标识,并将该全局事务标识与该本地事务对应的线程号相关联。如果该事务远程控制指令为事务提交指令或事务回滚指令等,则说明该本地事务已有对应的全局事务标识,此时本地事务管理服务器将根据该本地事务所对应的线程确定相应的全局事务标识。
步骤S204,将全局事务标识添加至RMI消息包中并向一个或多个远程协同事务管理服务器的RMI服务器端发送。在本发明的一个实施例中,可通过动态织入的方式将上述步骤所确定的全局事务标识添加至RMI消息包中。至此,该RMI消息包中不仅包含有远程控制指令,还包含有全局事务标识。
步骤S105,一个或多个远程协同事务管理服务器根据本地事务管理服务器发送的远程控制指令对远程协同事务进行控制。具体地,如果本地事务管理服务器与一个或多个远程协同事务管理服务器之间通过RMI的方式进行通信,则一个或多个远程协同事务管理服务器首先解析RMI数据包以获得全局事务标识。接着一个或多个远程协同事务管理服务器根据该全局事务标识确定其上的远程协同事务,最后根据该RMI数据包之中的远程控制指令对该远程协同事务进行操作,例如提交操作或回滚操作等。通常地,在本发明的实施例中,远程协同事务管理服务器中也运行有多个事务,其中部分事务为远程协同事务,即根据本地事务管理服务器的事务启动指令所创建,且具有全局事务标识。对于这样的远程协同事务,远程协同事务管理服务器将控制管理权交给本地事务管理服务器,也就是说在没有收到本地事务管理服务器的指令的情况下,远程协同事务管理服务器不对远程协同事务进行操作。因此,本发明就可实现多个SpringFramework事务的同步协作管理。
通过本发明实施例的方法,可以在本地事务管理服务器和一个或多个远程协同事务管理服务器之间进行统一的同步协作管理,这样本地事务管理服务器就可以接管一个或多个远程协同事务管理服务器中的远程协同事务(与全局事务标识相对应的远程协同事务),在本地事务管理服务器对本地事务进行操作的同时,根据设置的全局事务标识可以对其他一个或多个远程协同事务管理服务器中对应的远程协同事务进行管理,例如控制这些对应的远程协同事务与该本地事务同时递交,或者同时进行回滚操作等。在本发明的优选实施例中,本地事务管理服务器和一个或多个远程协同事务管理服务器之间是通过RMI的方式进行远程控制指令的传递,本发明实施例通过RMI技术可实现SpringFramework事务的同步及协调管理。
以下分别对本发明实施例的横向协同事务管理及纵向协同事务管理进行详细介绍。
如图3所示,为本发明实施例的横向协同事务管理示意图。其中,多个远程协同事务管理服务器均与本地事务管理服务器相互通信。横向协同事务管理是针对一个操作过程中,需要协同多个事务管理服务器的事务管理的方式。例如,用户在通过机票提供商用信用卡订购飞机票时,需要向航空公司的服务器请求出票,同时又需要向信用卡银行的服务器请求转账给航空公司,这两个需要同时操作完成后才算是一次完整的事务操作。此时,机票提供商的服务器为本地事务管理服务器,而航空公司及信用卡银行的服务器就为远程事务管理服务器。在该实施例中,本地事务管理服务器需要控制自身的本地事务,航空公司及信用卡银行的远程事务管理服务器的远程事务同时提交。
如图4所示,为本发明实施例的纵向协同事务管理示意图。其中,一个或多个远程协同事务管理服务器在收到本地事务管理服务器发送的远程控制指令之后,还需要进一步将所述远程控制指令转发至下一级的一个或多个远程协同事务管理服务器,以构成纵向协同事务管理。其中,纵向协同事务管理是针对一个操作过程中,需要协同服务器的事务管理的方式时,可能涉及该远程协同事务管理服务器还同时需要协同其它远程协同事务管理服务器(下一级的远程协同事务管理服务器)的事情,从而形成了一个纵向的事务协同扩展。例如,用户在建设银行ATM自动取款机用工商银行卡进行取款时,ATM自动取款机需要远程访问建设银行的服务器请求取款服务时,此时建设银行的服务器会识别该用户的银行账户是工商银行的,这样就需要远程再访问工商银行的服务器请求取款,只有工商银行,建设银行的服务器操作成功后,ATM自动取款机才会向用户提示成功并把所取现金交给用户,整个操作过程就是一个完整的事务。此时,建设银行ATM自动取款机就为本地事务管理服务器,建设银行的服务器就为远程协同事务管理服务器,而工商银行的服务器就为下一级的远程协同事务管理服务器。此时,建设银行服务器中事件的提交需要等待工商银行服务器事件提交的结果,同样ATM自动取款机的事件提交需要等待建设银行服务器中事件的提交结果。
还需要说明的是,在该实施例中上述“转发”应做广义理解,例如远程协同事务管理服务器可将本地事务管理服务器的远程控制指令直接转发给下一级远程协同事务管理服务器,或者,远程协同事务管理服务器也可以对远程控制指令的内容进行转换后发送。
如图5所示,为本发明实施例的多事务同步协作管理系统结构图。该多事务同步协作管理系统包括本地事务管理服务器100和与本地事务管理服务器100相互通信的一个或多个远程协同事务管理服务器200。在本发明的其他实施例中还包括一个或多个下一级的远程协同事务管理服务器300,例如对于纵向协同事务管理的应用。其中,本地事务管理服务器100用于建立本地事务,并向一个或多个远程协同事务管理服务器发送事务开启指令,其中,事务开始指令之中包括全局事务标识,以及在对本地事务进行操作时,根据全局事务标识向一个或多个远程协同事务管理服务器200发送控制相应远程协同事务的远程控制指令。在该实施例中所述的事务为在JVM(Java Virtual Machine,Java虚拟机)之上的SpringFramework事务,当然在本发明的其他实施例中也可为其他类型的事务。
在本发明的一个实施例中,本地事务管理服务器100中可仅运行一个本地事务。但是在本发明通常的实施例中,本地事务管理服务器100中运行有多个线程和多个本地事务,且每个本地事务均与一个线程相对应,即在一个线程之内仅保持有一个本地事务。在本发明实施例的实际应用之中,在本地事务管理服务器100之中可运行有多个事务,其中,多个事务中的一些需要与远程协同事务管理服务器200之中的远程协同事务进行同步协同管理,在此将这些事务称之为本地事务。
在本发明的实施例中,所谓的“同步协同管理”是指本地事务与远程协同事务之间同步地操作,或者按照预设的顺序进行操作。在本发明的实施例中,如果本地事务管理服务器100中运行有多个线程,则每个线程对应有独立的全局事务标识。这样本地事务管理法服务器100就可根据线程号来确定全局事务标识。在本发明的一个实施例中,该全局事务标识可为一个唯一的UUID串。
在本地事务管理服务器100对本地事务进行操作时,例如事务提交操作或回滚操作等,本地事务管理服务器100根据全局事务标识向一个或多个远程协同事务管理服务器200发送控制相应远程协同事务的远程控制指令,以对本地事务与一个或多个远程协同事务管理服务器200中的远程协同事务进行同步协作管理。
其中,一个或多个远程协同事务管理服务器200用于根据本地事务管理服务器100发送的事务开启指令建立远程协同事务,且该远程协同事务具有全局事务标识。一个或多个远程协同事务管理服务器200还用于根据本地事务管理服务器100发送的远程控制指令对远程协同事务进行控制。一个或多个远程协同事务管理服务器200收到本地事务管理服务器100发送的事务开启指令之后,根据事务开启指令之中的信息建立相应的远程协同事务,将该远程协同事务与事务开启指令之中的全局事务标识相关联。这样一个或多个远程协同事务管理服务器200之后如果再收到本地事务管理服务器100的远程控制指令的话,就可以根据远程控制指令之中的全局事务标识获知该远程控制指令是想要对哪个事务进行操作。具体地,如果本地事务管理服务器100与一个或多个远程协同事务管理服务器200之间通过RMI的方式进行通信,则一个或多个远程协同事务管理服务器200首先解析RMI数据包以获得全局事务标识。接着一个或多个远程协同事务管理服务器200根据该全局事务标识确定其上的远程协同事务,最后根据该RMI数据包之中的远程控制指令对该远程协同事务进行操作,例如提交操作或回滚操作等。通常地,在本发明的实施例中,远程协同事务管理服务器200中也运行有多个事务,其中部分事务为远程协同事务,即根据本地事务管理服务器100的事务启动指令所创建,且具有全局事务标识。对于这样的远程协同事务,远程协同事务管理服务器200将控制管理权交给本地事务管理服务器100,也就是说在没有收到本地事务管理服务器100的指令的情况下,远程协同事务管理服务器200不对远程协同事务进行操作。因此,本发明就可实现多个SpringFramework事务的同步协作管理。
在本发明的一个实施例中,本地事务管理服务器100和一个或多个远程协同事务管理服务器200之间是通过RMI的方式进行远程控制指令的传递。进一步地,本地事务管理服务器100具有RMI客户端,一个或多个远程协同事务管理服务器200具有RMI服务器端,本地事务管理服务器100通过RMI客户端向一个或多个远程协同事务管理服务器200的RMI服务器端发送事务远程控制指令。
进一步地,本地事务管理服务器100包括建立模块110和指令生成及发送模块120。建立模块110用于建立本地事务。指令生成及发送模块120用于根据本地事务的操作生成事务远程控制指令,其中,事务开始指令之中包括全局事务标识。且指令生成及发送模块120还用于根据全局事务标识向一个或多个远程协同事务管理服务器200发送控制相应远程协同事务的远程控制指令,一个或多个远程协同事务管理服务器200根据远程控制指令及全局事务标识对对应的远程协同事务进行操作。
更进一步地,指令生成及发送模块120进一步包括RMI客户端子模块121、拦截子模块122、全局事务标识确定子模块123、添加子模块124。其中,RMI客户端子模块121用于接收指令生成模块110生成的事务远程控制指令,例如事务提交操作或回滚操作等,并根据事务远程控制指令生成对应的RMI消息包。在本发明的一个实施例中,拦截子模块122用于在RMI客户端模块121的调用接口对携带事务远程控制指令的RMI消息包进行拦截。在本发明的一个实施例中,如果为SpringFramework事务,则可扩展SpringFramework的声明式事务拦截类TransactionInterceptor,对每次事务的处理过程中,事务开启指令“createTransactionIfNecessary”,事务提交指令“commitTransactionAfterReturning”,以及事务回滚指令“completeTransactionAfterThrowing”进行扩展以确定事务的执行状态(分为开始,提交或回滚三个状态),并且将事务的执行状态保存到线程的ThreadLocal对象中。因此本发明实施例基于上述扩展可对RMI消息包进行拦截,具体拦截的方式可为侵入式拦截或非侵入式拦截。例如利用SpringFramework的AOP(Aspect Oriented Programming,面向界面编程)技术对每次事务的处理过程中所有涉及RMI操作的指令进行拦截,并对RMI消息包进行扩展。
在本发明的一个实施例中,全局事务标识确定子模块123用于根据事务远程控制指令的类型及本地事务所对应的线程确定全局事务标识。具体地,如果该事务远程控制指令为事务开启指令,则根据该本地事务所对应的线程号设定全局事务标识,或者,直接为该本地事务分配一个唯一的全局事务标识,并将该全局事务标识与该本地事务对应的线程号相关联。如果该事务远程控制指令为事务提交指令或事务回滚指令等,则说明该本地事务已有对应的全局事务标识,此时本地事务管理服务器将根据该本地事务所对应的线程确定相应的全局事务标识。
在本发明的一个实施例中,添加子模块124用于将全局事务标识确定模块123确定的全局事务标识添加至RMI消息包中,并通过RMI客户端子模块121向一个或多个远程协同事务管理服务器200的RMI服务器端发送。在本发明的一个实施例中,可通过动态织入的方式将确定的全局事务标识添加至RMI消息包中。至此,该RMI消息包中不仅包含有远程控制指令,还包含有全局事务标识。
在本发明的一个实施例中,多个远程协同事务管理服务器200均与本地事务管理服务器100相互通信,以构成横向协同事务管理。
在本发明的一个实施例中,一个或多个远程协同事务管理服务器200还用于在收到本地事务管理服务器100发送的远程控制指令之后,将远程控制指令转发至下一级的一个或多个远程协同事务管理服务器300,以构成纵向协同事务管理。
通过本发明实施例提出的系统,本地事务管理服务器和一个或多个远程协同事务管理服务器之间可以进行统一的同步协作管理,这样本地事务管理服务器就可以接管一个或多个远程协同事务管理服务器中的远程协同事务(与全局事务标识相对应的远程协同事务)。在本地事务管理服务器对本地事务进行操作的同时,本地事务管理服务器能够根据设置的全局事务标识可以对其他一个或多个远程协同事务管理服务器中对应的远程协同事务进行管理,例如控制这些对应的远程协同事务与该本地事务同时递交,或者同时进行回滚操作等。在本发明的优选实施例中,本地事务管理服务器和一个或多个远程协同事务管理服务器之间是通过RMI的方式进行远程控制指令的传递,本发明实施例通过RMI技术可实现SpringFramework事务的同步及协调管理。
如图6所示,为本发明实施例的远程协同事务管理服务器结构图。该远程协同事务管理服务器200包括接收模块210、解析模块220和控制模块230。接收模块210用于接收本地事务管理服务器100发送的远程控制指令。解析模块210用于从远程控制指令中获得对应的全局事务标识。控制模块230用于根据所述全局事务标识及所述远程控制指令创建远程协同事务或对已有的远程协同事务进行控制。
在本发明的一个实施例中,该远程协同事务管理服务器200还包括转发模块240,用于在收到本地事务管理服务器100发送的远程控制指令之后,将远程控制指令转发至下一级的一个或多个远程协同事务管理服务器300。
通过本发明实施例的上述本地事务管理服务器100及远程协同事务管理服务器200,可以实现统一的同步协作管理,这样本地事务管理服务器就可以接管一个或多个远程协同事务管理服务器中的远程协同事务(与全局事务标识相对应的远程协同事务)。在本地事务管理服务器对本地事务进行操作的同时,本地事务管理服务器能够根据设置的全局事务标识可以对其他一个或多个远程协同事务管理服务器中对应的远程协同事务进行管理,例如控制这些对应的远程协同事务与该本地事务同时递交,或者同时进行回滚操作等。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的一个或多个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (17)
1.一种多事务同步协作管理方法,其特征在于,包括以下步骤:
本地事务管理服务器建立本地事务;
所述本地事务管理服务器向一个或多个远程协同事务管理服务器发送事务开启指令,其中,所述事务开启指令之中包括全局事务标识;以及
所述一个或多个远程协同事务管理服务器根据所述事务开启指令建立远程协同事务,且所述远程协同事务具有所述全局事务标识,其中,所述本地事务管理服务器根据所述全局事务标识对所述远程协同事务进行同步协作管理,
其中,所述本地事务管理服务器中设置有远程方法调用RMI客户端,所述一个或多个远程协同事务管理服务器中均设置有RMI服务器端,所述本地事务管理服务器通过所述RMI客户端向所述一个或多个远程协同事务管理服务器的RMI服务器端发送事务远程控制指令,其中,
生成事务远程控制指令,并将所述事务远程控制指令发送至RMI客户端;
在所述RMI客户端的调用接口对携带所述事务远程控制指令的RMI消息包进行拦截;
根据所述本地事务对应的线程号设定所述全局事务标识,或者为所述本地事务分配一个唯一的所述全局事务标识;以及
将所述全局事务标识添加至所述RMI消息包中并向所述一个或多个远程协同事务管理服务器的RMI服务器端发送。
2.如权利要求1所述的多事务同步协作管理方法,其特征在于,所述本地事务管理服务器根据所述全局事务标识对所述远程协同事务进行同步协作管理进一步包括:
在对所述本地事务进行操作时,所述本地事务管理服务器根据所述全局事务标识向所述一个或多个远程协同事务管理服务器发送远程控制指令以控制相应的远程协同事务。
3.如权利要求1所述的多事务同步协作管理方法,其特征在于,所述本地事务管理服务器中运行有多个线程和多个本地事务,且每个本地事务均与一个线程相对应,每个线程均具有独立的全局事务标识。
4.如权利要求1所述的多事务同步协作管理方法,其特征在于,通过侵入或非侵入方式对携带所述事务远程控制指令的RMI消息包进行拦截。
5.如权利要求1所述的多事务同步协作管理方法,其特征在于,其中,所述多个远程协同事务管理服务器均与所述本地事务管理服务器相互通信,以构成横向协同事务管理。
6.如权利要求1所述的多事务同步协作管理方法,其特征在于,还包括:
所述一个或多个远程协同事务管理服务器在收到所述本地事务管理服务器发送的远程控制指令之后,所述一个或多个远程协同事务管理服务器进一步将所述远程控制指令转发至下一级的一个或多个远程协同事务管理服务器,以构成纵向协同事务管理。
7.如权利要求1所述的多事务同步协作管理方法,其特征在于,所述远程控制指令包括事务开启指令、事务提交指令和事务回滚指令。
8.一种多事务同步协作管理系统,其特征在于,包括本地事务管理服务器和与所述本地事务管理服务器相互通信的一个或多个远程协同事务管理服务器:
所述本地事务管理服务器用于建立本地事务,并向所述一个或多个远程协同事务管理服务器发送事务开启指令,其中,所述事务开启指令之中包括全局事务标识;
所述一个或多个远程协同事务管理服务器用于根据所述本地事务管理服务器发送的事务开启指令建立远程协同事务,且所述远程协同事务具有所述全局事务标识,其中,所述本地事务管理服务器根据所述全局事务标识对所述远程协同事务进行同步协作管理,
其中,所述本地事务管理服务器具有RMI客户端,所述一个或多个远程协同事务管理服务器具有RMI服务器端,所述本地事务管理服务器通过所述RMI客户端向所述一个或多个远程协同事务管理服务器的RMI服务器端发送事务远程控制指令,
其中,所述本地事务管理服务器包括:
建立模块,用于建立本地事务;以及
指令生成及发送模块,用于根据所述本地事务的操作生成事务远程控制指令,其中,所述事务开启指令之中包括全局事务标识,并根据所述全局事务标识向所述一个或多个远程协同事务管理服务器发送控制相应远程协同事务的远程控制指令,所述一个或多个远程协同事务管理服务器根据所述远程控制指令及所述全局事务标识对对应的远程协同事务进行操作,其中,所述指令生成及发送模块进一步包括:
RMI客户端子模块,用于接收所述指令生成及发送模块生成的事务远程控制指令,并根据所述事务远程控制指令生成对应的RMI消息包;
拦截子模块,用于在所述RMI客户端子模块的调用接口对携带所述事务远程控制指令的RMI消息包进行拦截;
全局事务标识确定子模块,用于根据所述本地事务对应的线程号设定所述全局事务标识,或者为所述本地事务分配一个唯一的所述全局事务标识;以及
添加子模块,用于将所述全局事务标识确定子模块确定的所述全局事务标识添加至所述RMI消息包中,并通过所述RMI客户端子模块向所述一个或多个远程协同事务管理服务器的RMI服务器端发送。
9.如权利要求8所述的多事务同步协作管理系统,其特征在于,所述本地事务管理服务器中运行有多个线程和多个本地事务,且每个本地事务均与一个线程相对应,每个线程均具有独立的全局事务标识。
10.如权利要求8所述的多事务同步协作管理系统,其特征在于,所述拦截子模块通过侵入或非侵入方式对携带所述事务远程控制指令的RMI消息包进行拦截。
11.如权利要求8所述的多事务同步协作管理系统,其特征在于,其中,所述多个远程协同事务管理服务器均与所述本地事务管理服务器相互通信,以构成横向协同事务管理。
12.如权利要求8所述的多事务同步协作管理系统,其特征在于,所述一个或多个远程协同事务管理服务器还用于在收到所述本地事务管理服务器发送的远程控制指令之后,将所述远程控制指令转发至下一级的一个或多个远程协同事务管理服务器,以构成纵向协同事务管理。
13.如权利要求8所述的多事务同步协作管理系统,其特征在于,所述远程控制指令包括事务开启指令、事务提交指令和事务回滚指令。
14.一种本地事务管理服务器,其特征在于,包括:
建立模块,用于建立本地事务;以及
指令生成及发送模块,用于根据所述本地事务的操作生成事务远程控制指令,其中,所述事务远程控制指令之中包括全局事务标识,并根据所述全局事务标识向一个或多个远程协同事务管理服务器发送控制相应远程协同事务的远程控制指令,所述一个或多个远程协同事务管理服务器根据所述远程控制指令及所述全局事务标识对对应的远程协同事务进行操作,其中,所述指令生成及发送模块进一步包括:
RMI客户端子模块,用于接收所述指令生成及发送模块生成的事务远程控制指令,并根据所述事务远程控制指令生成对应的RMI消息包;
拦截子模块,用于在所述RMI客户端子模块的调用接口对携带所述事务远程控制指令的RMI消息包进行拦截;
全局事务标识确定子模块,用于根据所述本地事务对应的线程号设定所述全局事务标识,或者为所述本地事务分配一个唯一的所述全局事务标识;以及
添加子模块,用于将所述全局事务标识确定子模块确定的所述全局事务标识添加至所述RMI消息包中,并通过所述RMI客户端子模块向所述一个或多个远程协同事务管理服务器的RMI服务器端发送。
15.如权利要求14所述的本地事务管理服务器,其特征在于,所述建立模块建立有多个本地事务,且每个本地事务均与一个线程相对应,每个线程均具有独立的全局事务标识。
16.如权利要求14所述的本地事务管理服务器,其特征在于,所述拦截子模块通过侵入或非侵入方式对携带所述事务远程控制指令的RMI消息包进行拦截。
17.如权利要求14所述的本地事务管理服务器,其特征在于,所述远程控制指令包括事务开启指令、事务提交指令和事务回滚指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110315216.3A CN102347986B (zh) | 2011-10-17 | 2011-10-17 | 多事务同步协作管理方法、系统及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110315216.3A CN102347986B (zh) | 2011-10-17 | 2011-10-17 | 多事务同步协作管理方法、系统及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102347986A CN102347986A (zh) | 2012-02-08 |
CN102347986B true CN102347986B (zh) | 2014-10-22 |
Family
ID=45546266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110315216.3A Active CN102347986B (zh) | 2011-10-17 | 2011-10-17 | 多事务同步协作管理方法、系统及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102347986B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744906A (zh) * | 2013-12-26 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种数据同步系统、方法及装置 |
CN104239476B (zh) * | 2014-09-04 | 2018-09-25 | 上海天脉聚源文化传媒有限公司 | 一种数据库同步的方法、装置及系统 |
CN105183549A (zh) * | 2015-08-27 | 2015-12-23 | 携程计算机技术(上海)有限公司 | 基于任务分配的自动出票系统 |
CN106790325B (zh) * | 2015-11-20 | 2020-07-10 | 北京神州泰岳软件股份有限公司 | 一种访问网络设备的方法和系统 |
CN107045454B (zh) * | 2016-02-06 | 2020-06-26 | 华为技术有限公司 | 跨进程分布式事务控制方法及相关系统 |
CN106126583A (zh) * | 2016-06-20 | 2016-11-16 | 环球大数据科技有限公司 | 一种分布式图数据库的集群强一致性处理方法及系统 |
CN107623703B (zh) * | 2016-07-13 | 2021-08-17 | 中兴通讯股份有限公司 | 全局事务标识gtid的同步方法、装置及系统 |
CN106503132B (zh) * | 2016-10-19 | 2019-07-16 | 广州快塑电子科技有限公司 | 一种分布式事务管理方法及系统 |
CN109739935B (zh) * | 2019-01-09 | 2022-12-30 | 腾讯科技(深圳)有限公司 | 数据读取方法、装置、电子设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6295548B1 (en) * | 1999-03-12 | 2001-09-25 | Compaq Computer Corporation | Detection of an imported transaction for finding the global transaction identifier |
US6411981B1 (en) * | 1999-03-12 | 2002-06-25 | Compaq Computer Corporation | Method and apparatus for conducting a transaction between homogeneous and/or heterogeneous transaction processing systems using asynchronous pull of a transaction transfer |
CN1731359A (zh) * | 2005-09-06 | 2006-02-08 | 大连海事大学 | 一种基于pid思想的小组协同处理事务的事务分配方法 |
CN101046815A (zh) * | 2007-03-14 | 2007-10-03 | 华为技术有限公司 | 事务协调器、资源使用端、服务端及分布式事务处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671686B2 (en) * | 2000-11-02 | 2003-12-30 | Guy Pardon | Decentralized, distributed internet data management |
-
2011
- 2011-10-17 CN CN201110315216.3A patent/CN102347986B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6295548B1 (en) * | 1999-03-12 | 2001-09-25 | Compaq Computer Corporation | Detection of an imported transaction for finding the global transaction identifier |
US6411981B1 (en) * | 1999-03-12 | 2002-06-25 | Compaq Computer Corporation | Method and apparatus for conducting a transaction between homogeneous and/or heterogeneous transaction processing systems using asynchronous pull of a transaction transfer |
CN1731359A (zh) * | 2005-09-06 | 2006-02-08 | 大连海事大学 | 一种基于pid思想的小组协同处理事务的事务分配方法 |
CN101046815A (zh) * | 2007-03-14 | 2007-10-03 | 华为技术有限公司 | 事务协调器、资源使用端、服务端及分布式事务处理方法 |
Non-Patent Citations (2)
Title |
---|
方法级事务控制及其在.NET中的实现;王强等;《计算机科学》;20021231;第29卷(第8期);第226-229页 * |
王强等.方法级事务控制及其在.NET中的实现.《计算机科学》.2002,第29卷(第8期), |
Also Published As
Publication number | Publication date |
---|---|
CN102347986A (zh) | 2012-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102347986B (zh) | 多事务同步协作管理方法、系统及其装置 | |
CN100437671C (zh) | 异地授权系统及方法 | |
CN111741026B (zh) | 一种跨链事务请求处理方法、装置、设备以及存储介质 | |
CN101981897B (zh) | 根据标准协议opc ua在客户端服务器系统中通信的方法和装置 | |
CN100545851C (zh) | 使用命令行环境的远程系统管理 | |
CN110062041B (zh) | 一种基于区块链的iot设备变更的方法及装置 | |
JP2019028525A (ja) | 運用管理方法、運用管理システム、および、運用管理プログラム | |
US8874686B2 (en) | DDS structure with scalability and adaptability and node constituting the same | |
CN101477658B (zh) | 一种建立复合文档的方法、装置及系统 | |
TW200903332A (en) | Progressively implementing declarative models in distributed systems | |
CN104899015A (zh) | 一种业务组件管理系统及其方法 | |
CN108712457A (zh) | 基于Nginx反向代理的后端服务器动态负载调整方法及装置 | |
CN101753592B (zh) | 用于数据处理的方法和系统 | |
CN111277647A (zh) | 区块链网络成员管理方法、装置、设备和介质 | |
CN103064717A (zh) | 一种集群系统并行安装软件的装置和方法 | |
CN106569874B (zh) | 存储设备的操作方法及物理服务器 | |
CN104519095A (zh) | 一种动态消息推送方法及其系统、服务端、客户端 | |
WO2024066342A1 (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN102957594A (zh) | 基于消息队列的消息处理方法、相关设备及系统 | |
CN103229480A (zh) | 分布式存储系统中的数据处理方法及设备、客户端 | |
CN111352706B (zh) | 一种数据访问方法、装置、设备及存储介质 | |
CN105404530B (zh) | 一种实现简易部署和使用私有云的系统及方法 | |
CN115328664A (zh) | 一种消息消费方法、装置、设备及介质 | |
CN102197390B (zh) | 通过实现和绑定合约向客户机服务提供功能 | |
CN108011871A (zh) | 一种远程协助处理方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |