本专利文档的公开的部分包含受到版权保护的素材。版权所有人不反对任何人对本专利文档或者本专利公开按照其在专利商标局的专利文件或记录中所表现的那样进行复制,但是在其他情况下无论如何都保留所有的版权。
技术领域
本发明一般而言涉及计算机系统和软件,诸如中间件,并且具体涉及支持事务性中间件机器环境。
背景技术:
事务性中间件系统或面向事务的中间件包括能够处理组织内部各种事务的企业应用服务器。随着诸如高性能网络和多处理器计算机之类的新技术的发展,存在进一步提高事务性中间件的性能的需求。这是本发明的实施例旨在针对的一般领域。
技术实现要素:
本文描述的是能够在事务性中间件机器环境中支持分布式事务锁的系统和方法。系统能够使用全局事务标识符在事务哈希表中定位哈希桶,其中事务哈希表包含多个哈希桶。然后,系统能够上锁事务哈希表中的所述哈希桶,并且在所述哈希表被解锁之前仅允许一个进程存取事务表中的一个或多个全局事务条目结构,其中所述一个或多个事务条目结构与事务哈希表中的上锁哈希桶关联。
附图说明
图1示出了根据本发明实施例的事务性中间件机器环境中的共享存储器的图示。
图2示出了根据本发明实施例的支持事务锁机制的事务性中间件机器环境的图示。
图3示出了根据本发明实施例将条目加入到事务性中间件机器环境中的全局事务表(GTT)的图示。
图4示出了根据本发明实施例从事务性中间件机器环境中的全局事务表(GTT)删除条目的图示。
图5示出了根据本发明实施例在事务性中间件机器环境中支持粒度锁机制的图示。
图6图示了根据本发明实施例在事务性中间件机器环境中支持事务锁机制的示例性流程图。
具体实施方式
本文描述的是用于在事务性中间件机器环境中支持分布式事务锁的系统和方法。
根据本发明的实施例,系统包括高性能硬件(例如,64位处理器技术)、高性能大存储器以及冗余无限带宽(InfiniBand)与以太网联网的组合,同诸如WebLogic套件的应用服务器或中间件环境一起,提供完整的Java EE应用服务器复合体,其包括能够快速配置和能够按需求缩放的大量并联存储器内网格。根据实施例,系统能够部署为全机架(rack)、半机架或四分之一机架或者其他配置,其提供应用服务器网格、储存区域网络和无限带宽(IB)网络。中间件机器软件能提供应用服务器、中间件和其他功能性,诸如例如,WebLogic Server、JRockit或者Hotpot JVM、Oracle Linux或Solaris和Oracle VM。根据实施例,系统可以包括多个计算节点、IB交换网关和储存节点或单元,经由IB网络与彼此通信。当作为机架配置实现时,机架的未使用部分可以留空或者由填充物占据。
根据本发明的实施例,本文称为“Sun Oracle Exalogic”或“Exalogic”的系统是用于托管中间件或者应用服务器软件(诸如,Oracle Middleware SW套件或WebLogic)的易于部署(easy-to-deploy)解决方案。如本文所述,根据实施例,系统是“盒中网格”,其包括一个或多个服务器、储存单元、用于储存网络的IB组织和所有托管中间件应用所需要的其他部件。通过使用例如Real Application Clusters和Exalogic Open Storage来利用大量并联网格架构能够为中间件应用的所有类型实现显著的性能。系统用线性I/O可扩展性实现提高的性能,易于使用和管理,并且实现关键任务(mission-critical)可用性和可靠性。
根据本发明的实施例,Tuxedo是软件模块的集合,其使能高性能、分布式商业应用的构建、执行和管理并且已经被多种多层应用开发工具用作事务中间件。Tuxedo是能够用于在分布式计算环境中管理分布式事务处理的中间件平台。其是用于解锁企业传统应用并且将它们推广至面向服务的架构同时实现无限制的可扩展性和基于标准的互操作性的已验证平台。
根据本发明的实施例,诸如Tuxedo系统的事务性中间件系统能够利用具有多个处理器的快速机器(诸如Exalogic中间件机器)和高性能网络连接(诸如IB网络)。
共享存储器和锁
图1示出了根据本发明实施例的事务性中间件机器环境中的共享存储器的图示。如图1所示,共享存储器数据结构110能够用于出于各种目的,诸如支持名称服务、事务管理和运行时控制,在事务性中间件机器环境100中维护信息。
例如,Tuxedo系统能够利用布告栏(BB),其是能够至少部分地被复制的分布式共享存储器。此外,Tuxedo系统允许应用被划分成共享BB的合作的客户端和服务器进程的集合。
如图1所示,共享存储器110能够包括多个事务相关部分,诸如,事务哈希表101、事务表102、全局事务控制结构103和事务日志控制结构104。
事务表102能够包含多个全局事务条目结构121-125。例如,Tuxedo中的全局事务表(GTT)102能够包括多个全局事务表条目(GTTE)121-125。全局事务条目结构的每一个能够包含关于不同全局事务的共享信息。
事务哈希表101,例如Tuxedo中的全局事务哈希表,能够用于提供到全局事务表102中不同条目的快速存取,其中能够基于全局事务标识符(GTRID)完成哈希。
全局事务控制结构103包含有关不同全局事务的各种控制信息。例如,Tuxedo中的TMGCTL结构包含能够保证GTRID的独特性的时间和计数器值(与机器ID一起)。另外,TMGCTL结构能够在新GTRID创建时使用。
事务日志控制结构104包含有关不同全局事务日志文件的各种控制信息。例如,Tuxedo中的TMTLGCTL结构包含涉及事务日志(TLOG)文件的状态的信息,并且能够在TLOG文件被更新时使用。
根据本发明的实施例,当多个进程或线程在共享存储器110上读取或写入数据时,系统能够采用锁105避免脏读取和/或脏写入。锁105能够在进程(或线程)能够存取共享存储器110时应用。因此,共享存储器110中的受保护数据在一个时间仅能由仅一个进程或线程存取。
例如,在Tuxedo中,使用用户级信号量(semaphore)保护BB,该用户级信号量是比由OS内核提供的信号量更快速的上锁机制。这个基于测试与设置(TAS)装配组件的用户信号量能够确保在关键时段到BB的不同部分的单个存取。另一方面,用户级信号量算法可能不能保证锁顺序(即,系统可能不能保证锁被切换到最早请求者)。
此外,锁105能够是递归的,即,系统允许相同进程重复地应用锁105。
优势是软件开发者不需要担心在任意给定时间特定的进程是持有(还是不持有)锁105。另外,软件开发者能够容易地将锁105改造成任何现有代码。
折中是锁105,其是巨大锁(giant-lock),可以用于以任意长度的时间段上锁大块代码。此外,软件开发者可以对应用只拥有粗粒度控制。例如,当应用程序中发生问题时,难以找出涉及锁105的根原因,因为锁105可能被应用了多次并且问题触发的位置可能在代码中距中止/死锁发生的地方很远。
此外,由于粗粒度,锁105可能例如在事务场景中创建和/或遭遇高竞争。锁105的粒度越粗,锁105可能例如在非相关进程停止/中止的可能性越高。
分布式事务锁
图2示出了根据本发明实施例的支持事务锁机制的事务性中间件机器环境的图示。如图2所示,一个或多个事务锁203-204能够用在事务性中间件机器环境200中以提高事务性能。
根据本发明的实施例,系统能够在事务哈希表201中的不同哈希桶(例如,桶211-217)上应用分别的事务锁,用于存取全局事务表(GTT)202中的不同全局事务条目结构(例如,GTTE 221-225)。每一个事务哈希链接能够使用能够基于用户级信号量的专用锁(例如,事务锁203或204)。
例如,系统能够通过例如使用GTRID 210计算哈希函数来定位哈希桶213。此外,为了操纵GTT条目213,系统能够上锁事务哈希表桶213。然后,系统能够解锁哈希表桶213并且将锁203释放给可能想存取GTT条目222的另一个进程。
此外,系统能够使用GTRID 220定位哈希桶216。为了操纵GTT条目223,系统能够上锁事务哈希表桶216。然后,系统能够解锁哈希表桶223并且将锁204释放给可能想存取GTT条目223的另一个进程。
根据本发明的实施例,事务锁203-204能够是非递归的并且系统可以仅在需要时或者在如实际一样短的时间段中试图持有事务锁203-204。
此外,为了快速知道进程目前是否持有事务哈希锁,系统能够给控制结构(例如,Tuxedo RTE)增加事务锁标记。例如,在Tuxedo中,事务锁标记能够使软件开发者容易知道在调用bblock()函数之前,是否需要解锁事务锁。另外,软件开发者能够确定地知道在请求另一个事务锁之前应用是否持有事务锁。
根据本发明的实施例,事务哈希表锁的数量可以不是固定的并且能够是大的数。例如,在Tuxedo中,GTT哈希表的大小能够是GTT的大小的两倍。
此外,如果两个或多个GTT条目落入相同哈希桶,那么不同的GTT条目能够使用相同事务锁(即,相同事务哈希表锁)。为了实现的简单,系统允许两个哈希值共享互斥量并且哈希互斥量能够放置在GTT中以避免创建额外的BB表。
根据本发明的实施例,除了事务表哈希桶213-214上的事务锁203-204之外,事务性中间件机器环境200还能够包括共享存储器上的锁205。
例如,在Tuxedo中,在分配事务表条目或解除其分配时、在增大GTRID计数器时和在增大TLOG当前页计数器时,能够持有与事务锁203-204分离的BB锁205。
此外,能够使用BB锁205保护控制结构,诸如TMGCTL和TMTLGCTL数据结构,因为这些控制结构上的操作不频繁。可替代地,允许TMGCTL和结构的每一个使用单独的锁也是可行的。
图3示出了根据本发明实施例将条目加入到事务性中间件机器环境中的全局事务表(GTT)的图示。
在步骤301,系统能够上锁事务性中间件机器环境300中的共享存储器,例如,Tuxedo BB。此外,在步骤302,系统能够创建新GTRID。另外,在步骤303,系统能够基于新GTRID创建新GTT条目。此外,在步骤304,系统能够将该GTT条目加入事务表,例如Tuxedo TMGTEE表,以及在步骤305,系统能够解锁共享存储器使得其他进程能够访问共享存储器。
然后,在步骤306,系统能够定位事务哈希表中的哈希桶(例如,使用基于GTRID的哈希),以及在步骤307,系统能够上锁事务哈希表中的该哈希桶。此外,在步骤308,系统能够将GTT条目链接到事务哈希表中的该哈希桶,以及在步骤309,系统能够解锁该哈希桶。
图4示出了根据本发明实施例从事务性中间件机器环境中的全局事务表(GTT)删除条目的图示。
在步骤401,系统能够使用事务性中间件机器环境400中的GTRID定位事务哈希表中的哈希桶,以及在步骤402,系统能够上锁事务哈希表中的哈希桶。此外,在步骤403,系统能够从事务哈希表中的哈希桶解除GTT条目链接,以及在步骤404,系统能够解锁事务哈希表中的哈希桶,使得其他进程能够再使用事务哈希表中的哈希桶。
然后,在步骤405,系统能够上锁共享存储器。在步骤406,系统能够在TMGTTE表中移除GTT条目,以及在步骤407中,系统能够解锁共享存储器,使得其他进程能够访问共享存储器。
图5示出了根据本发明实施例在事务性中间件机器环境中支持粒度锁机制的图示。如图5所示,事务性中间件机器环境500中的共享存储器508能够包括多个事务相关部分,诸如事务哈希表501(包含多个哈希桶,例如,桶511-517)、事务表502(包含多个条目,例如,GTTE 521-525)、全局事务控制503和事务日志控制504。
此外,事务性中间件机器环境500允许进程(或线程)持有多个锁,包括共享存储器508上的锁507和控制结构(诸如,全局事务控制503和事务日志控制504)上的锁506。此外,能够有一个或多个事务锁,例如,哈希桶513上的事务锁505。
根据本发明的实施例,系统能够采用粒度锁机制用于处理在不同进程使用多个锁时发生的锁依赖。
在Tuxedo中,BB锁507能够以交织方式用于不同地方。例如,在以下场景关注锁依赖。
当函数A持有BB锁时函数A能够调用函数B。然后,函数B可能再次上锁BB。此外,函数B能够(使用事务锁)存取GTTE并且调用函数C,函数C可以第三次上锁BB。
为了避免由单个进程(或线程)持有的各种锁之间的死锁,系统能够对锁应用部分安排方案(partial ordering scheme)。例如,系统能够基于范围或粒度安排不同锁。
如图5所示,具有最粗粒度的共享存储器508上的锁507能够被分配最低数字。另一方面,具有最细粒度的事务锁505能够被分配最高数字。此外,系统能够在控制结构之间安排锁506。
系统能够确保进程在任何给定时间仅能够上锁事务哈希表501中的一个哈希桶,即,当进程已经在一哈希桶上持有一个事务锁时,它不能上锁另一个哈希桶。因此,系统能够避免事务锁之间的死锁(或被分配相同数字的锁)。
此外,进程可以仅被允许获得这样的锁,该锁具有的数字高于被分配给该进程已经持有的锁的所有数字中的最高数字。
例如,在Tuxedo中,持有BB锁的线程A能够持有事务锁,因为该事务锁被分配有高于分配给BB锁的数字的数字。另一方面,持有事务锁的线程B不可持有BB锁。线程B在持有BB锁之前必须首先释放事务锁,因为该事务锁分配有高于分配给BB锁的数字。
此外,线程A可以能够在事务锁由线程B释放后获得事务锁。在线程A完成和释放事务锁和BB锁之后,线程B可以能够获得两个锁并且没有死锁地进行到完成。
因此,系统能够通过减少程序员可能无意地在系统中的不同锁之间引入死锁的可能性而提高事务性能。
图6图示了根据本发明实施例在事务性中间件机器环境中支持事务锁机制的示例性流程图。如图6所示,在步骤601,系统能够使用全局事务标识符定位事务哈希表中的哈希桶,其中事务哈希表包含多个哈希桶。然后,在步骤602,系统能够上锁事务哈希表中的所述哈希桶,以及在步骤603,在所述哈希桶被解锁前,系统仅允许一个进程存取事务表中的一个或多个全局事务条目结构,其中所述一个或多个全局事务条目结构与事务哈希表中该上锁的哈希桶关联。
本发明可以使用以下来实现:一个或多个传统的通用或专用数字计算机、计算设备、机器或者微处理器,包括一个或多个处理器、存储器和/或根据本发明的教导编程的计算机可读储存介质。如对软件领域的那些技术人员显然的,合适的软件编码能够由熟练的程序员基于本公开的教导而容易地准备。
在一些实施例中,本发明包括计算机程序产品,其是具有储存在其上/其中的指令的储存介质或计算机可读介质,所述指令能够用于编程计算机以执行本发明的任何过程。储存介质能够包括但不限于任意类型的盘(包括软盘、光盘、DVD、CD-ROM、微驱动器和磁光盘),ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适于储存指令和/或数据的任意类型的介质或设备。
本发明的前面的描述出于说明和描述的目的而提供。不是旨在是穷尽的或将本发明限制到公开的精确形式。对于本领域技术人员来说许多修改和变形是显然的。这些修改和变形包括所公开的特征的任何相关组合。所选和所述的实施例是为了最佳地说明本发明的原理及其实际应用,从而使得其他本领域技术人员能够理解本发明各种实施例并且理解适合预期特定使用的各种变形。旨在由以下权利要求和其等同物来限定本发明的范围。