CN106255956A - 基于事务环境中的资源管理器实例感知支持公共事务标识符优化和事务亲密度的***和方法 - Google Patents

基于事务环境中的资源管理器实例感知支持公共事务标识符优化和事务亲密度的***和方法 Download PDF

Info

Publication number
CN106255956A
CN106255956A CN201580022700.3A CN201580022700A CN106255956A CN 106255956 A CN106255956 A CN 106255956A CN 201580022700 A CN201580022700 A CN 201580022700A CN 106255956 A CN106255956 A CN 106255956A
Authority
CN
China
Prior art keywords
transaction
coordinator
resource manager
server
manager instance
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.)
Granted
Application number
CN201580022700.3A
Other languages
English (en)
Other versions
CN106255956B (zh
Inventor
申旭刚
张庆生
T·J·利特尔
金永顺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN106255956A publication Critical patent/CN106255956A/zh
Application granted granted Critical
Publication of CN106255956B publication Critical patent/CN106255956B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种可以支持事务环境中的事务处理的***和方法。用于全局事务的协调器操作来将公共事务标识符和用于资源管理器实例的信息传播到事务环境中全局事务的一个或多个参与者。协调器允许与协调器共享资源管理器实例的所述一个或多个参与者使用公共事务标识符,并且可以利用一个事务分支来为共享资源管理器实例的所述一个或多个参与者处理全局事务。

Description

基于事务环境中的资源管理器实例感知支持公共事务标识符 优化和事务亲密度的***和方法
版权声明:
本专利文档的公开内容的一部分包含受版权保护的素材。版权拥有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现的那样进行传真复制,但是除此之外在任何情况下都保留所有版权。
技术领域
本发明一般而言涉及计算机***和软件,并且具体而言涉及事务***。
背景技术
事务中间件***或面向事务的中间件包括可以处理组织内的各种事务的企业应用服务器。随着诸如高性能网络和多处理器计算机的新技术的发展,需要进一步改进事务中间件的性能。这些是本发明的实施例旨在解决的一般领域。
发明内容
本文描述了可以支持事务环境中的事务处理的***和方法。用于全局事务的协调器操作来将公共事务标识符和用于资源管理器实例的信息传播到事务环境中全局事务的一个或多个参与者。协调器允许与协调器共享资源管理器实例的所述一个或多个参与者使用公共事务标识符,并且协调器可以利用一个事务分支来为共享资源管理器实例的所述一个或多个参与者处理全局事务。
本文描述了可以支持事务环境中的事务处理的***和方法。事务***操作来将请求路由到事务服务器,其中事务服务器连接到资源管理器(RM)实例。另外,事务***可以向事务服务器分配亲密度上下文,其中亲密度上下文指示事务服务器与之相关联的RM实例,并且事务***可以基于亲密度上下文将与该请求相关的一个或多个后续请求路由到事务服务器。
本文描述了可以支持事务环境中的事务处理的***和方法。事务服务器操作来从与一个或多个RM实例相关联的数据源接收资源管理器(RM)实例信息,其中接收到的实例信息允许事务服务器感知事务服务器当前连接到哪个RM实例。此外,事务服务器操作来将接收到的实例信息保存到与事务服务器相关联的一个或多个表中。然后,事务服务器可以基于保存在一个或多个表中的实例信息处理全局事务。
附图说明
图1示出了根据本发明实施例的在事务环境中支持资源管理器(RM)实例感知的图示。
图2示出了根据本发明实施例的在事务环境中维护各种状态表的图示。
图3示出了根据本发明实施例的在事务环境中支持服务器表(ST)的图示。
图4示出了根据本发明实施例的在事务环境中更新实例信息的图示。
图5示出了根据本发明实施例的在事务环境中支持具有各种检查点的事务处理的图示。
图6示出了根据本发明实施例的用于在事务环境中支持资源管理器(RM)实例感知的示例性流程图。
图7示出了根据本发明实施例的在事务环境中基于实例感知支持事务亲密度的图示。
图8示出了根据本发明实施例的在事务环境中支持事务亲密度路由的图示。
图9示出了根据本发明实施例的在事务环境中发送具有亲密度上下文的消息的图示。
图10示出了根据本发明实施例的在事务环境中接收具有亲密度上下文的消息的图示。
图11示出了根据本发明实施例的在事务环境中的客户端上下文内支持亲密度路由的图示。
图12示出了根据本发明实施例的在事务环境中跨不同域传播亲密度上下文的图示。
图13示出了根据本发明实施例的在事务环境中将亲密度上下文传播到应用服务器的图示。
图14示出了根据本发明实施例的用于在事务环境中基于实例感知支持事务亲密度的示例性流程图。
图15示出了根据本发明实施例的利用不同事务标识符(XID)在事务环境中处理全局事务的图示。
图16示出了根据本发明实施例的利用公共事务标识符(XID)在事务环境中处理全局事务的图示。
图17示出了根据本发明实施例的在事务环境中基于数据库实例感知来支持一阶段提交(1PC)处理模型的图示。
图18示出了根据本发明实施例的在事务环境中基于数据库实例感知来处理全局事务的图示。
图19示出了根据本发明实施例的利用公共XID在事务环境中跨多个域处理全局事务的图示。
图20示出了根据本发明实施例的用于利用公共XID在事务环境中处理全局事务的示例性流程图。
具体实施方式
在附图的图中,通过示例而非限制的方式示出了本发明,其中相同的标记指示相似的元素。应当注意,在本公开内容中对“一个”或“一些”实施例的引用不一定是相同的实施例,并且这样的引用意味着至少一个。
以下本发明的描述使用Tuxedo环境作为事务中间件机器环境的例子。对本领域技术人员显而易见的是,可以使用其它类型的事务中间件机器环境而没有限制。
本文描述的是可以在诸如事务中间件机器环境的事务环境中支持事务处理的***和方法。
事务中间件机器环境
根据本发明的实施例,***包括高性能硬件(例如64位处理器技术)、高性能大存储器、以及冗余InfiniBand和以太网网络、连同应用服务器或中间件环境(诸如WebLogicSuite)的组合,以提供包括可以被快速供给并且可按需缩放的大规模并行存储器中网格的完整Java EE应用服务器集合体。根据实施例,该***可以被部署为提供应用服务器网格、存储区域网络和InfiniBand(IB)网络的全、半或四分之一机架或其它配置。中间件机器软件可以提供应用服务器、中间件和其它功能,诸如像WebLogic Server、JRockit或HotspotJVM、Oracle Linux或Solaris以及Oracle VM。根据实施例,该***可以包括经由IB网络彼此通信的多个计算节点、IB交换网关和存储节点或单元。当实现为机架配置时,机架的未使用部分可以留空或被填充物(filler)占据。
根据本发明的实施例,该***提供用于托管诸如Oracle Middleware SW套件或Weblogic的中间件或应用服务器软件的易于部署的解决方案。如本文所述,根据实施例,该***是包括一个或多个服务器、存储单元、用于存储联网的IB架构、以及托管中间件应用所需的所有其它部件的“盒中网格”。通过利用使用例如Real Application Clusters和Exalogic Open存储的大规模并行网格体系架构,可以为所有类型的中间件应用提供显著的性能。***提供具有线性I/O可扩展性的改进的性能、易于使用和管理、并且提供关键任务的可用性和可靠性。
根据本发明的实施例,诸如Oracle Tuxedo***的事务中间件***可以利用诸如Oracle Exalogic中间件机器的具有多个处理器的高速机器以及诸如IB网络的高性能网络连接。此外,Oracle Tuxedo***(也被简单地称为“Tuxedo”)可以利用集群数据库,诸如Oracle Real Application Clusters(RAC)企业数据库,这是具有共享高速缓存体系架构的集群数据库并且可以是云体系架构的部件。Oracle RAC可以克服传统无共享和共享盘方法的限制,为业务应用提供高度可扩展和可用的数据库解决方案。
根据本发明的实施例,Oracle Tuxedo***提供了一组软件模块,其使得能够构建、执行和管理高性能、分布式业务应用,并且已被多个多层应用开发工具用作事务中间件。Tuxedo是可用来管理分布式计算环境中的分布式事务处理的中间件平台。它是经过验证的平台,用于解锁企业传统应用并将其扩展到面向服务的体系架构,同时提供无限的可扩展性和基于标准的互操作性。
此外,Oracle Tuxedo***可以符合开放组(Open Group)的X/Open标准,包括支持用于两阶段提交(2PC)处理的XA标准、X/Open ATMI API、以及用于语言国际化的X/开放可移植性指南(Open Portability Guide,XPG)标准。当事务应用服务器使用XA标准时,它可以被称为XA服务器。例如,属于Tuxedo组的每个Tuxedo应用服务器都可以利用OPENINFO属性进行配置。Tuxedo组中的所有XA服务器都可以使用OPENINFO属性来建立到资源管理器(RM)的连接。
实例感知
图1示出了根据本发明实施例的在事务环境中支持资源管理器(RM)实例感知的图示。如图1所示,事务环境100中的事务***101可以利用与诸如数据库的数据源102相关联的一个或多个资源管理器(RM)实例来支持事务处理。
根据本发明的实施例,事务***101可以感知数据源102中的RM实例信息104。例如,事务***101中的事务服务器103可以通过利用用户回调110从数据源102获得RM实例信息104。事务***101可以使用不同的机制来注册用户回调110,例如静态注册机制和动态注册机制。
当支持XA服务器时,可以使用静态注册机制。XA服务器是使用统一XA接口来控制事务的服务器。例如,在Tuxedo中,在调用xa_open()函数之后,可以在tpopen()函数中调用静态注册。一旦注册成功,则当事务服务器103建立到例如Oracle数据库的数据库的连接时,可以调用用户回调110。此外,在调用xa_close()函数之前,可以在tpclose()函数中取消注册用户回调110。
可替代地,事务服务器103可以动态地注册用户回调110,例如,基于与数据源102相关联的共享库105。例如,当用户利用非XA服务器(例如,经由OCI或Pro*c/c++)连接到Oracle数据库时,Tuxedo可以动态注册回调。Tuxedo可以首先动态加载Oracle OCI库OCIAPI并且获得相关的OCI环境句柄。然后,Tuxedo可以经由OCISessionBegin函数中的OCIUserCallbackRegister注册用户回调。
如图1所示,***可以将获得的实例信息104保存在与事务服务器103相关联的相关上下文106中。此外,事务服务器103可以将实例信息104存储在共享存储器107中的不同状态表108中(例如Tuxedo中的全局公告板(BB))。这些表108可以被同步到不同的节点,并且可以被多个事务服务器(例如,服务器111-112)和/或本地客户端访问。
图2示出了根据本发明实施例的在事务环境中维护各种状态表的图示。如图2所示,事务***200可以将实例信息220存储在共享存储器201中的不同状态表中。
这些状态表可以包括存储唯一RM/数据库名称的资源管理器表211,存储RM/数据库实例名称的实例表212和存储RM/数据库服务名称的服务表213。此类信息可以帮助其它服务器知道与特定服务器相关联的实例信息。
此外,事务***200可以在共享存储器201中维护服务器表(ST)214。ST 214可以包括一个或多个服务器表条目(STE),每个服务器表条目可以在实例表212中存储索引。例如,如果服务器是单线程服务器,则每个STE可以存储实例标识符(ID)。
如图2所示,服务器表214可以指向共享存储器201中的其它表211-213。因此,事务***200可以使用服务器表214来获得实例信息(诸如关于特定服务器当前连接到哪个RM实例的信息),并且事务***200可以不直接使用存储在不同状态表211-213中的实例信息。
图3示出了根据本发明实施例的在事务环境中支持服务器表(ST)的图示。如图3所示,事务***300中的服务器表(ST)310可以包括一个或多个服务器表条目(STE)311-312,每个服务器表条目(STE)311-312可以包括一个或多个实例标识符(ID)。例如,STE 311可以包括实例ID 321-322,并且STE 312可以包括实例ID 323-324。
根据本发明的实施例,每个实例ID 321-324可以包括各种实例信息。如图3所示,实例ID 322可以识别实例名称301、数据库名称302和服务名称303。
例如,实例ID可以利用整数来实现,例如,包括三个部分:位0-11、位12-19和位20-31的32位整数。第一部分即位0-11可以存储RM/数据库实例名称301的条目索引。第二部分即位12-19可以存储RM/数据库名称302的条目索引。第三部分即位20-31可以存储RM/数据库服务名称303的条目索引。此外,特殊值0xFFFFFFFF可以用于指示无效的实例ID。
根据本发明的实施例,事务***300可以通过简单地比较相关位来检查实例ID322中的实例信息。因此,***可以避免由于串比较而导致的性能问题,因为串比较操作比位比较操作更昂贵。
图4示出了根据本发明实施例的在事务环境中更新实例信息的图示。如图4所示,事务环境400中的事务***401可以从例如在数据库中的资源管理器(RM)402获得相关的实例信息404。
当调用用户回调410时,可以从RM 402检索最新的实例信息404,并且可以将其存储到上下文405中。此外,事务***401可以设置标志409,其指示接收到最新的实例信息404。
根据本发明的实施例,事务处理403可以配置有一个或多个检查点。例如,可以在服务调用之前和之后以及在初始化例程之后触发检查点。此外,当建立或丢弃连接时,可以触发检查点。
如图4所示,在检查点408处,事务处理403可以检查标志409。如果标志409是有效(up),则事务服务器403可以基于检索到的实例信息404更新事务上下文407,并将检索到的实例信息404存储到(共享存储器中的)状态表406中。
图5示出了根据本发明实施例的在事务环境中支持具有各种检查点的事务处理的图示。如图5所示,在步骤501处,事务处理开始。然后,事务处理可以前进到在步骤502处的初始化处理。
初始化处理502可以包括一个或多个实例检查点,例如,检查点510。例如,在Tuxedo中,当使用动态注册时,在初始化例程(例如,tpsvrinit)之后,检查点510可以位于服务器的启动例程中。此外,当服务器试图建立到RM的连接时(例如,在tpopen()函数调用中成功调用xa_open()函数调用之后),可以触发检查点510。
此外,在步骤512处,事务处理可以在初始化处理502期间检索实例信息以启用实例感知能力。
另外,在步骤503处,事务处理可以检查是否存在服务请求。在步骤505处,事务处理可以调用服务调度器,例如,tmsvcdsp()。如图5所示,可以在调用服务例程507处理请求消息之前触发检查点506。此外,可以在完成服务例程507之后触发另一个检查点508。在步骤509处,事务处理可以结束服务调度器。
否则,如果没有服务请求并且事务处理要被关闭,则在步骤504处,事务处理可以开始关闭处理511。关闭处理511可以触发检查点513来清除实例ID信息。例如,在Tuxedo中,当服务器要关闭到RM的连接时(例如,在tpclose()函数调用中调用xa_close()函数调用之前),可以触发检查点513。最后,事务处理在步骤514处结束。
根据本发明的实施例,当***使用静态注册而不是动态注册时,***可以在检查点512和检查点513处表现不同。可以直接检索和更新实例信息而不用检查启动器。例如,当使用静态注册时,XA服务器可以使用tpopen()/tpclose()函数调用来建立/删除到RM的连接。此外,tpopen()函数可以在定制的tpsvrinit()函数调用中被调用,并且tpclose()函数可以在定制的tpsvrdone()函数中被调用。
图6示出了根据本发明实施例的用于在事务环境中支持资源管理器(RM)实例感知的示例性流程图。如图6所示,在步骤601处,事务服务器可以从与一个或多个RM实例相关联的资源来源接收资源管理器(RM)实例信息,其中接收到的实例信息允许事务服务器感知事务服务器当前连接到哪个RM实例。然后,在步骤602处,***可以将接收到的实例信息保存到与事务服务器相关联的一个或多个表中。此外,在步骤603处,***允许事务服务器基于保存在一个或多个表中的实例信息处理全局事务。
事务亲密度
图7示出了根据本发明实施例的在事务环境中基于实例感知支持事务亲密度的图示。如图7所示,事务环境700可以利用一个或多个资源管理器(RM),例如与数据库704相关联的RM实例702,来支持全局事务710的处理。
事务***701可以将用于数据库连接的请求711路由到事务服务器703(例如,利用默认路由策略)。此外,***可以将亲密度上下文705分配给事务服务器703。包含识别RM实例702的信息的亲密度上下文705可以存储在共享存储器(例如Tuxedo中的全局事务表(GTT))中,并且可以利用消息来传播。例如,事务服务器703可以基于上述实例感知特征通过亲密度上下文705获得RM实例名称、RM/数据库名称和RM/数据库服务名称。
另外,后续请求712可以基于亲密度上下文705被路由到事务服务器703。此外,其它后续请求也可以被路由到连接到RM实例702的事务服务器703,直到全局事务710完成(或客户端上下文结束)。
根据本发明的实施例,事务亲密度确保连接到RM实例702的相关数据库请求711-712可以被路由到同一事务服务器703。因此,事务亲密度可以通过最大化数据库集群利用率来提高应用的性能,因为事务亲密度可以通过增加高速缓存命中的可能性来提高数据库的性能。
根据本发明的实施例,***可以与其它路由策略一起应用事务亲密度路由策略,用于执行全局事务710。例如,在Tuxedo中可以支持以下路由优先级:
1.用于域的事务优先级路由
2.客户/服务器亲密度路由
3.事务亲密度路由
4.根据服务负载的负载均衡
图8示出了根据本发明实施例的在事务环境中支持事务亲密度路由的图示。如图8所示,事务***可以利用事务亲密度路由策略来支持全局事务的处理。
在步骤801处,***可以接收涉及数据库连接的事务请求。然后,在步骤802处,***可以检查是否存在现有的亲密度上下文。
如果在全局事务中不涉及亲密度上下文,则在步骤809处,***可以执行负载均衡路由。
如果在全局事务中涉及现有的亲密度上下文,则***可以应用事务亲密度路由策略以便找到服务器。
在步骤803处,***可以尝试找到与相同实例名称、相同数据库(DB)名称和相同服务名称相关联的服务器。
如果***不能找到服务器,则在步骤804处,***可以尝试找到与相同的DB名称和相同的服务名称相关联并且在当前全局事务不涉及的组中的服务器。
如果***不能找到服务器,则在步骤805处,***可以尝试找到与相同的DB名称和相同的实例名称相关联的服务器。
如果事务***不能找到服务器,则在步骤806处,***可以尝试找到与相同的DB名称相关联的服务器。
在步骤807处,***可以能够基于现有的亲密度上下文来找到服务器。另一方面,在步骤808处,***可能不能找到服务器。然后,在步骤809处,***可以尝试根据负载均衡路由找到服务器。
图9示出了根据本发明实施例的在事务环境中发送具有亲密度上下文的消息的图示。如图9所示,事务***901可以支持事务环境900中的事务处理。此外,事务***901中的事务服务器903可以基于事务上下文907(例如Tuxedo中的TUXC)来支持事务处理。
如图9所示,事务服务器903可以从共享存储器902(例如Tuxedo中的GTT)获得相关的亲密度上下文904,并且可以利用相关的亲密度上下文914来更新事务上下文907。当检查点908被触发时,***可以将相关的亲密度上下文914从事务上下文907复制到消息队列905中的消息906中。
因此,在将消息906发送到服务之前,事务***901可以引用事务上下文907中相关的亲密度上下文914用于服务路由。
图10示出了根据本发明实施例的在事务环境中接收具有亲密度上下文的消息的图示。如图10所示,事务环境1000中的事务***1001可以使用消息队列1005来接收一个或多个消息(例如消息1006)。
事务***1001中的事务服务器1003可以在初始引导之后连续地使消息出列(包含请求)。如图10所示,事务服务器1003可以从消息队列1005读取消息1006,并且处理消息1006中的服务请求。
在服务请求的处理期间,***可以触发检查点1008,以便将亲密度上下文从消息1006复制到事务上下文1007中。然后,***可以使用事务上下文1007中的亲密度上下文1014来更新共享存储器1002中的亲密度上下文1004。
一旦消息1006中的请求已被处理,事务服务器1003进程就可以从消息队列1005读取更多消息。否则,事务服务器1003可以等待消息队列1005,直到下一个请求到达。
图11示出了根据本发明实施例的在事务环境中的客户端上下文内支持亲密度路由的图示。如图11所示,事务环境1100中的事务***1101可以利用一个或多个资源管理器(RM)支持客户端上下文1110中的事务处理,一个或多个资源管理器(RM)例如是与数据库1104相关联的RM实例1102。例如,在客户端上下文1110内,web对话可以被连接和断开多次。在每个这些连接期间,对话可以引用和/或访问相同(或相似)的数据,诸如购物车。
根据本发明的实施例,***可以将用于数据库连接的请求1111路由到事务服务器1103(例如,基于默认路由策略)。此外,***可以向事务服务器1103分配指示RM 1102的亲密度上下文1105。
另外,客户端上下文1110内的一个或多个后续请求(例如,请求1112)可以基于亲密度上下文1105被路由到事务服务器1103,直到客户端上下文1110结束或相关的事务完成。因此,事务***1101可以确保客户端上下文1110内的各种数据库操作可以被引导到相同的RM实例1102。
根据本发明的实施例,事务***1101可以从数据库接收各种负载均衡建议事件,其提示客户端上下文1110内的亲密度。例如,在Tuxedo中,从数据库接收到的负载均衡建议事件可以包括参数AFFINITY HINT,它是指示对于特定实例和服务组合亲密度是活动的还是不活动的标志。当负载均衡建议通过在服务上设置目标被启用时,作为在web会话持续时间内持续的临时亲密度的AFFINITYHINT参数可以被自动启用。此外,提供相同服务的不同实例可以具有不同的AFFINITY HINT设置。
根据本发明的实施例,如果相关的数据库操作在事务内,则事务***1101可以应用事务亲密度路由策略,而不是基于客户端上下文的亲密度策略。另一方面,***可以基于默认的tuxedo负载均衡路由策略来实现基于客户端上下文的亲密度路由策略。
图12示出了根据本发明实施例的在事务环境中跨不同域传播亲密度上下文的图示。如图12所示,事务环境1200可以利用一个或多个资源管理器(RM)支持事务处理,一个或多个资源管理器(RM)例如是与数据库1215相关联的RM实例1205。
根据本发明的实施例,***可以将用于数据库连接的请求1211路由到事务服务器1203(例如,利用默认路由策略)。此外,***可以向事务服务器1203分配指示RM实例1202的亲密度上下文1207。
另外,如果请求1211要在不同域之间传送,则事务环境1200中的事务域可以跨域传播亲密度上下文信息。
如图12所示,事务域1201可以在将亲密度关键字串1208发送到远程域1202之前,将亲密度上下文1207转换成亲密度关键字串1208。在接收到亲密度关键字串1208之后,事务域1202可以将亲密度关键字串1208转换成可以由事务域1202中的事务服务器1004使用的亲密度上下文1206。
因此,一个或多个后续请求(例如请求1212)可以基于亲密度上下文1206被引导到RM实例1202。
图13示出根据本发明实施例的在事务环境中将亲密度上下文传播到应用服务器的图示。如图13所示,事务环境1300中的事务***1301可以利用一个或多个资源管理器(RM)来支持事务处理,一个或多个资源管理器(RM)例如是与数据库1315相关联的RM实例1305。
根据本发明的实施例,***可以将用于数据库连接的请求1311路由到事务服务器1303(例如,使用默认路由策略)。此外,***可以向事务服务器1303分配指示RM实例1305的亲密度上下文1307。
另外,事务***1301(例如,Tuxedo TDomain)可以经由亲密度关键字串1308将亲密度上下文1307信息传播到应用服务器1302(例如,WebLogic应用服务器)。例如,亲密度上下文1307可以经由连接器1304(例如,Tuxedo WTC)在事务***1301和应用服务器1302之间进行交换。
当事务***1301发送请求到连接器1304时,事务***1301可以将亲密度上下文1307转换成亲密度关键字串1308。当连接器1304接收到来自事务***1301的请求时,连接器1306可以将亲密度关键字串1308转换成可由应用服务器1302使用的事务上下文1306。
当连接器1304发送请求到事务***1301时,连接器1304可以从与应用服务器1302相关联的事务上下文1306获得亲密度上下文。当事务***1301接收到来自连接器1304的请求时,事务***1301可以将亲密度关键字串1308转换为亲密度上下文1307。
因此,应用服务器1312中的一个或多个后续请求(例如,请求1312)可以基于亲密度上下文1305被引导到RM实例1302。
图14示出了根据本发明实施例的用于在事务环境中基于实例感知支持事务亲密度的示例性流程图。如图14所示,在步骤1401处,***可以将请求路由到事务服务器,其中事务服务器连接到资源管理器(RM)实例。然后,在步骤1402处,***可以向事务服务器分配亲密度上下文,其中亲密度上下文指示事务服务器与之相关联的RM实例。另外,在步骤1403处,***可以基于亲密度上下文将与该请求相关的一个或多个后续请求路由到事务服务器。
公共事务标识符(XID)
图15示出根据本发明实施例的在事务环境中利用不同事务标识符(XID)处理全局事务的图示。如图15所示,事务***1500可以利用不同的资源管理器(RM)实例来支持全局事务1510的处理,不同的资源管理器(RM)实例例如是连接到数据库1506的RM实例1504-1505。
根据本发明的实施例,全局事务1510可以与全局事务标识符(GTRID 1520)相关联。在全局事务1510中,在同一组中的涉及的事务服务器可以共享一个事务分支,而在不同组中的事务服务器可以使用不同的事务分支。
如图15所示,事务***1500可以使用多个分支(例如,分支A-C 1521-1523)来处理全局事务1510。分支A-C 1521-1523中的每一个可以与分支限定符相关联,分支限定符例如是BQUAL A-C 1531-1533。
根据本发明的实施例,事务***1500可以使用不同的事务管理器(TM)(例如,TMA-C 1501-1503)来管理全局事务1510在不同分支A-C 1521-1523上的处理。
例如,与事务标识符(XID)A 1511相关联的TM A 1501可以负责管理全局事务1510在分支A 1521上的处理。与事务标识符(XID)B 1512相关联的TM B 1502可以负责管理全局事务1510在分支B 1522上的处理。与事务标识符(XID)C 1513相关联的TM C 1503可以负责管理全局事务1510在分支C 1523上的处理。
如图15所示,用于全局事务1510中的不同分支AC 1521-1523的XID AC 1511-1513可以共享同一GTRID 1520(和格式ID),并且可以具有不同的分支限定符(即,BQUAL AC1531-1533)。
根据本发明的实施例,当全局事务1510中涉及多于一组的事务服务器时,***可以对全局事务1510调用两阶段提交(2PC)处理。
如图15所示,即使当全局事务1510中不同的参与的事务组(例如TM A-B 1501-1502)实际上与同一RM实例1504相关联时,***也可以使用2PC模型来处理全局事务1510。
根据本发明的实施例,当多于一个组在同一资源管理器实例1504上运行时,***可以通过利用公共XID来提高处理全局事务1510的性能。
图16示出了根据本发明实施例的在事务环境中利用公共XID处理全局事务的图示。如图16所示,事务***1600可以利用连接到数据库1606的资源管理器(RM)实例1604-1605来支持与GRTID 1620相关联的全局事务1610的处理。
此外,事务***1600可以使用事务管理器(TM)A-C 1601-1603来管理全局事务1610在不同事务组(例如分支A-C 1621-1623)中的不同事务应用服务器上的处理。
根据本发明的实施例,资源管理器(RM)1604-1605中的每一个可以例如基于数据库名称、服务器名称和实例名称被唯一识别。基于数据库实例感知能力,事务***1600中的事务服务器能够知道它当前连接到哪个RM实例。
如图16所示,事务***1600可以包括协调器,诸如TM A 1601。协调器TM A 1601与识别RM实例1604的实例ID 1641相关联。
此外,全局事务1610可以包括一个或多个参与服务器(例如参与者TM B-C 1602-1603),其可以位于协调器1601所位于的本地服务器节点上或者可以位于远程服务器节点处。参与者TM B-C 1602-1603中的每一个还可以与识别其连接到的RM实例的实例ID(例如实例ID 1642-1643)相关联。
根据本发明的实施例,当公共XID特征被启用用于处理全局事务1610时,用于协调器TM A 1601的XID 1611可以在全局事务1610内共享(即,XID 1611被用作公共XID)。因此,涉及多个组并在诸如Oracle数据库的集群数据库上运行的事务应用可以通过利用数据库实例感知来提高事务性能。
如图16所示,用于全局事务1610的协调器TM A 1601可以在全局事务1610的生命周期内向不同参与者TM B-C 1602-1603传播各种类型的信息,诸如XID 1611和实例ID1641。
另外,参与者TM B-C 1602-1603中的每一个可以通过将接收到的实例ID 1641与其自己的实例ID进行比较来确定它是否与协调器TM A 1601共享同一RM。如果实例ID相同,则参与者TM B-C 1602-1603可以将其自身标记为公共-XID服务器(或组)。
例如,***可以在分支B 1622上找到匹配,因为TM B 1602与TM A 1601共享同一RM实例1604。因此,TM B 1602可以使用公共XID 1611而不是它自己的XID用于支持事务处理。然后,TM B 1602可以通知协调器TM A 1601它使用公共XID 1611。在这种情况下,当协调器TM A 1601操作来提交或回滚全局事务1610时,***可以忽略分支B 1622,因为它使用公共XID 1611(其基于BQUAL A 1631)。
另一方面,***可能未在分支C 1623(其使用XID C 1613和BQUAL C 1633)上找到匹配,因为TM C 1603与不同的RM 1605(具有实例ID 1643)相关联。可选地,TM C 1603可以通知协调器TM A 1601它不使用公共XID 1611。然后,***可以根据两阶段提交(2PC)处理模型处理事务分支C 1623。
根据本发明的实施例,不同的公共XID组(即,与协调器1601一样与RM实例1604相关联的事务服务器的组)可以经由公共XID 1611访问RM实例1604。
另外,当调用提交请求时,协调器1601可以不向本地公共-XID组发送任何消息。***可以将每个本地公共-XID组的状态立即改变为只读。此外,远程公共-XID组可以接收来自协调器1601的准备请求,并且可以在没有任何真实数据库操作的情况下将其状态改变为只读。因此,***可能仅需要准备/提交这些组中的一个(例如协调器的组)。
此外,如果实例ID改变,则***可以改变公共-XID组以变为非公共-XID组。例如,如果分支B 1622改变为使用另一个RM实例,则***可以改为(例如,基于BQUAL B 1632)调用两阶段提交(2PC)处理。
图17示出了根据本发明实施例的在事务环境中基于数据库实例感知来支持一阶段提交(1PC)处理模型的图示。如图17所示,事务***1700可以利用连接到数据库1706的资源管理器(RM)实例1704来支持与GRTID 1720相关联的全局事务1710的处理。
事务***1701可以包括多个事务管理器(TM)A-C 1701-1703,其用来管理全局事务1710在不同事务组(即分支A-C 1721-1723)中的处理。
另外,TM A-C 1701-1703可以基于单个资源管理器(RM)实例1704管理全局事务1710的处理。TM A-C 1701-1703中的每一个可以维护实例标识符(ID),例如实例ID 1741-1743。
如图17所示,事务***1700可以包括协调器(例如TM A 1701)。用于全局事务1710的协调器TM A 1701可以在全局事务1710的生命周期内将诸如公共XID 1711和实例ID1741的各种类型的信息传播到不同的参与事务服务器(例如TM B-C 1702-1703)。
根据本发明的实施例,基于事务亲密度能力,***可以将全局事务1710中的所有相关请求路由到同一RM实例1704。另外,基于实例感知能力,TM AC 1701-1703能够知道在全局事务1710中只使用单个RM实例1704,因为不同的实例ID 1741-1743都识别同一RM实例1704。因此,协调器TM A 1701可以使用公共XID 1711(例如,基于BQUAL A 1731和GRTID1720的其自己的XID),用于协调事务环境1700中的全局事务1710。
如图17所示,协调器TM A 1701可以在提交阶段不向其它组发送任何“准备/提交”请求,因为它们都是公共-XID组。另外,***可以利用一阶段提交(1PC)处理模型。
根据本发明的实施例,只读一阶段提交优化可以显著地提高***性能。如果所有其它组都返回只读,则它可以对保留的组执行1PC处理。当全局事务的所有分支被紧密耦合(例如在同一实例或同一RAC中)时,可以提高性能。
例如,事务环境1700可以具有N个(其中N>1)参与的组用于处理全局事务1710。其中,M个(其中M<N)参与的组可以具有与协调器的实例ID相同的实例ID。
在没有数据库实例感知的情况下利用两阶段提交(2PC)处理模型,***可以对数据库执行N个准备操作和一个提交操作(例如,如图15所示)。此外,***可能需要写事务日志。
可替代地,基于数据库实例感知(例如,如图16所示),***可能需要对数据库执行N-M个准备操作和一个提交操作(其中减少了M个准备操作)。
另外,当M=N-1时,其指示全局事务中的所有其它参与的组可以与协调器共享同一事务分支。然后,在处理全局事务时只有一个分支。***可能只需要执行一个提交操作,其中减少了N(或M+1)个准备操作。此外,***可能不需要写事务日志。
图18示出了根据本发明实施例的在事务中间件环境中基于数据库实例感知来处理全局事务的图示。如图18所示,例如Oracle Tuxedo***的事务***可以利用多个事务组(例如,Tuxedo组A-B 1802-1803)来支持全局事务的处理。
另外,Tuxedo组A-B 1802-1803中的每一个可以具有一组事务管理器服务器(TMS)。例如,组A 1802包括服务器A 1804和TMS A 1806,TMS A 1806可以充当协调器。此外,组A 1802可以包括共享存储器,例如Tuxedo公告板(BB)A 1808。另外,组B 1803包括服务器B 1805和TMS B 1807,以及共享存储器,例如Tuxedo BB B 1809。
在如图18所示的例子中,在步骤1811处,客户端1801可以通过调用函数调用tpcall(服务A)来访问服务器A 1804上的服务(例如服务A)。然后,在步骤1812处,服务器A1804可以在Tuxedo BB A 1808中创建相关的全局事务表条目(GTTE)。
此外,在步骤1813处,客户端1801可以通过调用函数调用tpcall(服务B)来访问服务器B 1805上的另一服务(例如服务B)。在步骤1814处,服务器A 1804可以将关于组A 1802的相关信息添加到Tuxedo BB B 1809中。此外,在步骤1815处,客户端1801可以将关于组B1803的相关信息添加到Tuxedo BB A 1808。
另外,在步骤1816处,客户端1801可以通过调用函数调用tpcommit()来请求提交事务。如果全局事务中涉及的所有组在同一RM实例上运行,则Tuxedo可以对全局事务直接调用1PC。在步骤1817处,协调器TMS A 1806可以前进到提交全局事务。
如果1PC调用成功,则在步骤1818处,协调器TMS A 1806可以在本地节点中删除GTTE。然后,在步骤1819处,协调器1806可以通知组B(远程公共-XID组)1803忘记其分支。最后,在步骤1820处,TMS B 1807可以更新Tuxedo BB B 1809。
图19示出了根据本发明实施例的利用公共XID在事务环境中跨多个域处理全局事务的图示。如图19所示,事务***1900可以基于连接到数据库1906的资源管理器(RM)实例1904支持全局事务1910跨例如域A-B 1951-1952的多个域的处理。
此外,在事务***1900中不同分支A-B 1921-1923可以共享GTRID 1920。本地域A1951中的协调器TM A 1901可以将事务标识符(XID)1911和基于实例ID 1941的实例信息传播到远程域B 1952。
根据本发明的实施例,由于不同的服务器引导顺序,在域A 1951内唯一的实例ID1941在不同域(例如域B 1952)中可以是不同的。
如图19所示,不是跨域直接传播实例ID 1941,而是协调器TM A 1901可以在实例ID 1941跨域传播之前将实例ID 1941转换为格式化的串1908。例如,格式化的串1908可以包括数据库名称、服务器名称和实例名称。
此外,域网关服务器1905可以用于支持本地域A 1951和远程域B 1952之间的通信。域网关服务器1905的出站接口可以将来自实例ID 1941的实例信息映射到格式化的串1908。域网关服务器1905的入站可以将从格式化的串1908的实例信息映射到实例ID 1941。
例如,在Tuxedo中,由于业务原因,用户可以将Tuxedo组划分到不同的域中。诸如GWTDOMAIN服务器的网关服务器可以用于支持不同域之间的通信。另外,协调器域中的GWTDOMAIN服务器可以充当代理。此外,当通过GWTDOMAIN服务器在其它域中涉及的所有服务器都设置为使用公共XID时,GWTDOMAIN服务器可以被配置为使用公共XID。
根据本发明的实施例,远程域B 1952可以将公共XID 1911存储为导入的XID1913。如图19所示,如果导入的XID 1913存在并且与导入的XID 1913相关联的BQUAL A1931有效,则分支B 1923(即公共-XID组)可以使用导入的XID 1943用于访问数据库。
根据本发明的实施例,基于数据库实例感知,当域间事务涉及单个RM实例时,***也可以在处理域间事务中利用一阶段提交(1PC)模型。
图20示出了根据本发明实施例的用于利用公共XID在事务环境中处理全局事务的示例性流程图。如图20所示,在步骤2001处,用于全局事务的协调器可以将公共事务标识符和用于资源管理器实例的信息传播到事务环境中全局事务的一个或多个参与者。然后,在步骤2002处,***允许与协调器共享资源管理器实例的所述一个或多个参与者使用公共事务标识符。此外,在步骤2003处,协调器可以利用一个事务分支为共享资源管理器实例的所述一个或多个参与者处理全局事务。
根据本发明的实施例,提供了用于在事务环境中支持事务处理的方法,包括:将请求路由到事务服务器,其中事务服务器连接到资源管理器(RM)实例;将亲密度上下文分配给事务服务器,其中亲密度上下文指示事务服务器与之相关联的RM实例;以及基于亲密度上下文将与该请求相关的一个或多个后续请求路由到事务服务器。
根据本发明的实施例,该方法还包括:允许所述RM实例是集群数据库中的实例。
根据本发明的实施例,该方法还包括:允许所述请求和所述一个或多个后续请求与全局事务相关联。
根据本发明的实施例,该方法还包括:利用亲密度路由策略路由所述一个或多个后续请求,其中亲密度路由策略基于RM名称、实例名称和服务名称。
根据本发明的实施例,该方法还包括:允许所述请求和所述一个或多个后续请求与客户端上下文相关联。
根据本发明的实施例,该方法还包括:在发送消息之前,经由事务服务器在该消息中包括亲密度上下文。
根据本发明的实施例,该方法还包括:基于从另一事务服务器接收到的消息更新事务服务器中的亲密度上下文。
根据本发明的实施例,该方法还包括:利用亲密度上下文串将亲密度上下文从事务域转移到另一事务域。
根据本发明的实施例,该方法还包括:利用连接器将亲密度上下文从事务***转移到应用服务器。
根据本发明的实施例,该方法还包括:利用连接器从应用服务器接收亲密度上下文。
根据本发明的实施例,计算机程序包括当由***执行时使***执行前述方法的方法的指令。
根据本发明的实施例,计算机程序包括当由***执行时使***执行前述方法的方法的指令。根据本发明的实施例,提供了用于支持在事务中间件环境中处理全局事务的***,包括:一个或多个微处理器;事务***,其在所述一个或多个微处理器上运行,其中事务***操作来执行包括以下各项的步骤:将请求路由到事务服务器,其中事务服务器连接到资源管理器(RM)实例;将亲密度上下文分配给事务服务器,其中亲密度上下文指示事务服务器与之相关联的RM实例;以及基于亲密度上下文将与请求相关的一个或多个后续请求路由到事务服务器。
根据本发明的实施例,在上述***中,所述RM实例是集群数据库中的实例。
根据本发明的实施例,在上述***中,所述请求和所述一个或多个后续请求与全局事务相关联。
根据本发明的实施例,在上述***中,事务***操作来使用亲密度路由策略路由所述一个或多个后续请求,其中亲密度路由策略基于RM名称、实例名称和服务名称。
根据本发明的实施例,在上述***中,所述请求和所述一个或多个后续请求与客户端上下文相关联。
根据本发明的实施例,在上述***中,事务***操作来在发送消息之前在该消息中包括亲密度上下文。
根据本发明的实施例,在上述***中,事务***操作来基于从另一事务服务器接收到的消息更新事务服务器中的亲密度上下文。
根据本发明的实施例,在上述***中,事务***操作来使用亲密度上下文串将亲密度上下文从事务域转移到另一事务域。
根据本发明的实施例,在上述***中,事务***操作来使用连接器来进行以下中的至少一个:将亲密度上下文从事务***转移到应用服务器,以及从应用服务器接收亲密度上下文。
根据本发明的实施例,提供了具有存储在其上的指令的非暂时性机器可读存储介质,当所述指令被执行时使得***执行包括以下各项的步骤:将请求路由到事务服务器,其中事务服务器连接到资源管理器(RM)实例;将亲密度上下文分配给事务服务器,其中亲密度上下文指示事务服务器与之相关联的RM实例;以及基于亲密度上下文将与该请求相关的一个或多个后续请求路由到事务服务器。
根据本发明的实施例,提供了用于在事务环境中支持事务处理的方法,包括:经由事务服务器从与一个或多个RM实例相关联的数据源接收资源管理器(RM)实例信息,其中接收到的实例信息允许事务服务器感知事务服务器当前连接到哪个RM实例;将接收到的实例信息保存到与事务服务器相关联的一个或多个表中;以及允许事务服务器基于保存在所述一个或多个表中的实例信息处理全局事务。
根据本发明的实施例,该方法还包括:将所述一个或多个表存储在可由多个事务服务器访问的共享存储器中。
根据本发明的实施例,该方法还包括:向RM注册回调操作,其中当回调操作被触发时,事件服务器操作来从RM检索实例信息。
根据本发明的实施例,该方法还包括:允许回调操作被静态或动态地注册。
根据本发明的实施例,该方法还包括:将接收到的实例信息存储在上下文中,并且启用指示实例信息的接收的标志。
根据本发明的实施例,该方法还包括:在执行事务时在一个或多个检查点处检查标志,以及当实例信息被更新时更新保存在所述一个或多个表中的实例信息。
根据本发明的实施例,该方法还包括:允许所述一个或多个表包括以下中的至少一个:存储一个或多个唯一数据库名称的RM表、存储一个或多个实例名称的实例表、以及存储一个或多个数据库服务名称的服务表。
根据本发明的实施例,该方法还包括:允许所述一个或多个表包括包含一个或多个服务器表条目的服务器表。
根据本发明的实施例,该方法还包括:允许每个所述服务器表条目包含与事务服务器当前连接到的RM实例相关联的实例标识符(ID)。
根据本发明的实施例,该方法还包括:允许每个所述实例ID是具有多个部分的整数。
根据本发明的实施例,计算机程序包括当由***执行时使***执行前述方法的方法的指令。
根据本发明的实施例,提供了用于在事务环境中支持事务处理的***,包括:一个或多个微处理器;以及事务服务器,其在所述一个或多个微处理器上运行,其中事务服务器操作来执行包括以下各项的步骤:从与一个或多个RM实例相关联的数据源接收资源管理器(RM)实例信息,其中接收到的实例信息允许事务服务器感知事务服务器当前连接到的RM实例;将接收到的实例信息保存到与事务服务器相关联的一个或多个表中;以及基于保存在所述一个或多个表中的实例信息处理全局事务。
根据本发明的实施例,在上述***中,事务服务器操作来将所述一个或多个表存储在可由多个事务服务器访问的共享存储器中。
根据本发明的实施例,在上述***中,事务服务器操作来向RM注册回调操作,其中当回调操作被触发时,事务服务器操作来从RM检索实例信息。
根据本发明的实施例,在上述***中,回调操作适于静态或动态地被注册。
根据本发明的实施例,在上述***中,事务服务器操作来将接收到的实例信息存储在上下文中,并且启用指示实例信息的接收的标志。
根据本发明的实施例,在上述***中,在执行事务时,事务服务器操作来:在一个或多个检查点处检查标志,并且当实例信息被更新时,更新保存在一个或多个表中的实例信息。
根据本发明的实施例,在上述***中,所述一个或多个表包括以下中的至少一个:存储一个或多个唯一数据库名称的RM表、存储一个或多个实例名称的实例表、以及存储一个或多个数据库服务名称的服务表。
根据本发明的实施例,在上述***中,所述一个或多个表包括包含一个或多个服务器表条目的服务器表。
根据本发明的实施例,在上述***中,每个所述服务器表条目包含实例ID,其与事务服务器当前连接到的RM实例相关联,并且其中所述实例ID是具有多个部分的整数。
根据本发明的实施例,一种其上存储有指令的非暂时性机器可读存储介质,当所述指令被执行时使***执行包括以下各项的步骤:经由事务服务器从与一个或多个RM实例相关联的数据源接收资源管理器(RM)实例信息,其中接收到的实例信息允许事务服务器感知事务服务器当前连接到哪个RM实例;将接收到的实例信息保存到与事务服务器相关联的一个或多个表中;以及允许事务服务器基于保存在所述一个或多个表中的实例信息处理全局事务。
根据本发明的实施例,一种计算机程序包括当由***执行时使***执行用于执行前述方法的方法的方法的指令。
本发明的许多特征可以在硬件、软件、固件或其组合中、利用硬件、软件、固件或其组合、或在硬件、软件、固件或其组合的辅助下执行。因此,本发明的特征可以利用处理***(例如,包括一个或多个处理器)来实现。
技术人员将认识到,根据任何给定实现的特定情况和要求,上述特征可以适当地彼此组合和/或与所附权利要求中限定的特征组合。
本发明的特征可以在计算机程序产品中、利用计算机程序产品、或在计算机程序产品的辅助下实现,其中计算机程序产品是具有存储在其上/其中可用来编程处理***以执行本文给出的任何特征的指令的存储介质或计算机可读介质。存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器和磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存存储器设备、磁卡或光卡、纳米***(包括分子存储器IC)或适于存储指令和/或数据的任何类型的介质或设备。
存储在任何一个机器可读介质上,本发明的特征可以结合在软件和/或固件中,用于控制处理***的硬件,并且用于使处理***能够与利用本发明的结果的其它机制交互。这种软件或固件可以包括但不限于应用代码、设备驱动器、操作***和执行环境/容器。
本发明的特征还可以利用例如诸如专用集成电路(ASIC)的硬件部件在硬件中实现。实现硬件状态机以便执行本文所描述的功能对相关领域的技术人员将是显而易见的。
此外,本发明可以利用包括一个或多个处理器、存储器和/或根据本公开内容的教导编程的计算机可读存储介质的一个或多个常规通用或专用数字计算机、计算设备、机器或微处理器来方便地实现。如对软件领域技术人员将显而易见的,基于本公开内容的教导,适当的软件编码可以容易地由熟练的程序员准备。
虽然以上已经描述了本发明的各种实施例,但是应当理解,它们是作为例子而不是限制而给出。对于相关领域技术人员将显而易见的是,在不脱离本发明的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。
以上已经借助于示出指定功能的执行及其关系的功能构建块来描述本发明。为了方便描述,这些功能构建块的边界在本文往往被任意地定义。只要适当地执行指定功能及其关系,就可以定义可替代的边界。任何此类可替代的边界因此在本发明的范围和精神之内。
出于说明和描述的目的提供了本发明的前述描述。它并不旨在穷举或将本发明限定到所公开的精确形式。本发明的宽度和范围不应受到任何上述示例性实施例的限制。许多修改和变化对本领域技术人员将是显而易见的。修改和变化包括所公开特征的任何相关组合。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域其它技术人员能够理解本发明的各种实施例和具有适于预期的特定用途的各种修改。意图是本发明的范围由所附权利要求及其等同物来限定。

Claims (21)

1.一种用于在事务环境中支持事务处理的方法,包括:
经由用于全局事务的协调器向所述事务环境中所述全局事务的一个或多个参与者传播公共事务标识符和用于资源管理器实例的信息;
允许与所述协调器共享所述资源管理器实例的所述一个或多个参与者使用所述公共事务标识符;以及
利用一个事务分支经由所述协调器为共享所述资源管理器实例的所述一个或多个参与者处理所述全局事务。
2.如权利要求1所述的方法,还包括:
利用事务组中的事务管理器作为用于所述全局事务的所述协调器。
3.如权利要求2所述的方法,还包括:
利用与所述事务组中的所述事务管理器相关联的事务标识符作为所述公共事务标识符。
4.如任一前述权利要求所述的方法,还包括:
允许所述资源管理器实例与集群数据库相关联。
5.如任一前述权利要求所述的方法,还包括:
经由所述协调器为所述一个或多个参与者提交或回滚所述全局事务。
6.如任一前述权利要求所述的方法,还包括:
利用另一个事务分支来为不共享所述资源管理器实例的另一个参与者处理所述全局事务。
7.如任一前述权利要求所述的方法,还包括:
当在所述全局事务中涉及的所有参与者共享所述资源管理器实例时,直接在所述资源管理器实例上调用一阶段提交操作。
8.如任一前述权利要求所述的方法,还包括:
向远程节点上的参与者发送忘记请求以便释放远程事务资源。
9.如任一前述权利要求所述的方法,还包括:
允许在所述全局事务涉及不同域中的多个参与者。
10.如任一前述权利要求所述的方法,还包括:
经由到远程域的网关接收所述公共事务标识符和用于所述资源管理器实例的标识信息。
11.一种包括程序指令的计算机程序,当所述程序指令被***执行时使得所述***执行任一前述权利要求所述的方法。
12.一种用于在事务环境中支持事务处理的***,包括:
一个或多个微处理器;
用于全局事务的协调器,其在所述一个或多个微处理器上运行,其中所述协调器操作来执行包括以下各项的步骤:
将公共事务标识符和用于资源管理器实例的信息传播到所述事务环境中所述全局事务的一个或多个参与者;
允许与所述协调器共享所述资源管理器实例的所述一个或多个参与者使用所述公共事务标识符;以及
利用一个事务分支为共享所述资源管理器实例的所述一个或多个参与者处理所述全局事务。
13.如权利要求12所述的***,其中:
用于所述全局事务的所述协调器是事务组中的事务管理器。
14.如权利要求13所述的***,其中:
与所述事务组中的所述事务管理器相关联的事务标识符被用作所述公共事务标识符。
15.如权利要求12至14中任何一项所述的***,其中:
所述资源管理器实例与集群数据库相关联。
16.如权利要求12至15中任何一项所述的***,其中:
所述协调器操作来为所述一个或多个参与者提交或回滚所述全局事务。
17.如权利要求12至16中任何一项所述的***,其中:
另一个事务分支被用来为不共享所述资源管理器实例的另一个参与者处理所述全局事务。
18.如权利要求12至17中任何一项所述的***,其中:
当在所述全局事务中涉及的所有参与者共享所述资源管理器实例时,直接在所述资源管理器实例上调用一阶段提交操作。
19.如权利要求12至18中任何一项所述的***,其中:
所述协调器操作来向远程节点上的参与者发送忘记请求,以便释放远程事务资源。
20.如权利要求12至19中任何一项所述的***,其中:
在所述全局事务中涉及不同域中的多个参与者。
21.一种其上存储有指令的非暂时性机器可读存储介质,当所述指令被执行时使***执行包括以下各项的步骤:
经由全局事务的协调器向事务环境中的所述全局事务的一个或多个参与者传播公共事务标识符和用于资源管理器实例的信息;
允许与所述协调器共享所述资源管理器实例的所述一个或多个参与者使用所述公共事务标识符;以及
利用一个事务分支经由所述协调器为共享所述资源管理器实例的所述一个或多个参与者处理所述全局事务。
CN201580022700.3A 2014-04-28 2015-03-27 用于在事务***中支持事务处理的方法和*** Active CN106255956B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201461985135P 2014-04-28 2014-04-28
US61/985,135 2014-04-28
US14/587,468 2014-12-31
US14/587,468 US9524186B2 (en) 2014-04-28 2014-12-31 System and method for supporting common transaction identifier (XID) optimization based on resource manager (RM) instance awareness in a transactional environment
US14/587,476 2014-12-31
US14/587,474 US9542220B2 (en) 2014-04-28 2014-12-31 System and method for supporting resource manager (RM) instance awareness in a transactional environment
US14/587,476 US9600324B2 (en) 2014-04-28 2014-12-31 System and method for supporting transaction affinity based on resource manager (RM) instance awareness in a transactional environment
US14/587,474 2014-12-31
PCT/US2015/023120 WO2015167724A1 (en) 2014-04-28 2015-03-27 System and method for supporting common transaction identifier (xid) optimization and transaction affinity based on resource manager (rm) instance awareness in a transactional environment

Publications (2)

Publication Number Publication Date
CN106255956A true CN106255956A (zh) 2016-12-21
CN106255956B CN106255956B (zh) 2019-08-23

Family

ID=54334870

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580022700.3A Active CN106255956B (zh) 2014-04-28 2015-03-27 用于在事务***中支持事务处理的方法和***

Country Status (6)

Country Link
US (4) US9600324B2 (zh)
EP (1) EP3138000B1 (zh)
JP (1) JP6545709B2 (zh)
KR (1) KR102340296B1 (zh)
CN (1) CN106255956B (zh)
WO (1) WO2015167724A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107623703A (zh) * 2016-07-13 2018-01-23 中兴通讯股份有限公司 全局事务标识gtid的同步方法、装置及***
CN109426552A (zh) * 2017-09-05 2019-03-05 阿里巴巴集团控股有限公司 事务处理方法、装置和***以及电子设备
CN109684045A (zh) * 2017-10-18 2019-04-26 阿里巴巴集团控股有限公司 事务消息的处理方法、装置及电子设备
CN110019443A (zh) * 2017-09-08 2019-07-16 阿里巴巴集团控股有限公司 非关系型数据库事务处理方法、装置及电子设备
CN110300958A (zh) * 2017-01-13 2019-10-01 甲骨文国际公司 用于分布式事务中间件环境中的条件调用路径监视的***和方法
CN110471746A (zh) * 2019-08-22 2019-11-19 中国工商银行股份有限公司 一种分布式事务回调方法、装置及***
CN113574519A (zh) * 2019-02-04 2021-10-29 艾派克斯数据解决方案有限责任公司 在多个不同的记录***(sor)和相关方法之间提供区块链促进语义互操作性的计算***
CN117112149A (zh) * 2023-10-24 2023-11-24 苔花科迈(西安)信息技术有限公司 一种矿区矿井业务流程联通方法、装置、介质及设备

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105900059B (zh) 2014-01-21 2019-06-07 甲骨文国际公司 用于在应用服务器、云或其它环境中支持多租户的***和方法
US9600324B2 (en) 2014-04-28 2017-03-21 Oracle International Corporation System and method for supporting transaction affinity based on resource manager (RM) instance awareness in a transactional environment
KR102437664B1 (ko) * 2014-09-26 2022-08-29 오라클 인터내셔날 코포레이션 멀티테넌트 어플리케이션 서버 환경에서 트랜잭션 복구를 위한 시스템 및 방법
US9519509B2 (en) 2014-10-21 2016-12-13 Oracle International Corporation System and method for supporting transaction affinity based request handling in a middleware environment
US10558488B2 (en) * 2017-01-06 2020-02-11 International Business Machines Corporation Sharing transaction contexts in an optimized colocation of java and non-java language applications
CN109040272A (zh) * 2018-08-16 2018-12-18 北京中科梧桐网络科技有限公司 一种java统一缓存处理框架模型
CN109783204A (zh) * 2018-12-28 2019-05-21 咪咕文化科技有限公司 一种分布式事务处理方法、装置及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182086B1 (en) * 1998-03-02 2001-01-30 Microsoft Corporation Client-server computer system with application recovery of server applications and client applications
US6671686B2 (en) * 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
CN1809815A (zh) * 2003-05-01 2006-07-26 国际商业机器公司 管理锁定和事务
US7337441B2 (en) * 2001-07-17 2008-02-26 Bea Systems, Inc. System and method for prepreparing a transaction process involving a chain of servers in a circular flow
CN101661403A (zh) * 2009-09-17 2010-03-03 上海交通大学 基于替代服务模型的实时网格事务管理***
US8538931B2 (en) * 2006-04-28 2013-09-17 International Business Machines Corporation Protecting the integrity of dependent multi-tiered transactions
CN103546440A (zh) * 2012-07-16 2014-01-29 上海宝信软件股份有限公司 一种客户端发起事务的事务实现方法和***

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5283897A (en) * 1990-04-30 1994-02-01 International Business Machines Corporation Semi-dynamic load balancer for periodically reassigning new transactions of a transaction type from an overload processor to an under-utilized processor based on the predicted load thereof
US5864679A (en) * 1993-09-06 1999-01-26 Kabushiki Kaisha Toshiba Transaction routing in a multiple processor system using an extracted transaction feature parameter and transaction historical data
US6424992B2 (en) 1996-12-23 2002-07-23 International Business Machines Corporation Affinity-based router and routing method
US7076784B1 (en) * 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6209018B1 (en) 1997-11-13 2001-03-27 Sun Microsystems, Inc. Service framework for a distributed object network system
US6298356B1 (en) 1998-01-16 2001-10-02 Aspect Communications Corp. Methods and apparatus for enabling dynamic resource collaboration
US6209038B1 (en) * 1999-01-13 2001-03-27 International Business Machines Corporation Technique for aggregate transaction scope across multiple independent web requests
US6671704B1 (en) * 1999-03-11 2003-12-30 Hewlett-Packard Development Company, L.P. Method and apparatus for handling failures of resource managers in a clustered environment
US6745387B1 (en) 1999-06-14 2004-06-01 Sun Microsystems, Inc. Method for using a transaction service synchronization interface to perform internal state clean up
US20030177182A1 (en) * 1999-06-14 2003-09-18 International Business Machines Corporation Ensuring a given transactional unit of work arrives at an appropriate server instance
US6560609B1 (en) * 1999-06-14 2003-05-06 International Business Machines Corporation Delegating instance management functions to underlying resource managers
US7140025B1 (en) * 1999-11-16 2006-11-21 Mci, Llc Method and apparatus for providing a real-time message routing communications manager
US6922724B1 (en) 2000-05-08 2005-07-26 Citrix Systems, Inc. Method and apparatus for managing server load
US9800608B2 (en) 2000-09-25 2017-10-24 Symantec Corporation Processing data flows with a data flow processor
US6823514B1 (en) 2000-11-14 2004-11-23 International Business Machines Corporation Method and system for caching across multiple contexts
US20020143965A1 (en) * 2001-04-03 2002-10-03 International Business Machines Corporation Server application initiated affinity within networks performing workload balancing
US7426730B2 (en) * 2001-04-19 2008-09-16 Wre-Hol Llc Method and system for generalized and adaptive transaction processing between uniform information services and applications
US7213049B2 (en) 2001-07-17 2007-05-01 Bea Systems, Inc. System and method for transaction processing with transaction property feature
US6799172B2 (en) * 2001-08-28 2004-09-28 International Business Machines Corporation Method and system for removal of resource manager affinity during restart in a transaction processing system
US7376953B2 (en) * 2001-10-29 2008-05-20 Hewlett-Packard Development Company, L.P. Apparatus and method for routing a transaction to a server
WO2004077259A2 (en) * 2003-02-24 2004-09-10 Bea Systems Inc. System and method for server load balancing and server affinity
US7584474B2 (en) * 2003-02-25 2009-09-01 Bea Systems, Inc. Systems and methods for transaction chaining
JP4311059B2 (ja) * 2003-03-26 2009-08-12 株式会社日立製作所 トランザクション制御方法
US7640545B2 (en) * 2003-07-14 2009-12-29 Sun Microsytems, Inc. Transaction manager freezing
US7562145B2 (en) * 2003-08-28 2009-07-14 International Business Machines Corporation Application instance level workload distribution affinities
US7284018B1 (en) 2003-10-15 2007-10-16 Sun Microsystems, Inc. Logless transaction coordination
US7676810B2 (en) * 2004-06-03 2010-03-09 Sap Ag Identification of execution context
US9262490B2 (en) * 2004-08-12 2016-02-16 Oracle International Corporation Adaptively routing transactions to servers
JP4676825B2 (ja) * 2005-06-29 2011-04-27 株式会社日立製作所 プログラム制御方法、計算機および計算機制御プログラム
US8270410B2 (en) 2005-08-04 2012-09-18 Microsoft Corporation Sampling techniques
US7814065B2 (en) 2005-08-16 2010-10-12 Oracle International Corporation Affinity-based recovery/failover in a cluster environment
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US7996837B2 (en) 2006-05-03 2011-08-09 Oracle International Corporation Recovery mechanism for transactions
US8103773B2 (en) * 2007-01-19 2012-01-24 Cisco Technology, Inc. Transactional application processing in a distributed environment
US9270781B2 (en) * 2007-02-15 2016-02-23 Citrix Systems, Inc. Associating virtual machines on a server computer with particular users on an exclusive basis
US20080243865A1 (en) 2007-03-28 2008-10-02 Oracle International Corporation Maintaining global state of distributed transaction managed by an external transaction manager for clustered database systems
US7937611B2 (en) 2007-04-30 2011-05-03 Sap Ag Method, system and machine accessible medium of a reconnect mechanism in a distributed system (cluster-wide reconnect mechanism)
US8463894B2 (en) * 2007-06-08 2013-06-11 Oracle International Corporation Performance monitoring web console for distributed transaction service
US8391295B2 (en) 2007-07-31 2013-03-05 Oracle International Corporation Temporal affinity-based routing of workloads
US8336053B2 (en) 2007-10-15 2012-12-18 International Business Machines Corporation Transaction management
US20090157766A1 (en) 2007-12-18 2009-06-18 Jinmei Shen Method, System, and Computer Program Product for Ensuring Data Consistency of Asynchronously Replicated Data Following a Master Transaction Server Failover Event
US8447859B2 (en) 2007-12-28 2013-05-21 International Business Machines Corporation Adaptive business resiliency computer system for information technology environments
US8818934B2 (en) * 2008-03-13 2014-08-26 Oracle International Corporation Transparent support for distributed transactions in a clustered disk-sharing database environment
US8131872B2 (en) 2008-05-30 2012-03-06 International Business Machines Corporation Affinity-based transaction processing
CN102713850B (zh) * 2010-01-11 2015-11-25 国际商业机器公司 工作负载管理器及其使用的方法
US8499298B2 (en) * 2010-01-28 2013-07-30 International Business Machines Corporation Multiprocessing transaction recovery manager
US20110252127A1 (en) * 2010-04-13 2011-10-13 International Business Machines Corporation Method and system for load balancing with affinity
US8484341B2 (en) * 2010-06-30 2013-07-09 International Business Machines Corporation Organizing individual java client request flows into a single server transaction
US8738961B2 (en) 2010-08-17 2014-05-27 International Business Machines Corporation High-availability computer cluster with failover support based on a resource map
EP2500856A1 (en) * 2011-03-15 2012-09-19 Amadeus S.A.S. Method and system for providing a session involving a plurality of software applications
US9715412B2 (en) 2011-03-25 2017-07-25 Oracle International Corporation System and method for supporting session management in a distributed transactional service system
US8732191B2 (en) 2011-06-27 2014-05-20 Oracle International Corporation System and method for improving application connectivity in a clustered database environment
US8539490B2 (en) * 2011-07-21 2013-09-17 Oracle International Corporation System and method for providing dynamic transaction optimizations
US8898271B2 (en) 2011-09-29 2014-11-25 Oracle International Corporation System and method for supporting accurate load balancing in a transactional middleware machine environment
US9760584B2 (en) 2012-03-16 2017-09-12 Oracle International Corporation Systems and methods for supporting inline delegation of middle-tier transaction logs to database
US9389905B2 (en) * 2012-03-16 2016-07-12 Oracle International Corporation System and method for supporting read-only optimization in a transactional middleware environment
US9027026B2 (en) 2012-11-09 2015-05-05 Sap Se Managing transactions within an application server
WO2014197963A1 (en) 2013-06-13 2014-12-18 Tsx Inc. Failover system and method
US9798598B2 (en) 2013-11-26 2017-10-24 International Business Machines Corporation Managing faults in a high availability system
US10325032B2 (en) * 2014-02-19 2019-06-18 Snowflake Inc. Resource provisioning systems and methods
US9600324B2 (en) 2014-04-28 2017-03-21 Oracle International Corporation System and method for supporting transaction affinity based on resource manager (RM) instance awareness in a transactional environment

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182086B1 (en) * 1998-03-02 2001-01-30 Microsoft Corporation Client-server computer system with application recovery of server applications and client applications
US6671686B2 (en) * 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US7337441B2 (en) * 2001-07-17 2008-02-26 Bea Systems, Inc. System and method for prepreparing a transaction process involving a chain of servers in a circular flow
CN1809815A (zh) * 2003-05-01 2006-07-26 国际商业机器公司 管理锁定和事务
US8538931B2 (en) * 2006-04-28 2013-09-17 International Business Machines Corporation Protecting the integrity of dependent multi-tiered transactions
CN101661403A (zh) * 2009-09-17 2010-03-03 上海交通大学 基于替代服务模型的实时网格事务管理***
CN103546440A (zh) * 2012-07-16 2014-01-29 上海宝信软件股份有限公司 一种客户端发起事务的事务实现方法和***

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107623703A (zh) * 2016-07-13 2018-01-23 中兴通讯股份有限公司 全局事务标识gtid的同步方法、装置及***
CN110300958A (zh) * 2017-01-13 2019-10-01 甲骨文国际公司 用于分布式事务中间件环境中的条件调用路径监视的***和方法
CN110300958B (zh) * 2017-01-13 2023-04-18 甲骨文国际公司 用于分布式事务中间件环境中的条件调用路径监视的***和方法
US11256536B2 (en) 2017-09-05 2022-02-22 Alibaba Group Holding Limited Method and system for processing transactions using a transaction coordinator
CN109426552A (zh) * 2017-09-05 2019-03-05 阿里巴巴集团控股有限公司 事务处理方法、装置和***以及电子设备
WO2019047737A1 (zh) * 2017-09-05 2019-03-14 阿里巴巴集团控股有限公司 事务处理方法、装置和***以及电子设备
CN110019443A (zh) * 2017-09-08 2019-07-16 阿里巴巴集团控股有限公司 非关系型数据库事务处理方法、装置及电子设备
CN109684045A (zh) * 2017-10-18 2019-04-26 阿里巴巴集团控股有限公司 事务消息的处理方法、装置及电子设备
CN109684045B (zh) * 2017-10-18 2023-04-28 阿里巴巴集团控股有限公司 事务消息的处理方法、装置及电子设备
CN113574519A (zh) * 2019-02-04 2021-10-29 艾派克斯数据解决方案有限责任公司 在多个不同的记录***(sor)和相关方法之间提供区块链促进语义互操作性的计算***
CN110471746A (zh) * 2019-08-22 2019-11-19 中国工商银行股份有限公司 一种分布式事务回调方法、装置及***
CN117112149A (zh) * 2023-10-24 2023-11-24 苔花科迈(西安)信息技术有限公司 一种矿区矿井业务流程联通方法、装置、介质及设备
CN117112149B (zh) * 2023-10-24 2024-02-06 苔花科迈(西安)信息技术有限公司 一种矿区矿井业务流程联通方法、装置、介质及设备

Also Published As

Publication number Publication date
US9542220B2 (en) 2017-01-10
KR20160147909A (ko) 2016-12-23
US9524186B2 (en) 2016-12-20
EP3138000B1 (en) 2018-09-12
US9977694B2 (en) 2018-05-22
JP2017514239A (ja) 2017-06-01
US20150309834A1 (en) 2015-10-29
US20170153910A1 (en) 2017-06-01
US9600324B2 (en) 2017-03-21
US20150309837A1 (en) 2015-10-29
KR102340296B1 (ko) 2021-12-17
JP6545709B2 (ja) 2019-07-17
US20150309835A1 (en) 2015-10-29
EP3138000A1 (en) 2017-03-08
CN106255956B (zh) 2019-08-23
WO2015167724A1 (en) 2015-11-05

Similar Documents

Publication Publication Date Title
CN106255956A (zh) 基于事务环境中的资源管理器实例感知支持公共事务标识符优化和事务亲密度的***和方法
CN111290854B (zh) 任务管理方法、装置、***、计算机存储介质及电子设备
US10091333B2 (en) System and method for supporting a bypass-domain model for across-domain messaging in a transactional middleware machine environment
AU2012228693B2 (en) Method and system for synchronization mechanism on multi-server reservation system
US9665400B2 (en) Method and system for distributed task dispatch in a multi-application environment based on consensus
CN104272259B (zh) 用于在事务中间件机器环境中支持基于版本的路由的***和方法
CN103827832B (zh) 用于在事务中间件机器环境中持久化事务记录的***与方法
US20160065498A1 (en) Distributed transaction subsystem
US9830333B1 (en) Deterministic data replication with conflict resolution
TW201229795A (en) Web service patterns for globally distributed service fabric
US20120239700A1 (en) Associative object model for composite entity information
CN105978744A (zh) 一种资源分配方法、装置及***
CN112272228A (zh) 分布式注册中心架构
US20240256365A1 (en) Streaming data to consumers based on consumer identity
US20240256564A1 (en) Using different event-distribution policies to stream event data to different event consumers
US20240256366A1 (en) Streaming event data to different consumer instances of one event consumer during failure of a consumer instance’s ability to process the event data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant