用于相似性管理的方法和系统的制作方法

文档序号:6655239阅读:210来源:国知局
专利名称:用于相似性管理的方法和系统的制作方法
技术领域
本发明涉及相似性(affinity)管理的领域。特别地,本发明涉及包含消息通知(messaging)系统的分布式计算机系统中的相似性管理。
背景技术
在希望以类似的方式处理多个实体的情形下需要相似性管理。可以在分布式计算机系统中的WebSphere MQ(WebSphere和MQ是国际商业机器公司的商标)消息通知环境下提供这样的相似性的实例。可以发送这样的消息组,其中不传送这种组中的任何成员直到所有成员已经到达为止。然而,如果将组的每个成员传送到不同的队列管理器,则由于在队列管理器见到所有的组成员之前将不传送,所以其结果是不会传送组成员。在这种情况下,需要利用相似性对待组的成员以保证将它们全部发送到相同的队列管理器。
相似性必要性的另一实例为是否存在两个应用程序,它们依赖于以问题和回答的形式在它们之间流动的一系列消息。所有的回答被送回到相同的队列管理器可能是重要的。非常重要的是工作负载管理进程不将消息发送到碰巧掌控(host)正确队列的副本的任何队列管理器。类似地,可能存在要求按顺序处理的消息的应用程序,例如,发送必须按顺序检索的多批消息的文件传送应用程序或数据库复制应用程序。
在簇队列管理器中,可以将消息路由到掌控合适的队列的实例(instance)任何队列管理器。必须检查应用程序来了解是否存在诸如需要交换相关的消息之类的消息相似性的程序。如果将消息路由到不同的队列管理器,则具有消息相似性的应用程序的逻辑可能会混乱。
通过改变应用程序打开队列的方式(例如,在MQQPEN调用上的BIND_ON_OPEN选项)可以处理在消息通知系统中的相似性管理。然而,这具有假设应用程序理解消息相似性的发出的缺点。
在WebSphere MQ消息通知系统的上下文中描述本发明的实施例。特别地,在簇队列管理器的环境中。然而,本发明也可以应用到诸如其中许多相关的客户应用程序希望使用网络服务的相同实例的网络服务之类的其它分布式计算系统的很广的范围中。另一实例是WebSphere Edge Server系统。
本发明可以应用到必须由寻址实体组保持相似性使得组中的每个成员被指向相同的服务实例的任何情形中。在WebSphere MQ的环境中,消息组可以保持相似性,并且将其都发送到相同的队列管理器。
可以保持由寻址实体进行的事务的目的地的历史,来确保如果在寻址实体之间存在相似性,则可以选择相同的目的地。然而,在高容量事务系统中,保持指示已经发送了每个事务的历史通常是不实际或不有效的。

发明内容
根据本发明的第一方面,提供用于分布式计算机系统中的相似性管理的方法,该方法包括为多个寻址实体中的每一个提供标识符,其中具有相似性的寻址实体的组的每个成员的标识符是相同的组标识符;确定可由寻址实体利用来寻址以提供服务的实例的服务提供器的数量;通过下面的方法管理寻址实体到服务提供器的分布将散列(hash)函数应用到寻址实体的标识符来获得标准整数;将标准整数除以服务提供器的数量并获得模数;通过参照模数选择服务提供器;将寻址实体发送到所选择的服务提供器提供的服务的实例。
可以周期地执行用于确定服务提供器的数量的步骤,并且在一个时间段内服务提供器的数量是恒定的。即使服务提供器是动态的,并且在该周期加入或离开,服务提供器的数量也保持恒定。
该方法还可以包括提供由模数值参考的可用服务提供器的索引。例如,对于6个可用的服务提供器,模数值将为0到5,并且每个模数值可以提供服务提供器之一的索引。
如果所选择的服务提供器不可用,则可以以预定顺序将寻址实体发送到下一服务提供器。如果服务提供器出故障,则可以激活处理来检索先前传送的寻址实体。如果服务提供器出故障,则可以在确保在另一服务提供器中没有具有组相似性的寻址实体后恢复它。此外,如果服务提供器出故障,则可以重新分布发送到服务提供器的寻址实体。
在一个实施例中,分布式计算系统可以是寻址实体是消息而服务提供器是掌控一个或多个簇队列的实例的簇队列管理器的消息通知系统。组标识符可以是通用唯一标识符(UUID)的形式。
在另外的实施例中,寻址实体可以是客户应用程序,并且服务提供器可以是掌控服务的实例的网络服务。
根据本发明的第二方面,提供用于分布式计算机系统中的相似性管理的系统,该系统包括每一个具有标识符的多个寻址实体,其中具有相似性的寻址实体的组的每个成员的标识符是相同的组标识符;可由寻址实体利用来寻址以提供服务的实例的多个服务提供器的列表;通过使用具有下列步骤的算法用于管理寻址实体到服务提供器的分布的装置将散列函数应用到寻址实体的标识符来获得标准整数;将标准整数除以列表中的服务提供器的数量并获得模数;通过参照模数选择服务提供器;和用于将寻址实体发送到所选择的服务提供器提供的服务的实例的装置。
可以周期地更新服务提供器的列表,并且在该周期内列表上的服务提供器的数量是恒定的。可以提供一种装置来提示列表中给出的服务提供器的工作负载管理器。该系统可以包括由模数值参照的列表中的服务提供器的索引。
如果所选择的服务提供器不可用,则工作负载管理器可以以预定顺序将寻址实体发送到下一服务提供器。如果服务提供器出故障,则可以提供装置来检索先前传送的寻址实体。如果服务提供器出故障,则可以在恢复故障的服务提供器之前,确保在另一服务提供器中没有具有组相似性的寻址实体。此外,如果服务提供器出故障,则可以提供装置来重新分布发送到服务提供器的寻址实体。
在一个实施例中,分布式计算系统可以是寻址实体是消息而服务提供器是掌控一个或多个簇队列的实例的簇队列管理器的消息通知系统。组标识符可以是通用唯一标识符(UUID)的形式。
在另外的实施例中,寻址实体可以是客户应用程序,并且服务提供器可以是掌控服务的实例的网络服务。
根据本发明的第三方面,提供存储在计算机可读存储介质上的计算机程序产品,其包括计算机可读程序代码方法,用于执行步骤为多个寻址实体中的每一个提供标识符,其中具有相似性的寻址实体的组的每个成员的标识符是相同的组标识符;确定可由寻址实体利用来寻址以提供服务的实例的服务提供器的数量;通过下面的方法管理寻址实体到服务提供器的分布将散列(hash)函数应用到寻址实体的标识符来获得标准整数;将标准整数除以服务提供器的数量并获得模数;通过参照模数选择服务提供器;将寻址实体发送到所选择的服务提供器提供的服务的实例。


