减少用于分布式sip服务器环境中争用检测的消息传递的方法和系统的制作方法

文档序号:7954401阅读:292来源:国知局
专利名称:减少用于分布式sip服务器环境中争用检测的消息传递的方法和系统的制作方法
技术领域
本发明涉及会话发起协议(SIP)服务器环境中的争用检测,更具体地说,本发明涉及减少用于分布式SIP服务器环境中争用检测的消息传递的方法、系统和计算机程序产
P
ΡΠ O
背景技术
IP语音(VoIP)包括多种通过诸如因特网和蜂窝网络之类的网际协议(IP)网络传送语音通信以及多媒体会话的技术。这些技术之一是会话发起协议(SIP),该技术是一种信令协议,用于创建、修改和终止语音通信和多媒体会话。VoIP服务可包括多种功能或应用, 例如呼叫等待、呼叫转接以及合并通话(call merge)。这些应用可以实现为驻留在跨IP网络的节点中的SIP应用服务器中的SIP小服务程序(应用)。每台SIP应用服务器可包括管理VoIP应用的各种问题的容器。例如,当从另一 VoIP应用接收用于本VoIP应用消息时,所述容器便会分派专用控制线程或事务来处理该消息。此时,所述线程可访问服务器本地数据库中的数据,或者可创建和使用要存储在本地数据库中的数据。为了防止数据损坏,所述容器可锁定被访问数据,以防在处理消息之前另一控制线程访问这些数据。但是,其他SIP应用服务器中的容器不知道这些容器操作。这在分布式SIP服务器环境中会导致出现问题,在这样的环境中,一台服务器中的控制线程可能需要访问另一服务器中可能被本地控制线程锁定的数据。此外,跨多台SIP应用服务器传输有关所有容器操作的信息可涉及传输复杂的大型消息以及频繁地在容器之间传输这些消息。SIP容器的标准规范未涉及这些同步问题。

发明内容
在本发明的第一方面,一种方法在计算机基础设施中实现,所述计算机基础设施包含有形地体现在计算机可读存储介质中的计算机可执行代码,所述计算机可读存储介质包含可通过运行判定第一站点正在等待由第二站点锁定的第一对象的编程指令。所述编程指令进一步可通过运行判定第三站点正在等待由所述第一站点锁定的第二对象,以及将第一探针(probe)发送到所述第二站点以判定所述第二站点是否正在等待。接收第二探针并且该探针指示有个站点正在等待由所述第一站点锁定的对象。所述第二探针进一步指示分布式服务器环境中要解决的死锁。在本发明的另一方面,一种系统在硬件中实现,其包括可通过运行选择至少第一对象作为候选来检测和解决分布式服务器环境中的死锁,以及判定第一站点正在等待由第二站点锁定的第一对象的事务管理器。所述事务管理器进一步可通过运行判定第三站点正在等待由所述第一站点锁定的第二对象,以及将第一探针发送到所述第二站点以判定所述第二站点是否正在等待。接收第二探针并且该探针指示有个站点正在等待由所述第一站点锁定的对象。所述第二探针进一步指示分布式服务器环境中要解决的死锁。在本发明的又一方面,一种计算机程序产品包括计算机可用存储介质,所述计算机可用存储介质包含体现在存储介质中的可读程序代码,所述计算机程序产品包括至少一个可通过运行从第一站点接收第一探针以判定第二站点是否正在等待由第三站点锁定的对象的组件。所述至少一个组件进一步可通过运行判定所述第二站点正在等待由所述第三站点锁定的对象,以及将第二探针发送到所述第三站点以判定所述第三站点是否正在等
IvTo在本发明的进一步的方面,一种用于检测和解决分布式服务器环境中的死锁的计算机系统包括CPU、计算机可读存储器和计算机可读存储介质。所述系统进一步包括判定第一站点正在等待由第二站点锁定的第一对象的第一程序指令以及判定第三站点正在等待由所述第一站点锁定的第二对象的第二程序指令。第三程序指令将第一探针发送到所述第二站点以判定所述第二站点是否正在等待,以及第四程序指令接收指示有个站点正在等待由所述第一站点锁定的对象的第二探针。所述第二探针进一步指示分布式服务器环境中要解决的死锁。所述第一、第二、第三和第四程序指令存储在计算机可读存储介质中以便由 CPU通过计算机可读存储器来执行。在本发明的另一方面,一种部署用于检测和解决分布式服务器环境中的死锁的系统的方法包括提供计算机基础设施,所述计算机基础设施可通过运行获取第一站点上的本地等待图(WFG)。所述计算机基础设施进一步可通过运行根据所述第一站点上的本地WR;, 判定所述第一站点上的第一事务正在等待由第二站点上的第二事务锁定的第一对象。判定第三站点上的第三事务正在等待由所述第一站点上的所述第一事务锁定的第二对象,以及将第一探针发送到所述第二站点以判定所述第二站点是否正在等待。接收逆向探针并且该探针指示所述第二站点未在等待。所述逆向探针进一步指示分布式服务器环境中没有死锁。接收第二探针并且该探针指示有个站点正在等待由所述第一站点锁定的对象。所述第二探针进一步指示分布式服务器环境中要解决的死锁。所述计算机基础设施还可通过运行解决分布式服务器环境中的死锁,包括结束正在等待所述第一对象的所述第一站点上的所述第一事务。


