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

文档序号:12481400阅读:328来源:国知局
基于事务环境中的资源管理器实例感知支持公共事务标识符优化和事务亲密度的系统和方法与流程

本专利文档的公开内容的一部分包含受版权保护的素材。版权拥有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现的那样进行传真复制,但是除此之外在任何情况下都保留所有版权。

技术领域

本发明一般而言涉及计算机系统和软件,并且具体而言涉及事务系统。



背景技术:

事务中间件系统或面向事务的中间件包括可以处理组织内的各种事务的企业应用服务器。随着诸如高性能网络和多处理器计算机的新技术的发展,需要进一步改进事务中间件的性能。这些是本发明的实施例旨在解决的一般领域。



技术实现要素:

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

本文描述了可以支持事务环境中的事务处理的系统和方法。事务系统操作来将请求路由到事务服务器,其中事务服务器连接到资源管理器(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和以太网网络、连同应用服务器或中间件环境(诸如WebLogic Suite)的组合,以提供包括可以被快速供给并且可按需缩放的大规模并行存储器中网格的完整Java EE应用服务器集合体。根据实施例,该系统可以被部署为提供应用服务器网格、存储区域网络和InfiniBand(IB)网络的全、半或四分之一机架或其它配置。中间件机器软件可以提供应用服务器、中间件和其它功能,诸如像WebLogic Server、JRockit或Hotspot JVM、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库OCI API并且获得相关的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可以通过简单地比较相关位来检查实例ID 322中的实例信息。因此,系统可以避免由于串比较而导致的性能问题,因为串比较操作比位比较操作更昂贵。

图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)(例如,TM A-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 AC 1531-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和实例ID 1641。

另外,参与者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和实例ID 1741的各种类型的信息传播到不同的参与事务服务器(例如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和GRTID 1720的其自己的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处,服务器A 1804可以在Tuxedo BB A 1808中创建相关的全局事务表条目(GTTE)。

此外,在步骤1813处,客户端1801可以通过调用函数调用tpcall(服务B)来访问服务器B 1805上的另一服务(例如服务B)。在步骤1814处,服务器A 1804可以将关于组A 1802的相关信息添加到Tuxedo BB B 1809中。此外,在步骤1815处,客户端1801可以将关于组B 1803的相关信息添加到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。本地域A 1951中的协调器TM A 1901可以将事务标识符(XID)1911和基于实例ID 1941的实例信息传播到远程域B 1952。

根据本发明的实施例,由于不同的服务器引导顺序,在域A 1951内唯一的实例ID 1941在不同域(例如域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存储为导入的XID 1913。如图19所示,如果导入的XID 1913存在并且与导入的XID 1913相关联的BQUAL A 1931有效,则分支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)的硬件部件在硬件中实现。实现硬件状态机以便执行本文所描述的功能对相关领域的技术人员将是显而易见的。

此外,本发明可以利用包括一个或多个处理器、存储器和/或根据本公开内容的教导编程的计算机可读存储介质的一个或多个常规通用或专用数字计算机、计算设备、机器或微处理器来方便地实现。如对软件领域技术人员将显而易见的,基于本公开内容的教导,适当的软件编码可以容易地由熟练的程序员准备。

虽然以上已经描述了本发明的各种实施例,但是应当理解,它们是作为例子而不是限制而给出。对于相关领域技术人员将显而易见的是,在不脱离本发明的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。

以上已经借助于示出指定功能的执行及其关系的功能构建块来描述本发明。为了方便描述,这些功能构建块的边界在本文往往被任意地定义。只要适当地执行指定功能及其关系,就可以定义可替代的边界。任何此类可替代的边界因此在本发明的范围和精神之内。

出于说明和描述的目的提供了本发明的前述描述。它并不旨在穷举或将本发明限定到所公开的精确形式。本发明的宽度和范围不应受到任何上述示例性实施例的限制。许多修改和变化对本领域技术人员将是显而易见的。修改和变化包括所公开特征的任何相关组合。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域其它技术人员能够理解本发明的各种实施例和具有适于预期的特定用途的各种修改。意图是本发明的范围由所附权利要求及其等同物来限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1