参照附图,仅通过示例的方式描述本发明的实施例,其中图1是根据本发明的分布式计算系统的方框图;图2是根据本发明的方法的流程图;和图3是根据具有簇队列管理器的本发明实施例的消息通知系统的方框图。
具体实施例方式
图1是分布式计算系统100的示意图。该系统100被用于概括地说明其中需要可以由所述相似性管理方法提供的相似性管理的布置。这可以应用到不同架构的很大范围中。描述WebSphere MQ消息通知系统的形式的一个实施例。
在分布式计算系统100中的多个寻址实体102可以寻址提供相同服务的一个以上的服务提供器104。经由提供通信基本架构的一个或多个网络106进行系统100中的通信。
术语寻址实体被用作包含寻址服务提供器104的任何装置的一般术语。例如,寻址实体可以是客户应用程序,也可以是消息通知系统中的消息。
可以将多个寻址实体102以某种方式相关来形成组108,该组的成员具有相似性。组108的成员必须通过寻址来自可用的服务提供器104的服务的相同实例,保持它们的相似性。
也使用术语服务提供器104的一般含义。多个服务提供器104将相同服务的实例提供到寻址实体102,使得可以由寻址实体102均等地选择多个服务提供器104中的任意一个。在下面描述的消息通知系统的实施例中,服务提供器104是队列管理器,并且多个队列管理器可以掌控消息所寻址的队列的实例。在网络服务环境中,多个服务提供器104中每一个都可以掌控要被客户应用程序寻址的服务的实例。
在所描述的相似性管理的方法中,首先确定在特定时间上哪些服务提供器正在参加组分布。即,可以由寻址实体均等地选择服务提供器来执行服务。参加的服务提供器的列表在直到修改列表时之前的时期是静态的。该时期可以是被规则更新的周期,也可以是不规则周期,例如由列表上继续可用的服务提供器的数量确定的时期。
如果在已经确定了列表之后服务提供器变为可用,则在修改列表之前将不添加服务提供器。类似地,如果在列表中给出了服务提供器,但是停止为可用,则服务提供器保持在列表上直到修改列表为止。在其中将寻址实体发送到不再可用的服务提供器的这样的实例中使用在下面描述的故障转移(failover)机构。
从服务提供器的列表计数在该时期中列表上的服务提供器的数量。该数量用在选择和平衡算法来选择在该时期期间用于每个寻址实体的服务提供器。建立由数字0到n参考的服务提供器的索引,其中n是列表上的服务提供器的数量。
当寻址实体希望寻址服务提供器时使用选择算法。寻址实体具有标识符,该标识符可以是名称、ID参考、通用唯一标识符(UUID)等。需要保持相似性的寻址实体的组的成员具有相同的组标识符。通过任何合适的散列操作来散列标识符,以获得标准整数。
将标准整数除以在当前时期中从列表计数的服务提供器的数量n,并且获得模数。该模数用于参考索引来确定寻址实体应该寻址哪个服务提供器。由于作为相似性组的成员的寻址实体具有相同的标识符(如,组ID),所以组的每个成员将发送到相同的服务提供器。如果寻址实体具有不同的标识符,则根据选择算法的结果,它们将被发送到服务提供器中的任意一个,这导致寻址实体在列表中的、所参加的服务提供器间的随机分布。
图2是图解以上方法的流程图。在第一步骤201,创建参加的服务提供器的列表。在步骤202确定基于服务提供器的数量n的除数。在步骤203创建用于每个模数的服务提供器的索引。
在步骤204处理寻址实体。在步骤205执行寻址实体的标识符的散列来获得标准整数。在步骤206将标准整数除以除数n来获得模数。在步骤207查找服务提供器的索引来找出所获得的模数值。在步骤208将寻址实体发送到以关于该模数的索引标识的服务提供器。
然后在步骤209确定是否存在等待处理的另一寻址实体,如果存在,则在步骤210为下一寻址实体执行方法中的循环。如果没有更多的寻址实体,则在步骤211将处理放入待命状态来等待要被处理的下一寻址实体。
在要被处理的寻址实体是消息的消息通知环境中,通过消息的到达触发步骤204,并且为消息而执行步骤205到208。因此,不需要循环步骤210。
该方法通过相似性组的成员具有相同的标识符,由此将其发送到相同的服务提供器来使寻址实体保持相似性。
提供故障转移机构来处理将寻址实体发送到不再可用的服务提供器的实例。如果服务提供器不可用,则将寻址实体发送到故障转移列表中的下一服务提供器。以这种方式,将被发送到不可用的服务提供器的所有寻址实体发送到相同的回退(fallback)服务提供器,由此保持寻址实体的相似性。
如果服务提供器出故障,则可能需要考虑相似性,同时将不具有相似性的寻址实体平衡在有效的资源间,将其寻址实体送回服务提供器来进行重新处理和重新导向。需要检索所有被先前导向的寻址实体的处理。
在WebSphere MQ消息通知系统的环境下描述实施例。在网络内不同计算机或节点上运行的应用程序能够使用消息和排队(queuing)进行通信。通过消息通知和排队进行的通信使应用程序在网络中通信,而不需要具有专门的、专用逻辑连接来链接它们。通过将消息放入消息队列并从消息队列获得消息来进行通信。
网络中每个节点都具有队列管理器。队列管理器通过由应用程序调用的消息队列接口与应用程序进行接口。消息队列接口支持许多不同的操作系统平台。
在分布式排队系统中,队列管理器是独立的,并且使用分布式排队进行通信。向另一个队列管理器发送消息的一个队列管理器必须已经定义了发送队列、到达远端队列管理器的信道和用于希望将消息发送到的每个队列的远端队列定义。
当以簇分组队列管理器时,队列管理器可以使其掌控的队列对于簇中的每个其它的队列管理器都是可用的。任意队列管理器可以将消息发送到同一簇中的任意其它的队列管理器,而不需要明确的信道定义、远端队列定义或用于每个目的地的发送队列。簇中每个队列管理器具有单独的发送队列,每个队列管理器可以从该队列将消息发送到簇中的任意其它的队列管理器。簇中的每个队列管理器仅需要定义一个在其上接收消息的簇接收机信道和使用来介绍自己并了解簇的一个簇发送器信道。
图3显示消息通知系统中的队列管理器300的簇。显示了四个队列管理器QM301、QM302、QM303、QM304。每个队列管理器服务一个或多个应用程序311、312、313、314和315。
每个队列管理器可以具有仅能由该队列管理器服务的应用程序访问的本地队列305。簇中的每个队列管理器还可以具有簇队列306。簇队列306能够访问簇中的任意其它的队列管理器。一个或多个队列管理器还可以掌控关于簇中的队列管理器的信息的库(repository)307。
应用程序311使用MQPUT调用来将消息放入任意队列管理器301、302、303和304上的簇队列306。应用程序311使用MQGET呼叫来从本地队列管理器301上的簇队列306检索消息。
通过用于平衡工作负载的分布队列管理中的工作负载管理器将发送到簇300的消息分散在有效的队列管理器301、302、303、304中的簇队列的实例中。
WebSphere MQ消息通知系统提供发送消息组的能力,其中不传送组的成员直到所有成员到达为止。这是要求将所有消息发送到簇中的相同队列管理器的组的示例。如果将组中的消息发送到不同的队列管理器,则由于任意一个队列管理器没有见到所有消息已经到达,所以消息将不传送。需要确保到簇中的相同队列管理器的、属于给定组的消息具有相似性。然而,必须不影响没有被分组的消息,以使在簇中的队列管理器间仍在存在平衡。
通过表现为24位通用唯一标识符(UUID)的组ID表示组成员。每个组的成员还具有序列号,并且组的最后一个成员同样标识自己。
在所述的方法中,在簇中的分布队列管理器的工作负载管理器执行平衡算法来确定将消息发送到哪个队列管理器的簇队列。该平衡算法通过确保组的成员被发送到簇中的相同队列管理器来保持组成员的相似性。
平衡算法对组ID执行散列函数来获得标准整数。通过将标准整数除以队列管理器的数量获得标准整数的模数,以确定目标队列管理器的索引。
以配置文件或其它机构为形式的列表被用于通知分布队列管理器簇队列参加组分布。该列表确定除数来获得用在平衡算法中的模数。该除数是队列管理器的数量,因而是可以将消息发送到的簇队列的实例的数量。无论队列是进入或离开簇,允许平衡算法一致地寻址正确的队列,该列表都不改变。
这允许分布队列管理器将消息的相同组的所有成员发送到相同的队列管理器,而不需要保持状态或招致检查历史产生的大量开销等等。
队列管理器的簇是动态的,使得队列管理器可以在任意时间加入或离开。如果除数基于队列管理器的当前数量,则平衡算法将更容易出错。因此,向平衡算法给定队列管理器的列表(静态的)来进行选择,并且允许平衡算法在选择队列管理器方面是一致的。
此外,队列管理器落入多米诺形式。例如,如果如图3所示在组中存在四个队列管理器,则队列管理器具有预定的顺序QM1、QM2、QM3和QM4。如果一个队列管理器QM1故障,则将其消息送回工作负载管理器。如果由平衡算法选择了队列管理器QM1,并且它不可用,则按顺序地(in line)选择下一个,即QM2。
结合用于检索所有先前传送的组成员来使能该多米诺故障转移技术。恢复的队列管理器的重新建立需要类似的控制。
一旦表明队列管理器故障,则在没有确保不存在属于在另外的队列管理器中等待的组的任何消息的情况下,不能恢复该队列管理器。
此外,如果新检测出队列管理器故障,则必须以普通的WebSphere系统方式存储消息用于发送,直到提示队列管理器已经被关闭,并且将重新分布已经被发送的消息为止。
以这种方式,可以恢复故障的队列管理器的工作负载,同时考虑相似性并在有效的资源间平衡不具有相似性的消息。
示例在图3所示的示例中,有四个可用的队列管理器。将队列管理器以及因此簇队列的有效实例的列表编译为索引,并且每个队列管理器具有索引号QM1=0,QM2=1,QM3=2,QM4=3。
由于在表中有四个队列管理器,因此用在平衡算法中的除数是4。保持除数恒定直到修改列表并确定新除数为止。
在该示例中,存在具有组标识符的一些消息组。为说明的目的将组标识符选为合适的名称。在实践中,组标识符可以是例如以24字节UUID为形式的组ID。
在该示例中,散列函数向字母表的字母顺序分配号码,并且将号码相加来获得标准整数。
下面的表显示对组的名称进行处理的散列函数的操作。