下面将参考所列的多个附图,通过本发明的示例性实施例的非限制示例在详细说明中对本发明进行描述。图1是用于实现根据本发明的方面的步骤的示例性环境;图2示出根据本发明的方面在分布式会话发起协议(SIP)服务器环境中的两个事务发生死锁时的示例性方块图;图3示出根据本发明的方面分布式数据库中的包含所有对象集的示例表;图4示出根据本发明的方面站点Sn启动检测和解决分布式SIP服务器环境中的死锁的过程的示例性方块图;图5A示出根据本发明的方面的示例性流程;图5B示出根据本发明的方面的图5A中的示例性流程的继续;以及图6示出根据本发明的方面的另一示例性流程。
具体实施例方式本发明一般地涉及会话发起协议(SIP)服务器环境中的争用检测,具体地说,本发明涉及减少用于分布式SIP服务器环境中争用检测的消息传递的方法、系统和计算机程序产品。更具体地说,本发明涉及产生、计数和选择分布式数据库中的对象作为候选以便检测和解决分布式SIP服务器环境中的数据争用(例如,数据锁定问题)。根据数据库中对象的数据锁定历史以及引用此类对象的事务信息来选择候选对象。候选对象的选择还基于获取事务启动者和对象之间的依赖性以及形成此类启动者和对象的约简(较小的集合)。选择候选对象之后,本发明的方法和系统包括通过探测和逆向探测分布式SIP服务器环境中服务器或站点上的事务管理器,检测和解决涉及候选对象的数据锁定问题。具体而言,根据一个站点上的锁定对象被另一站点上的事务等待,探测(例如,查询)该一个站点上的事务管理器,以查看这两个站点之间是否存在数据锁定问题。换言之,本发明考虑了由给定事务集锁定的给定对象集发生实际数据锁定问题的可能性。有利地,本发明提供了在不必在分布式SIP服务器环境中的所有站点之间传递有关所有事务的大型复杂消息的情况下,对数据锁定问题的检测和解决。实际上,通过基于在个别站点上等待对象的事务进行探测,不必在没有相关对象和事务且因此不涉及任何数据锁定问题的站点之间传递消息。此外,通过选择候选对象,检测和解决数据锁定问题进一步仅关注相互之间通常会具有数据锁定问题的对象和事务。本发明极大地提高了分布式SIP 服务器环境中所有站点的效率和处理能力。进一步地,本发明将工作负载和事务信息以及死锁历史作为输入,获取事务指示器和对象之间的依赖性,以及形成具有高水平熵的此类对象和应用的约简。本发明使用试探法法,不仅不需要额外的等待图(WFG)来检测任何死锁,而且还减少了消息传递。这是通过根据对象和事务之间的依赖性或对于给定应用集锁定的给定对象集发生实际死锁的可能性,设置探测和逆向探测阈值,来实现的。系统环境本领域的技术人员将理解,本发明的方面可以实现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面的实施例的形式,所有这些软件和硬件方面在此通常被称为“电路”、“模块”或“系统”。此外,本发明的方面可以采取体现在一个或多个计算机可读介质(在介质中具有计算机可读程序代码)中的计算机程序产品的形式。可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于) 电、磁、光、电磁、红外线或半导体系统、装置或设备或上述任何适合的组合。计算机可读存储介质的更具体的示例(非穷举列表)可以包括以下项具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器 (EPR0M或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述任何适合的组合。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的有形介质。
计算机可读信号介质可以包括其中包含计算机可读程序代码(例如,在基带中或作为载波的一部分)的传播数据信号。此类传播信号可以采取多种形式中的任何一种,包括但不限于电磁、光或上述任何适合的组合。计算机可读信号介质可以是任何并非计算机可读存储介质以及传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的计算机可读介质。可以使用任何适当的介质(包括但不限于无线、线缆、光缆、RF等或上述任何适合的组合)来传输计算机可读介质中包含的程序代码。用于执行本发明的方面的操作的计算机程序代码可以使用一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk, C++或类似语言之类的面向对象的编程语言或者诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行,部分地在用户计算机上执行,作为独立的软件包执行,部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网 (WAN)的任何类型网络与用户的计算机相连,也可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。下面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的方面进行描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的所述指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。这些计算机程序指令也可以被存储在引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的所述指令产生一件包括实现在所述一个或多个流程图和/或方块图方块中指定的功能/操作的指令的制品。所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。图1示出用于管理根据本发明过程的环境10。就此而言,环境10包括可以执行此处所述的过程的服务器或其他计算系统12。具体而言,服务器12包括计算设备14。计算设备14可以驻留在网络基础设施或第三方服务提供者的计算设备上(图1 一般性地表示了这两种情况中的任何一种)。计算设备14还包括处理器20、存储器22A、I/0接口 M以及总线26。存储器22A 可包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。此外,所述计算设备还包括随机存取存储器(RAM)、只读存储器(ROM)和操作系统(0/S)。计算设备14与外部I/O设备/资源观以及存储系统22B进行通信。例如,I/O设备观可包括任何允许个人与计算设备14进行交互的设备(例如,用户接口 )或任何允许计算设备14使用任何类型的通信链路与一个或多个其他计算设备进行通信的设备。外部 I/O设备/资源观可以例如是,手持设备、PDA、手机、键盘等。通常而言,处理器20执行计算机程序代码(例如,程序控制器44),所述代码可存储在存储器22A和/或存储系统22B中。而且,根据本发明的方面,程序控制器44控制应用105和事务管理器110,例如此处所述的过程。应用105和事务管理器110可以单独模块或组合模块的形式实现为存储器22A中存储的程序控制器44内的一个或多个程序代码。 此外,应用105和事务管理器110可以实现为单独的专用处理器或者单个或多个处理器以提供这些工具的功能。在执行计算机程序代码时,处理器20还可以将数据写入存储器22A、 存储系统22B和/或I/O接口 M或从上述装置读取数据。程序代码执行本发明的过程,例如,检测和解决分布式SIP服务器环境中的数据锁定问题。总线沈提供计算设备14中各组件之间的通信链路。计算设备14可包括能够执行其上安装的计算机程序代码的任何通用计算制品 (例如,个人计算机、服务器等)。但是应该理解,计算设备14只是可执行此处所述过程的各种可能的等价计算设备的代表。就此而言,在实施例中,计算设备14提供的功能可由包括通用和/或专用硬件和/或计算机程序代码的任何组合的计算制品实现。在每个实施例中,程序代码和硬件可分别使用标准编程技术和工程技术创建。类似地,计算基础设施12只是用于实现本发明的各种类型的计算机基础设施的示例。例如,在实施例中,服务器12包括通过诸如网络、共享存储器之类的任何类型的通信链路通信,以执行此处所述的过程的两个或多个计算设备(例如,服务器群集)。进一步地,在执行此处所述的过程时,服务器12上的一个或多个计算设备可使用任何类型的通信链路与服务器12以外的一个或多个其他计算设备进行通信。所述通信链路可包括有线和/ 或无线链路的任意组合、一个或多个网络类型(例如,因特网、广域网、局域网、虚拟专用网等)的任意组合和/或使用传输技术和协议的任意组合。服务器12可以是IP网络中包括应用105和事务管理器110的SIP应用服务器。 应用105可以例如是,实现为SIP小服务程序的VoIP应用(例如,呼叫等待、呼叫转接和合并通话)。如上所述,应用105由程序控制器44控制。进一步地,应用105与事务管理器 110进行通信并由事务管理器110进行管理,事务管理器110可以实现为SIP容器并且也受程序控制器44的控制。事务管理器110管理应用105的各种问题。例如,当从另一 VoIP应用接收用于本应用105的消息时,事务管理器110可在应用105中启动专用控制线程或事务来处理该消息。在执行此操作期间,事务可能访问服务器12的数据库115中的数据(例如,对象),或可能创建和使用要存储在数据库115中的数据,数据库115可能例如在存储系统22B和/ 或服务器12的一单独存储器中实现。为了防止损坏数据,事务管理器110可锁定被访问数据,以防在处理消息之前另一事务访问这些数据。在分布式SIP服务器环境(例如,环境10)中,服务器12(称为“站点1”)中的事务管理器Iio可与多个外部站点,例如站点2(120)、站点3(125)以及站点N(130),进行通信。N是环境10中的站点总数。这些站点120、125、130中的每个站点都可以实现为IP网络中的SIP应用服务器,并且可包括至少一个访问其自己的数据库以及其他站点上的数据库的VoIP应用。例如,站点1 (12)上的应用可访问数据库115和站点2(120)、站点3(125) 以及站点N(130)上的数据库。此外,站点120、125和130分别包括事务管理器135、140和 145。事务管理器135、140和145中的每个都管理其各自的应用并且相互之间以及与事务管理器110进行通信。图2示出根据本发明的方面分布式SIP服务器环境中的两个事务发生死锁时的示例性方块图200。具体而言,方块图200示出三个事务205、210和215。第一事务205 (“Si. TXl")由图1中站点1( “Si”)上的事务管理器110启动。第二事务210( “Si. TX2”)也由Sl上的事务管理器110启动。第三事务215( “S2.TX3”)由图1中站点2 ( “S2”)上的事务管理器135启动。最初,第一事务205希望获取对数据库中数据(具体是指第一对象220 (01”))的访问,并且请求和接收对于该对象的锁225。锁225通过确保没有其他任何事务可以读取和 /或修改第一对象220,允许图1中的事务管理器110向应用105提供其事务隔离保证。当锁定发生时,事务(“锁定者”)持有数据库记录(“被锁对象”)上的锁。锁可在事务管理器中实现为一数据结构,该数据结构锁定该数据结构中表示的对象。接下来,为了完成事务,第一事务205希望获取对第二对象230 (“02”)的访问,但是必须等待才能获取对第二对象230的访问,因为第二事务210已持有第二对象230上的锁235。第一事务205和第二事务210之间的这种关系可在Sl上的等待图(WRi)中示出, 如下所示Si. TXl- > Si. TX2其中“一 >”表示第一事务205( "Si. TXl")正在等待第二事务210( “S1.TX2,,)
释放第一事务205希望获得访问的第二对象230。同时,第二事务210希望获取对第三对象“03”)的访问,但是必须等待才能获取对第三对象240的访问,因为第三事务215持有第三对象240上的锁M5。Sl上的WFG 将更新为如下所示Si. TXl- > Si. TX2— > S2. TX3当第三事务215希望获取对第一对象220的访问时,在事务205、210、215之间发生死锁,因此它们相互阻止。换言之,事务205、210、215中的每个都在等待由另一事务持有或锁定的对象,因此,将不会释放阻止其他事务的锁。当死锁发生时,死锁中涉及的事务永远不可能取得任何进展(例如,获取对数据的访问),除非某个外部代理采取行动来打破这种死锁。死锁会耗尽服务器的资源,尤其是其处理器功率,不必要地浪费了处理器。每个站点可由其等待事务的本地WFG表示并可以构建该本地WFG,S2上的WFG如下所示S2. TX3— > Si. TXl.因此,包括Sl和S2的所有站点上的全局WFG如下所示Si. TXl- > Si. TX2— > S2. TX3— > Si. TXl.如全局WRi中所示,WRi中的循环指示分布式SIP服务器环境中已发生死锁。需要结束(victimize)或终止上述事务205、210、215中的至少一个才能解决死锁。为了如上所述在不必构建、维护和传输所有可能的大型复杂WRi的情况下,高效地检测和解决分布式SIP服务器环境中的死锁,可以实现本发明的方法、系统和计算机程序产品。具体而言,可在图1内的每个事务管理器110、135、140、145中实现本发明的方法、系统和计算机程序产品。在操作中,本发明包括位于站点Sn(例如,站点1(12)、站点 2(120)、站点3(125)和站点N(130))上的事务管理器(例如,事务管理器110、135、140、 145)。所述事务管理器可首先启动产生、计数和选择分布式数据库中的对象作为候选以便检测和解决分布式SIP服务器环境中的死锁的过程。具体而言,站点Sn上的事务管理器首先产生分布式数据库中的所有对象集。图3 示出根据本发明的方面包括分布式数据库中的所有对象01-010的集合的示例表300。所述对象可驻留在站点Sn或其他站点上的数据库中。所述事务管理器然后针对分布式数据库中的每个对象,计数(例如,跟踪)在预定时间段(例如,一评估间隔)内引用对象的请求或查询的数量。该数量被称为死锁查询引用计数,如表300中所示。例如,在表300中, 对象01-010中的每个在评估间隔内的死锁查询引用计数为100次查询。在实施例中,所述事务管理器还可针对分布式数据库中的每个对象和事务,计数单个事务在评估间隔内做出的对对象的请求或查询的数量(例如,事务查询引用计数)。这是指表300中位于事务 Si. TXUS1. TX2、S2. TX3、S3. TX4禾口 S4. TX5下面的数量。例如,在表300中,在评估间隔内, 事务Si. TXl查询对象01和02 一次,查询对象03、05、07、09和010两次。评估间隔结束后,所述事务管理器从所有对象集中选择大对象作为用于检测和解决分布式SIP服务器环境中的死锁的候选对象。在实施例中,如果一个对象的死锁引用计数大于预定阈值,则被认为是大对象。在实施例中,所述事务管理器可通过删除所有对象集中所有不大的对象来选择大对象。所述从所有对象集中选择对象产生了候选对象集。在实施例中,所述事务管理器通过约简所有对象集中的对象,选择所有对象集中的候选对象。这是通过比较对象集所产生的等价关系实现的。删除一些对象以便约简集提供的判定功能的预测能力与原始集相同。所述约简集被定义为条件对象集C的最小基数 Rmin的子集,从而Ye(D) = Yc(D) (1);R = {X:X^C-Yx{D) = rc{D)} (2);Rmm = {x-.x^R-yY^ R- |x| < |7|} (3)。这可得出非常粗略的等价类结构,其包括如下所示的依赖事务集{Si. TX1,S2. TX3}。所述等价类结构还包括如下所示的依赖对象集{01, 02};{03,05,07,09,010};{04,06,08}。Sn事务管理器完成选择对象作为候选的过程之后,Sn事务管理器可启动检测和解决分布式SIP服务器环境中的死锁的过程。图4示出根据本发明的方面站点Sn(“405”) 启动该过程的的示例性方块图400。站点Sn 405首先检查其本地WFG以判定是否存在可能的死锁。具体而言,针对本地WFG中的每个本地事务Tfti,站点Sn 405判定事务Tfti是否正在等待访问由站点Sm 410上的远程事务TXm锁定或持有的对象0m。在实施例中,站点Sn 405可判定事务Tfti等待访问对象Om的时间是否在长于预定时间段(例如,10秒)。在实施例中,对象Om可能必须为选定的候选(例如,位于候选对象集中)以用于检测和解决死锁的过程。站点Sn 405还判定站点Sp 415上的远程事务TXp是否正在等待由事务Tfti持有的对象On。如果其中一个判定为假(例如,事务Tfti未在等待访问对象Om),则站点Sn 405判定分布式SIP服务器环境中没有死锁。但是,如果两个判定均为真,则站点Sn 405向站点 Sm 410发送探针420。探针420包括标识站点Sn 405、事务Tfti以及所需对象Om的数据。 例如,所有探针中的数据可包括经过鉴别的标识(例如,用户名和密码)、IP地址、端口号和 /或标识站点、事务和对象的其他标识信息。站点Sm 410接收探针420并判定事务TXm是否正在等待访问由站点Sm+1425上的远程事务TXm+1持有的对象Om+1。如果事务TXm未在等待访问对象Om+1,则站点Sm 410 向站点Sn 405发送逆向探针430。逆向探针430包括标识初始探针420的站点Sn 405、事务Tfti以及对象Om的数据。逆向探针430向站点Sn 405指示没有更多锁定对象可寻找, 因此分布式环境中没有死锁。但是,如果事务TXm正在等待访问对象Om+1,则站点Sm 410向站点Sm+1425发送探针435。探针435包括标识站点Sm 410、事务TXm以及所需对象Om+1的数据。站点 Sm+1425接收探针435。与站点Sm 410类似,站点Sm+1425判定是否发送向Sm 410指示分布式环境中没有更多锁定对象以及没有死锁的逆向探针440,或者是否向另一站点发送新的前向探针以查看站点Sm+1425上的事务TXm+1是否正在等待访问该另一站点上的对象。如果事务TXm+1正在等待访问站点Sp 415上的对象0p,则站点Sm+1425向站点 Sp 415发送探针445。探针445包括标识站点Sm+1425、事务TXm+1以及所需对象Op的数据。如果站点Sp 415从站点Sm+1425接收到探针445,则站点Sp 415向站点Sn 405发送探针450,因为事务TXp是正在等待访问站点Sn 405上的对象On的事务。探针450包括标识站点Sp 415、事务Tp以及所需对象On的数据。探针450向站点Sn 405指示分布式环境中存在死锁,因为站点Sn 405由于它的等待事务而启动了检测死锁的过程,却接收到针对该相同等待事务持有的对象的探针。换言之,探针450指示分布式环境中存在死锁,因为探针450指示分布式系统中存在等待事务的循环。如果站点Sn 405接收到探针450,则站点Sn 405判定分布式环境中存在死锁并解决该死锁。在实施例中,可通过结束或终止站点Sn 405上的本地事务Tfti来解决所述死锁。在其他实施例中,可通过结束死锁两端(例如,事务Tfti和TXp)上的事务和/或结束分布式环境中的所有事务来解决死锁。通过此检测和解决分布式环境中的死锁的过程,不必构建、维护以及在站点(例如,站点405、410、415和425)之间传输分布式环境的潜在复杂大型的全局WFG。因此,此检测和解决死锁的过程更有效,因为它节省了处理功率和存储, 并且降低了每个消息的消息传输大小以及消息的数量。下面是根据本发明的方面的示例性伪代码//执行迭代,至底向上
//迭代1:查找Li,具有支持 > 阈值的所有单个项 //迭代2:使用Li,查找L2 //迭代i:使用Li-I,查找Li //直到找不到更多锁定的项集(itemset)
//分布式环境中的所有站点都能执行全局死锁检查。
//参与到分布式环境中的所有站点都具有本地事务管理器,具有它们自己的
//本地死锁检测过程。
//分布式环境中的每个站点都能将消息发送到其他任何站点,用于查询 //分布式死锁。
//每次迭代i都由两个阶段组成 //1.候选产生阶段
//构建大型项集的候选集,即,查找所有适合于进一步 //考虑的项,其方式是仅检查//集合Li-1*Li-I中的候选
111.候选计数和选择
//计数每个候选项集发生的次数
//根据预定支持判定大项集,即,仅选择具有足够支持的
//候选
//Interrupt_watchdog =时间间隔,此时间间隔后站点将检查其任何事务 //是否正在等待远程资源
//Local_Timeltout =在本地数据库指定的锁定超时间隔 //LWFG = 站点Sn的本地等待图 //Sn=启动者站点的站点标识符
//TXn =等待一远程站点Sm的某个资源上的锁的亊务的标识符 //Om =事务TXn正在等待的站点Sm中的远程对象资源的标识符 //Probe (Sn, TXn, Om)=启动站点将发送的探测消息 //Reverse_Probe (Sn, TXn)=当检测到条件1为假时,站点Sk发送到站点 //Sn的“无死锁”消息
//集合Lk被定义为包含满足支持> 阈值的常见k个项集的集合 //Lk*Lk被定义为
//LkALk = {X U Y,其中 X、Y 属于 Lk 和丨 X ΠΥ| = k-1} /查找死锁中涉及的所有常见对象
Contentionobjectfinder(database D of transactions, min support) {
Fl = {frequent 1-itemsets} k = 2while Fk-I Φ EmptySet
Ck= reductGeneration(Fk-l) For数据库D中的每个事务t{ Ct= subset(Ck, t) for each candidate c in Ct { countc ++
}
Fk = {c in Ck such that countc > min support}
k++
}
F = U k > 1 Fk
}
//精筒候选项集 reductGeneration(Fk-l) {
//将通过在Fk-I中自联结(self-join)项集莸取的Fk-I中的元素的所有组合插入Ck
//自联结意味着所考虑的项集中除了最后一项以外的所有项‘‘重叠”,即联 //接来自Fk-I中的项p、q以形成候选k-项集,其形式为 "plp2 ".pk-lqlq2."qk-l(没有重叠),以便 pi=qi 其中 i=l,2,..,k-2 以 //及 pk-1 < qk-1.
//删除Ck中的所有项集c以便c的某个(k-1)子集不在Lk-I中 }
//查找t中包含的所有候选子集 Subset(Ck, t) {}//Tnterrupt_watchdog ->在每次时间流逝名 Interrupt_handler_siteS() { For每个本地事务TXn Do
If ( TXn正在等待由站点Sm上的任何事务TXm持有的资源Om上的锁) && (站点Sp上的任何远程事务TXp正在等待获取由TXn持有的资源On 上的锁) Then do
将Probe (Sn, Τη, Rm)发送到站点Sm 等待(Probe (Sn, Τη, *)) OR (Reverse_Probe (Sn, Tn)) //等待时间与一因素成反比例,该因素取决于对象和事务依赖性,即,对于 //由给定应用集锁定的给定对象集,发生实际死锁的可能性 //检查Subset(Ck, t)的成员
If 接收到 Probe (Sn, Tn, *) Then do
Deadlockdetected = True
Else
Dead lockd etected = False End-Do
Else
在当前中断中未检测到死锁 End-Do//在任何接收到探测消息的站点Sm上,所述消息具有启动者=站点Sn,事 //务Id = TXn以及TXn正在等待的对象Id = Om0另外,事务TXm持有 //Om上的锁
//使用熵测度,建立一般会相互发生死锁的应用的约筒,这用于设置用以检査由于死锁造成的争用的消息传递的频率
If (本地事务TXm正在等待由任何事务Tm+1持有的、站点Sm+1上的对象Om+1上的锁) Then do
将 Probe (Sn, TXn, Om+1 )发送到站点 Sm+1. Else
将 Reverse_Probe (Sn, TXn, Om)发送到站点 Sn· End-Do流程5A-5B和图6示出用于执行本发明的方面的示例性流程。图5A-5B和图6可以在例如图1的环境中实现。附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为相继的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还应指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。 此外本发明可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供由计算机或任何指令执行系统使用或与所述计算机或任何指令执行系统结合的程序。所述软件和/或计算机程序产品可以在图1的环境中实现。为了此说明的目的,所述计算机可用或计算机可读介质可以是任何能够包含、 存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的装置。所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读存储介质的示例包括半导体或固态存储器、磁带、可移动计算机软盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘的当前示例包括光盘只读存储器(CD-ROM)、光盘读/写存储器(CD-R/W)和DVD。
图5A示出根据本发明的方面的过程的示例性流程500。在步骤505,过程开始。在步骤510,由站点Sn上的事务管理器产生分布式数据库中的所有对象集。在步骤515,站点 Sn计数所产生的集合中所有对象在评估间隔期间的死锁查询引用计数。
在步骤520,站点Sn计数分布式数据库中所有对象和事务在评估间隔期间的事务查询引用计数。在步骤525,站点Sn判定评估间隔是否结束。如果未结束,则过程返回步骤515。如果评估间隔结束,则在步骤530,站点Sn从所有对象集中选择候选以用于检测和解决分布式SIP服务器环境中的死锁的过程。在实施例中,站点Sn可根据所计数的死锁查询引用计数和事务查询引用计数从所有对象集中选择候选。所述过程继续到图5B的步骤 535,其将在下面进行说明。图5B示出根据本发明的方面的过程的示例性流程500的继续。在步骤535,过程开始,这是图5A中步骤530的继续。具体而言,在步骤535,站点Sn上的事务管理器获取本地WTO。在步骤M0,使用本地WFG,站点Sn判定站点Sn上的事务Tfti是否正在等待站点Sm上的事务TXm持有的对象。在实施例中,事务Tfti的等待时间可能必须长于预定时间段,并且对象Om可能必须是从所有对象集中选择的候选对象。如果事务Tfti不在等待,则过程继续到步骤575。如果事务Tfti正在等待,则在步骤M5,站点Sn判定站点Sp上的事务TXp是否正在等待事务Tfti持有的对象On。如果事务TXp不在等待,则过程继续到步骤575。如果事务TXp正在等待,则在步骤550,站点Sn向站点Sm发送探针。在步骤555,站点Sn判定是否已从站点Sm接收到逆向探针。如果接收到逆向探针,则过程继续到步骤575。如果未接收到逆向探针,则在步骤560,站点Sn判定是否从,例如,包括等待对象 On的事务TXp的站点Sp接收到探针。如果未接收到探针,则过程继续到步骤555。如果接收到探针,则在步骤565,站点Sn判定分布式环境中存在死锁(例如,将死锁参数设为真)。 在步骤570,站点Sn结束本地事务Tfti以解决分布式环境中的死锁。在步骤575,站点Sn 判定分布式系统中没有死锁(例如,将死锁参数设为假)。在步骤580,过程结束。图6示出根据本发明的方面的另一过程的另一示例性流程600。在步骤605,过程开始。在步骤610,站点Sm上的事务管理器接收来自站点Sn的探针。在步骤615,站点Sm 判定站点Sm上的事务TXm是否正在等待站点Sm+1上的事务TXm+1持有的对象Om+1。如果 TXm正在等待,则在步骤620,站点Sm向站点Sm+1发送探针。否则,在步骤625,站点Sm向站点Sn发送逆向探针。在步骤630,过程结束。在实施例中,诸如解决方案集成商之类的服务提供者可能提供执行此处所述的过程的服务。在这种情况下,服务提供者可创建、维护、部署、支持等计算机基础设施,该计算机基础设施为一位或多位用户执行本发明的过程步骤。这些用户可以例如是任何使用技术的企业。作为回报,服务提供者可以根据订阅和/或收费协议从用户那里收费,以及/或者服务提供者通过向一位或多位第三方销售广告内容来收费。在此使用的术语仅出于描述特定实施例的目的,并非对本发明进行限制。正如在此使用的那样,单数形式“一”、“一个”和“所述”旨在同时包括复数形式,除非上下文另外明确指出。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定存在所述特性、整数、步骤、操作、元件和/或组件,但并不排除其中存在或添加一个或多个其他特性、整数、步骤、操作、元件、组件和/或由此构成的组。权利要求中的所有装置功能元件或步骤功能元件(在适用时)的对应结构、材料、 操作和等价物旨在包括用于与如具体声明的那样的其他所声明的元件结合执行所述功能的任何结构、材料或操作。出于说明和描述目的给出了对本发明的描述,但是所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下, 许多修改和变化对于本领域的技术人员来说都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理和实际应用,并且使得本领域的其他技术人员能够针对具有各种修改的适合于所构想的特定使用的各种实施例理解本发明。因此,尽管根据实施例对本发明进行了描述,但是本领域的技术人员将理解,本发明的实现可以具有修改并且处于所附权利要求的精神和范围中。
权利要求
1.一种在计算机基础设施中实现的方法,所述计算机基础设施包含有形地体现在计算机可读存储介质中的计算机可执行代码,所述计算机可读存储介质包含可通过运行执行以下操作的编程指令判定第一站点正在等待由第二站点锁定的第一对象; 判定第三站点正在等待由所述第一站点锁定的第二对象; 将第一探针发送到所述第二站点以判定所述第二站点是否正在等待;以及接收指示有个站点正在等待由所述第一站点锁定的对象的第二探针,其中所述第二探针进一步指示分布式服务器环境中要解决的死锁。
2.如权利要求1中所述的方法,其中所述编程指令进一步可通过运行解决分布式服务器环境中的死锁,包括结束正在等待所述第一对象的所述第一站点上的事务。
3.如权利要求1中所述的方法,其中所述编程指令进一步可通过运行接收指示所述第二站点未在等待的逆向探针,其中所述逆向探针进一步指示分布式服务器环境中没有死锁。
4.如权利要求1中所述的方法,其中所述编程指令进一步可通过运行获取所述第一站点上的本地等待图(WFG)。
5.如权利要求4中所述的方法,其中所述编程指令进一步可通过运行根据所述第一站点上的本地WFG,判定所述第一站点上的第一事务正在等待由所述第二站点上的第二事务锁定的所述第一对象。
6.如权利要求5中所述的方法,其中所述编程指令进一步可通过运行判定所述第三站点上的第三事务正在等待由所述第一站点上的所述第一事务锁定的所述第二对象。
7.如权利要求1中所述的方法,其中所述编程指令进一步可通过运行产生分布式服务器环境中的所有对象集。
8.如权利要求7中所述的方法,其中所述编程指令进一步可通过运行执行以下操作 计数所述所有对象集中的每个对象的死锁查询引用计数;以及计数所述所有对象集中的每个对象以及分布式服务器环境中的每个事务的事务查询引用计数。
9.如权利要求8中所述的方法,其中所述编程指令进一步可通过运行选择至少所述第一对象作为候选以便根据计数死锁查询引用计数和计数事务查询引用计数检测和解决分布式服务器环境中的死锁。
10.如权利要求1中所述的方法,其中服务提供者至少执行所述计算机基础设施的创建、维护、部署和支持中的一项。
11.如权利要求1中所述的方法,其中权利要求1中的步骤由服务提供者基于订阅、广告和/或收费来提供。
12.—种在硬件中实现的用于检测和解决分布式服务器环境中的死锁的系统,包括 可通过运行执行以下操作的事务管理器选择至少第一对象作为候选以便检测和解决分布式服务器环境中的死锁; 判定第一站点正在等待由第二站点锁定的第一对象; 判定第三站点正在等待由所述第一站点锁定的第二对象; 将第一探针发送到所述第二站点以判定所述第二站点是否正在等待;以及接收指示有个站点正在等待由所述第一站点锁定的对象的第二探针,其中所述第二探针进一步指示分布式服务器环境中要解决的死锁。
13.如权利要求12中所述的系统,其中所述事务管理器进一步可通过运行解决分布式服务器环境中的死锁,包括结束正在等待所述第一对象的所述第一站点上的事务。
14.如权利要求12中所述的系统,其中所述事务管理器进一步可通过运行接收指示所述第二站点未在等待的逆向探针,其中所述逆向探针进一步指示分布式服务器环境中没有死锁。
15.如权利要求12中所述的系统,其中所述事务管理器进一步可通过运行获取所述第一站点上的本地等待图(WFG)。
16.如权利要求15中所述的系统,其中所述事务管理器进一步可通过运行根据所述第一站点上的本地WFG,判定所述第一站点上的第一事务正在等待由所述第二站点上的第二事务锁定的所述第一对象。
17.如权利要求16中所述的系统,其中所述事务管理器进一步可通过运行判定所述第三站点上的第三事务正在等待由所述第一站点上的所述第一事务锁定的所述第二对象。
18.如权利要求12中所述的系统,其中所述事务管理器进一步可通过运行产生分布式服务器环境中的所有对象集。
19.如权利要求18中所述的系统,其中所述事务管理器进一步可通过运行执行以下操作计数所述所有对象集中的每个对象的死锁查询引用计数;以及计数所述所有对象集中的每个对象以及分布式服务器环境中的每个事务的事务查询引用计数。
20.如权利要求19中所述的系统,其中所述事务管理器进一步可通过运行选择至少所述第一对象作为候选以便根据计数死锁查询引用计数和计数事务查询引用计数检测和解决分布式服务器环境中的死锁。
21.—种部署用于检测和解决分布式服务器环境中的死锁的系统的方法,包括 提供计算机基础设施,所述计算机基础设施可通过运行执行以下操作 获取所述第一站点上的本地等待图(WRi);根据所述第一站点上的本地WFG,判定所述第一站点上的第一事务正在等待由第二站点上的第二事务锁定的第一对象;判定第三站点上的第三事务正在等待由所述第一站点上的所述第一事务锁定的第二对象;将第一探针发送到所述第二站点以判定所述第二站点是否正在等待; 接收指示所述第二站点未在等待的逆向探针,其中所述逆向探针进一步指示分布式服务器环境中没有死锁;接收指示有个站点正在等待由所述第一站点锁定的对象的第二探针,其中所述第二探针进一步指示分布式服务器环境中要解决的死锁;以及解决分布式服务器环境中的死锁,包括结束正在等待所述第一对象的所述第一站点上的所述第一事务。
全文摘要
提供了一种减少用于分布式SIP服务器环境中争用检测的消息传递的方法、系统和计算机程序产品。所述方法在计算机基础设施中实现,所述计算机基础设施包含有形地体现在计算机可读存储介质中的计算机可执行代码,所述计算机可读存储介质包含可通过运行判定第一站点正在等待由第二站点锁定的第一对象的编程指令。所述编程指令进一步可通过运行判定第三站点正在等待由所述第一站点锁定的第二对象,以及将第一探针发送到所述第二站点以判定所述第二站点是否正在等待。接收第二探针并且该探针指示有个站点正在等待由所述第一站点锁定的对象。所述第二探针进一步指示分布式服务器环境中要解决的死锁。
文档编号H04L29/06GK102469106SQ20111033382
公开日2012年5月23日 申请日期2011年10月28日 优先权日2010年11月18日
发明者A·R·纳戈帕尔, G·西华古玛, M·B·特里瓦坦, S·R·帕蒂尔, S·拉马纳坦 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1