通过关于具有标识符“HAMPSHIRE”的组的成员的平衡算法获得的索引号是1。因此,组的成员被发送到QM2。下面的表显示每个组的成员的目的地。

以这种方式,具有相似性的组的成员被发送到相同的队列管理器,同时平衡队列管理器的工作负载。
可以将本发明实现为计算机程序产品,包括用于控制计算机或类似装置的程序指令集。可以通过预装载在系统或记录在诸如CD-ROM之类的存储介质来提供这些指令,或者通过诸如因特网或移动电话网之类的网络下载来实现。
可以对上述实施例进行改进和修改而不背离本发明的范围。
权利要求
1.一种用于分布式计算机系统(100)中的相似性管理的方法,该方法包括为多个寻址实体(311-315)中的每一个提供标识符,其中具有相似性的寻址实体的组的每个成员的标识符是相同的组标识符;确定可由寻址实体利用来寻址以提供服务的实例的服务提供器(301-304)的数量;通过下面的方法管理寻址实体到服务提供器的分布将散列函数应用到寻址实体的标识符来获得标准整数(205),将标准整数除以服务提供器的数量并获得模数(206),以及通过参照模数选择服务提供器(207),和将寻址实体发送到由所选择的服务提供器提供的服务的实例(208)。
2.如权利要求1所述的方法,其中,周期地执行用于确定服务提供器的数量的步骤,并且在一段时间内服务提供器的数量是恒定的。
3.如权利要求1或2所述的方法,其中,该方法还包括提供由模数值参考的可用服务提供器的索引(203)。
4.如权利要求1到3中任意一个所述的方法,其中,如果所选择的服务提供器不可用,则以预定顺序将寻址实体发送到下一服务提供器。
5.如前述权利要求中任意一个所述的方法,其中,如果服务提供器出故障,则激活处理来检索先前传送的寻址实体。
6.如前述权利要求中任意一个所述的方法,其中,如果服务提供器出故障,则在确保在另一服务提供器中没有具有组相似性的寻址实体后恢复它。
7.如前述权利要求中任意一个所述的方法,其中,如果服务提供器出故障,则重新分布发送到服务提供器的寻址实体。
8.如前述权利要求中任意一个所述的方法,其中,分布式计算系统是消息通知系统,寻址实体是消息而服务提供器是掌控一个或多个簇队列的实例的簇队列管理器。
9.一种用于分布式计算机系统中的相似性管理的系统,该系统包括每一个都具有标识符的多个寻址实体(311-315),其中具有相似性的寻址实体的组的每个成员的标识符是相同的组标识符;可由寻址实体利用来寻址以提供服务的实例的多个服务提供器(301-304)的列表;通过使用具有下列步骤的算法用于管理寻址实体到服务提供器的分布的装置将散列函数应用到寻址实体的标识符来获得标准整数(205),将标准整数除以列表中的服务提供器的数量并获得模数(206),以及通过参照模数选择服务提供器(207),和用于将寻址实体发送到所选择的服务提供器提供的服务的实例(208)的装置。
10.如权利要求9所述的系统,其中,周期地更新服务提供器的列表,并且在一个时间段内列表上的服务提供器的数量是恒定的。
11.如权利要求9或10所述的系统,其中,提供一种装置来提示列表中给出的服务提供器的工作负载管理器。
12.如权利要求9到11中任意一个所述的系统,其中,该系统包括由模数值参照的列表中的服务提供器的索引。
13.如权利要求9到12中任意一个所述的系统,其中,如果所选择的服务提供器不可用,则工作负载管理器以预定顺序将寻址实体发送到下一服务提供器。
14.如权利要求9到13中任意一个所述的系统,其中,如果服务提供器出故障,则提供装置来获取先前传送的寻址实体。
15.如权利要求9到14中任意一个所述的系统,其中,如果服务提供器出故障,则提供装置来在恢复故障的服务提供器之前,确保在另一服务提供器中没有具有组相似性的寻址实体。
16.如权利要求9到15中任意一个所述的系统,其中,如果服务提供器出故障,则提供装置来重新分布发送到服务提供器的寻址实体。
17.如权利要求9到16中任意一个所述的系统,其中,分布式计算系统是消息通知系统,寻址实体是消息而服务提供器是掌控一个或多个簇队列的实例的簇队列管理器。
18.一种可装入数字计算机的内部存储器的计算机程序产品,包括用于当在计算机上运行所述产品时执行权利要求1到10的计算机代码部分。
全文摘要
提供用于分布式计算机系统(100)中的相似性管理的方法和系统,其中需要在多个服务提供器(301-304)之间平衡多个寻址实体(311-315),同时保持寻址实体中的组相似性。为多个寻址实体中的每一个提供标识符,其中具有相似性的寻址实体的组的每个成员的标识符是同一组标识符。提供可由寻址实体利用来寻址以提供服务的实例的服务提供器列表。由一种算法管理寻址实体到服务提供器的分布。该算法包括将散列(hash)函数应用到寻址实体的标识符来获得标准整数(205);将标准整数除以服务提供器的数量并获得模数(206);以及通过参照模数选择服务提供器(207)。将寻址实体发送到所选择的服务提供器提供的服务的实例(306)。
文档编号G06F9/46GK1926517SQ200580006397
公开日2007年3月7日 申请日期2005年3月1日 优先权日2004年3月12日
发明者安德鲁·A·皮珀, 马尔科姆·M·沃维克, 詹姆斯·R·H·怀特 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1