专利名称:基于服务器加入集群的时间发送路由选择数据的制作方法
技术领域:
本发明的实施例通常涉及计算机。特别地,本发明的实施例通常 涉及经由网络连接的计算机系统的集群。
背景技术:
1948年EDVAC计算机系统的开发通常被引用为计算机时代的开 始。从那时起,计算机系统已经发展成非常复杂的设备,并且计算机 系统可以有许多不同的设置。计算机系统通常包含诸如半导体和电路 板的硬件和亦称为计算机程序的软件的组合。随着半导体处理和计算 机体系结构中的进步推动计算机硬件的性能更高,更成熟和更复杂的 计算机软件已发展成利用硬件的更高性能,从而产生比仅仅几年前的 计算机系统要强大得多的当今计算机系统。
多年前,计算机是不互相通信的独立设备,但是现在,计算机在
网络中被越来越多地连接在一起,并且被称作客户端的一个计算机可 以请求被称作服务器的另 一个计算机执行操作。随着因特网的出现, 这种客户端/服务器模型越来越多地用于在线商务和服务,例如在线拍 卖场、股票交易、银行业务、商务和信息存储和检索。
处理来自客户端的请求的服务器通常被组织成经由网络连接的 集群。集群中稳定的服务器状态是理想的,其中处于集群之中的服务 器以及服务器上可用的数据和服务是公知的和固定的。稳定的服务器 状态使得客户端请求在服务器变得可用之后立即使用该服务器,这样 客户端请求不会遇到错误。
与稳定的服务器状态相反,服务器的集群可能处于动荡的服务器 状态。动荡的服务器状态可由以下因素引起服务器针对集群的动态 添加和移除、数据项和服务针对服务器的动态添加和移除、集群中的服务器的启动以及服务器的故障。因为标识服务器及其数据和服务的 路由选择信息变得陈旧,所以动荡的服务器状态在查找集群中正确的 服务器来处理来自客户端的请求时产生问题。陈旧的路由选择信息可 使客户端请求遇到错误。例如,陈旧的路由选择信息可以使客户端请 求被路由到数据或服务不再可用(过迟)的服务器,并且可以使客户端 请求被路由到新数据或新服务尚未准备好处理请求(过早)的服务器。 因而,通常由动荡的服务器状态所引起的陈旧的路由选择信息会影响 客户端的用户满意度。
一种试图处理动荡的服务器状态以及所得到的陈旧的路由选择 信息的当前方案被称作公告牌方案。在公告牌方案中,集群中的一个
服务器被指定为协调员(coordinator),集群中的所有服务器都将其路 由选择信息发送给该协调员,并且所有客户端都从该协调员中取回集 群中的服务器的路由选择信息。如果将该协调员从集群中移除或该协 调员遇到错误,则选择新的协调员,并且每个服务器将其路由选择信 息重新投寄给该新协调员。因而,公告牌方案产生额外的网络业务量, 其不利地影响性能和用户满意度。
因而,需要一种更好的协调路由选择信息的技术。
发明内容
本发明提供了如权利要求l所述的在接收服务器处执行的一种方法。
本发明还提供了如权利要求9所述的在新服务器处执行的一种相 应的方法。
还提供了相应的系统和计算机程序。
这样,集群可响应动态加入和离开该集群的服务器,同时降低网 络业务量。
结合附图,此后描述本发明的各种实施例图l描述了用于实现本发明的一个实施例的示例性系统的框图。
图2A描述了根据本发明的 一个实施例的示例性服务器集群的框图。
图2B描述了根据本发明的一个实施例的加入服务器集群的示例 性新服务器的框图。
图3描述了根据本发明的一个实施例的示例性服务器集群的合并 的框图。
图4描述了根据本发明的一个实施例的示例性路由选择数据 (routing data)的才匡图。
图5描述了根据本发明的一个实施例的加入服务器集群的新服务 器的示例性处理的流程图。
图6描述了根据本发明的一个实施例的连接服务器集群的示例性 处理的流程图。
图7描述了根据本发明的一个实施例的广播消息的示例性处理的 流程图。
图8描述了根据本发明的一个实施例的响应于服务器离开网络进 行的示例性处理的流程图。
然而,应当注意,附图只图解了本发明的示例性实施例,因此不 被认为是对本发明范围的限制,本发明允许采用其它等效的实施例。
具体实施例方式
参考附图,其中类似编号表示若干附图中的类似部分,图l描述 了根据本发明的实施例的、连接到网络130的服务器计算机系统100的 高层框图表示。仅仅为了方便而使用术语"计算机系统"和,,服务器", 可以使用任何适当的电子设备,在各实施例中,计算机系统100可充 当客户端或服务器,并且在一种环境下充当客户端的计算机系统或电 子设备在另 一种环境下可充当服务器。服务器计算机系统100的主要 部件包含一个或多个处理器101、主存储器102、终端接口lll、存储 设备接口112、 1/0(输入/输出)设备接口113和通信/网络接口114,为了组件间通信,所有这些部件都经由存储器总线103、 1/0总线104和I/0 总线接口单元105连接起来。
月良务器计算机系统100包含一个或多个通用可编程中央处理单元 (CPU)101A、 101B、 101C和101D,其在本文中通称作处理器101。在 一个实施例中,计算机系统100包含相对大型系统的典型的多处理器; 然而,在另一个实施例中,计算机系统100可选地为单CPU系统。每 个处理器101执行存储在主存储器102中的指令,并且可包含一级或多 级板上高速緩存器。
主存储器102是一种用于存储数据和程序的随机访问半导体存储 器。主存储器102在概念上是单个单片集成电路实体,但是在其它实 施例中,主存储器102是一种更复杂的方案,例如高速緩存器和其它 存储器设备的层次结构。例如,存储器可以以多级高速緩存器的形式 存在,并且这些高速緩存器还可按功能进一步划分,从而一个高速援 存器保存指令,而另一个保存由一个或多个处理器使用的非指令数 据。如已知的那样,按照各种所谓的非均匀存储器访问(NUMA)计算 机体系结构中的任何一种形式,存储器还可以是分布式的并且与不同
的CPU或CPU组相关联。
主存储器102包含控制器158和服务159。虽然控制器158和服务 159被图解成被包含在计算机系统100中的存储器102内,但是在其它 实施例中,其一些或全部可以在不同的计算机系统上,并且可例如经 由网络130被远程访问。计算机系统100可使用虚拟寻址机制,其使得 计算机系统100的程序就像是其仅能访问大型的单存储设备实体,而 不是访问多个、较小的存储设备实体那样动作。因而,虽然控制器158 和服务159被图解成被包含在主存储器102内,但是这些单元不必同时 全部完全地包含于相同的物理存储装置中。此外,虽然控制器158和 服务159被图解成单独的实体,在其它实施例中,它们中的一些或它 们中的一些的一部分可被封装在一起。
在一个实施例中,控制器158包含存储在存储器102中的、能够在 处理器101上执行的指令,或能够由在处理器101上执行的指令解释的语句,以执行如下参照图5、 6、 7和8进一步描述的功能。在另一个实 施例中,控制器158可以用微代码或固件实现。在另一个实施例中, 控制器158可以用通过逻辑门和/或其它适当硬件技术的硬件来实现。
控制器158包含路由选择数据160、基于时间的管理器162、健康 监听器164、信息合并器166、信息广播器167和点到点发送器168。基 于时间的管理器162计算自从服务器加入服务器集群所经过的时间。 健康监听器164监视与服务器100或网络130相关的错误。信息合并器 166将信息合并成路由选择数据160。信息广播器167将广播消息发送 给网络130。点到点发送器168将点到点消息发送给附接于网络130的 服务器。路由选择数据160描述了连接到网络130的服务器100。下面 参照图4进一步描述路由选择数据160。
服务159是服务器100处可用的服务、功能或方法,并且在各种实 施例中,其可以是应用、用户应用、第三方应用、应用服务器、操作 系统、任何其它合适的服务或其部分或组合。
存储器总线103提供了用于在处理器101、主存储器102和I/O总线 接口单元105之间传送数据的数据通信路径。1/0总线接口单元105还 被连接到用于到/从各种I/0单元传送数据的系统1/0总线104。 1/0总线 接口单元105通过系统I/O总线104,与亦被称为I/0处理器(IOP)或I/0 适配器(IOA)的多个I/0接口单元111、 112、 113和114通信。系统1/0 总线104可以是例如工业标准PCI总线,或任何其它适当的总线技术。
1/0接口单元支持与各种存储设备和I/0设备的通信。例如,终端 接口单元111支持一个或多个用户终端121、 122、 123和124的附接。 存储设备接口单元112支持一个或多个直接访问存储设备(DASD)125、 126和127的附接(虽然直接访问存储设备(DASD)可选地是其它设备, 包括被配置成对主机来说就像是单个大型存储设备的盘驱动器阵列, 但是其通常为旋转磁盘驱动器存储设备)。主存储器102的内容可被存 储到直接访问存储设备125、 126和127,并且从直接访问存储设备125、 126和127中取回。
1/0设备接口 113提供了到各种其它输入/输出设备或其它类型设备中的任何一种的接口 。两个这样的设备-打印机128和传真机129在 图l的示例性实施例中被示出,但是在其它实施例中,可存在可能是 不同类型的许多其它这样的设备。网络接口114提供了从计算机系统 100到其它数字设备和计算机系统的一个或多个通信路径;这样的路 径可包含,例如, 一个或多个网络130。
虽然图1中所示的存储器总线103为提供在处理器101、主存储器 102和I/O总线接口105之间的直接通信路径的相对简单的单总线结 构,但实际上存储器总线103可包括多个不同的总线或通信路径,其 可被布置成各种形式中的任何一种,例如按层级、星形或网状配置的 点到点链路、多个分层级总线、平行和冗余路径等等。此外,虽然1/0 总线接口105和I/O总线104被显示为单个相应单元,但是计算机系统 100实际上可包含多个I/O总线接口单元105和/或多个I/O总线104。虽 然示出了将系统I/O总线104与通向各种I/O设备的各种通信路径分离
的多个i/o接口单元,但是在其它实施例中, 一些或所有i/o设备被直
接连接到 一个或多个系统I/0总线上。
图1中所描述的计算机系统100具有多个附接的终端121 、 122、 123 和124,例如可以是典型的多用户"大型机"计算机系统。通常,在这 种情况下,附接设备的实际数量大于图l中所示的,尽管本发明不局 限于任何特定规模的系统。计算机系统100可选地是单用户系统,通 常仅包含单个用户显示和键盘输入,或者可以是具有很少或没有直接 用户接口,但是从其它计算机系统(客户端)接收请求的服务器或类似 设备。在其它实施例中,计算机系统100可以被实现成个人计算机、 便携式计算机、膝上型或笔记本计算机、PDA(个人数字助理)、平板 电脑、掌上电脑、电话、传呼机、汽车、电话会议系统、电器或任何 其它适当类型的电子设备。
网络130可以是任何适当网络或网络的组合,并且可以支持适用 于数据和/或代码到/从计算机系统100的通信的任何适当协议。在各种 实施例中,网络130可代表被直接或间接地连接到计算机系统100的存 储设备或存储设备的组合。在一个实施例中,网络130可支持Infiniband。在另一个实施例中,网络130可支持无线通信。在另一个 实施例中,网络130可支持硬连线(hard-wired)通信,例如电话线或 电缆。在另一个实施例中,网络130可支持以太网IEEE(电气与电子工 程师协会)802.3x规范。在另一个实施例中,网络130可以是因特网, 并且可支持IP(网际协议)。在另一个实施例中,网络130可以是局域网 (LAN)或广域网(WAN)。在另一个实施例中,网络130可以是热区 (hotspot)服务提供商网络。在另 一个实施例中,网络130可以是内联网。 在另 一个实施例中,网络130可以是GPRS(通用分组无线业务)网络。 在另一个实施例中,网络130可以是FRS(家庭无线电服务)网络。在另 一个实施例中,网络130可以是任何适当的蜂窝数据网络或基于蜂窝 的无线网络技术。在另一个实施例中,网络130可以是IEEE 802.11B 无线网络。在再一个实施例中,网络130可以是任何适当网络或网络 的组合。虽然示出了一个网络130,但是在其它实施例中,可以存在 任何数量的(相同或不同类型的)网络。应当理解,图l意图描述计算机 系统100的代表性主要部件和高层的网络130,其各个部件可以具有比 图l中所表示的部件更大的复杂度,可以存在不同于或除了图l中示出 的那些部件之外的部件,并且这样的部件的数量、类型和结构可以有 所不同。本文揭示了这样的额外复杂度或额外变型的若干特定例子; 应当理解这些仅仅是举例来说,而不必是唯一的此类变型。
图1中所图解并且实现本发明的各种实施例的各种软件部件可以
用若干种方式,包含利用此后被称作"计算机程序"或简称为"程序" 的各种计算机软件应用、例程、部件、程序、对象、模块、数据结构
等等,来实现。计算机程序通常包括一个或多个指令或语句,其在各 种时间驻留在计算机系统100中的各种存储器和存储设备中,并且当 由计算机系统100中的一个或多个处理器读取并且执行时,其使计算 机系统100执行运行包括本发明的实施例的不同方面的步骤或单元所 需的步骤。
此外,虽然已经并且此后仍将在完全功能的计算机系统的情况下 描述了本发明的实施例,然而本发明的各个实施例能够被分布为各种形式的程序产品,并且无论用于实际执行分布的信号承载介质的特定 类型如何,本发明均同等适用。定义该实施例的功能的程序可经由各
种有形计算机可记录和可读信号承栽介质被传送给计算机系统IOO, 所述信号承载介质包含但不局限于
(1) 信息永久地存储在非可重写存储介质上,例如,附接于计算 机系统或在计算机系统内的只读存储器设备,诸如CD-ROM、DVD-R、 或DVD+R;
(2) 可改变信息存储在可重写存储介质上,例如,硬盘驱动器(例 如,DASD 125、 126或127)、 CD國RW、 DVD-RW、 DVD+RW、 DVD-RAM 或磁盘;或者
(3) 信息由通信介质传送,例如通过计算机或电话网络,例如网 络13(K
当承载指示本发明的功能的机器可读指令时,此类有形信号承载 介质代表本发明的实施例。
本发明的实施例还可以作为与客户公司、非营利性组织、政府实 体、内部組织机构等等的服务约定的一部分来传送。这些实施例的各 方面可包含配置计算机系统来执行,以及采用实现本文所描述的一些 方法或所有方法的软件系统和网络服务。这些实施例的各方面还可以 包含分析客户公司,根据分析建立建议,生成软件以实现建议的各部 分,将软件集成到现有的处理和基础设施中,计量本文所描述的方法 和系统的使用,分配费用给用户,以及针对用户对这些方法和系统的 使用对用户记费。此外,根据在本发明的具体实施例中实现的应用, 可以标识此后所描述的各种程序。但是,使用下述的任何特定程序术 语仅仅是为了方便,因而本发明的实施例不应被局限于仅在由这样的 术语所标识和/或暗示的任何具体应用中的使用。
图l中所图解的示例性环境不意欲限制本发明。实际上,在不偏 离本发明的范围的情况下可以使用其它可选硬件和/或软件环境。
图2A描述了根据本发明的一个实施例的服务器100的示例性集 群202的框闺。集群202还可以被称作分区(partition)或组。任意数量的服务器100可被组织成集群202,并且任意数量的集群可以存在。集 群202中的服务器100可互相发送请求(经由图1的网络130),其每一个 均使用服务159。服务器100中的任何一个可充当客户端。
图2B描述了根据本发明的一个实施例的加入包含服务器100-1、 100-2、 100-3、 100-4和100-5的集群202-1的示例性新服务器100-6的框 图。服务器100(图1)通常是指服务器100-1、 100-2、 100-3、 100-4、 100-5 和100-6。集群202(图2A)通常是指集群202-1。服务器100-1、 100-2、 100-3、 100-4、 100-5和100-6经由网络130被连接。
服务器100-1是集群202-1中最老的服务器,这意味着服务器100-1 已经在集群202-l中最久,是集群202-l的最初成员,因而在加入集群 202-1的服务器100-2、 100-3、 100-4、 100-5和100-6之前加入集群202-1。 最老的服务器100-1的指定可以随着服务器100离开和加入集群202-1 而变化。服务器100-1、 100-2、 100-3、 100-4和100-5是集群202-1的预 先存在的成员,这意味着其已经连接到网络130并且先前已经从最老 的服务器100-1接收到识别集群202-l中的各种服务器和可用服务159 的路由选择数据160。
服务器100-6是集群202-l中的新服务器,这意味着其在其它服务 器100画1、 100-2、 100-3、 100-4和100-5之后加入集群202-1。响应于新 服务器100-6连接到网络130,新服务器100-6经由网络103将广播消息 205发送给集群202-1,该消息包含识别新服务器100-6的记录,并且包 含有关新服务器100-6和新服务器100-6上可用的服务159的信息。在广 播消息发送(broadcast messaging)中,新服务器100-6无需必须知道接 收服务器100-1、 100-2、 100-3、 100-4和100-5的网络地址,相同的消 息205就被发送给集群202-l中的所有服务器。取而代之,新服务器 100-6将广播消息205发送给集群202-1的地址,而网络130将广播消息 205发送到集群202-1中的服务器100-1、 100-2、 100-3、 100-4和100画5 中的每一个。广播消息发送亦被称为多播(multi-casting)。
广播消息205由连接到网络130的所有服务器100-1、 100-2、 100-3、 100-4和100-5接收。响应于接收到广播消息205,最老的服务器100-1将接收到的记录添加到其路由选择数据160的拷贝,并且将包含全局 资源数据160的点到点消息210发送给新服务器100-6,所述全局资源数 据160代表集群202-1中的所有服务器100-1、 100-2、 100-3、 100-4和 100-5。最老的服务器100-1将点到点消息210唯一地发送给新服务器 100-6,这意味着最老的服务器100-1不将点到点消息210发送给其它服 务器100-2、 100-3、 100-4和100-5。点到点消息还被称作单播消息。响 应于接收广播消息205,服务器100-2、 100-3、 100-4和100-5将所接收 的记录添加到其路由选择数据160的相应拷贝中,但是因为最老的服 务器100-1已经用包含代表集群202-l中的所有服务器的路由选择数据 160的单个点到点消息210进行了响应,所以不需要将其相应的路由选 择数据发送给新服务器100-6。
图3描述了根据本发明的一个实施例的示例性集群202-2和集群 202-3的合并的框图。集群202-2包含服务器100-7、 100-8和100-9。集 群202-3包含服务器100-10、 100-11和100-12。服务器100(图l)通常是 指月艮务器100國7、 100-8、 100-9、 100-10、 100-11和100國12。集群202(图 2A)通常是指集群202-2和202-3。在一个实施例中,集群202-2和202-3 先前被连接成一个集群202,但是丢失了其彼此连接,被分开,而现 在被重新连接。作为被断开的结果,如下面参照图8进一步描述的, 在丢失的集群中的服务器的记录被从路由选择数据160中移除。在另 一个实施例中,集群202-2和202-3先前未被连接,但是现在正在被连 接。
响应于集群202-2中的最老的服务器100-7检测到到集群202-3的 连接(或重新连接),最老的服务器100-7将广播消息305发送给集群 202-3的所有服务器100-10、 100-11和100-12。虽然集群202-2中的服务 器100-8和100-9可检测到到集群202-3的连接,但是因为其不是集群 202-2中的最老的服务器,所以其不发送广播消息305。广播消息305 包含集群202-2中的所有服务器100-7、 100-8和100-9的路由选择数据 160-2中的所有记录。
响应于接收到广播消息305,接收服务器10(M1和100-12将来自广播消息305的路由选择数据160-2的记录添加到其路由选择数据 160-3的相应拷贝中,但是因为其不是集群202-3中的最老的服务器, 所以其不做应答。响应于接收到广播消息305,接收服务器100-10通过 检查其路由选择数据160-3的拷贝而确定其为集群202-3中的最老的服 务器,并且将点到点消息310发送给集群202-2中的最老的服务器 100-7。点到点消息310包含集群202-3中的所有服务器100-10、 100-11 和100-12的路由选择数据160-3中的所有记录。
响应于接收到点到点消息310,最老的服务器100-7随后将广播消 息315发送给集群202-2中的服务器100-8和100-9,该消息包含来自所 接收的路由选择数据160-3的记录。集群202-2中的接收服务器100-8和 100-9将来自所接收的路由选择数据160-3的记录添加到其路由选择数 据160-2的拷贝中。然后,集群202-2中的最老的服务器100-7将来自所 接收的路由选择数据160-3的记录添加到其路由选择数据160-2的拷贝 中。现在集群202-2和202-3被合并成单个集群,并且如合并后的路由 选择数据160-2和160-3中表明的那样,新的单个集群中的最老的服务 器是服务器100-7和100-11中较老的服务器。
图4描述了根据本发明的一个实施例的路由选择数据160的示例 性数据结构的框图。路由选择数据160包含记录405、 410和415,但是 在其它实施例中,可能存在具有任何适当数据的任意数量的记录。记 录405、 410和415中的每一个包含服务器标识字段420、资源数据字段 425和时间戳字段430,但是在其它实施例中可能存在更多或更少的字 段。
服务器标识字段420标识与记录相关的服务器100。在各种实施例 中,服务器标识字段420可包含网络地址、IP(网际协i义)地址、MAC 地址(媒体访问控制)地址、或者能够用于访问或发送消息、请求或数 据给服务器100的任何其它类型的标识符。
在各种实施例中,资源数据425可包含服务器100上的资源或服务 159的资源标识符、服务器100上的资源或服务159的状态、服务159的 内容、服务159上的待处理请求的数量或类型、服务器100上的处理器101的CPU利用率、服务器100的存储器使用、和端点。但是,在其它 实施例中,资源数据425可包含其它服务器可能希望接收的任何适当 数据。
时间戳字段430标识相关服务器420加入集群的时间。服务器420 加入集群的时间可能是服务器420连接到网络的时间,或者服务器420 发送广播消息205的时间。因而,在图4的例子中,因为记录405具有 最早的时间戳430,所以记录405标识了集群中的最老的服务器。
图5描述了根据本发明的一个实施例的新服务器加入集群的示例 性处理的流程图。控制从模块500开始。然后,控制前进到模块505, 其中新服务器100-6连接到网络130,并且确定集群202-l的地址。然后 控制继续到模块510,其中新服务器100-6上的控制器158利用标识新服 务器100-6的服务器标识420,利用有关新服务器100-6上可用的服务 159的资源数据425 ,以及标识当前时间(可能包含日期)的时间戳430 , 建立记录。
接着控制继续到模块515,其中新服务器100-6上的控制器158经 由网络130中的集群202-l的已确定的地址,将包含所建立的记录的广 播消息205发送给集群202-l中的所有服务器100。然后,控制继续到模 块520,如下面参照图7进一步描述的,其中集群202-l中的服务器100 接收并且处理广播消息205。
然后,控制继续到模块525,其中新服务器100-6上的控制器158 接收具有路由选择数据160的点到点消息210,路由选择数据160包含 集群202-l中的所有服务器100的记录。点到点消息由集群202-1中的最 老的服务器100-1发送,并且被唯一地发送给新服务器100-6,而非发 送给集群202-l中的其它服务器100-2、 100-3、 100-4和100-5。
然后,控制继续到模块530,其中新服务器100-6上的控制器158 通过路由选择数据160,将请求发送给网络130的集群202-1中的其它服 务器上的服务159。控制器158可使用路由选择数据160来寻找资源数 据425中的适当服务,并且确定与期望的适当服务器相关的服务器标 识符420,然后将请求发送给所确定的服务器标识符420。这样,控制器158通过所接收的路由选择数据160,向集群202中的 一个或多个服 务器100请求一个或多个服务159。然后,控制继续到模块599,其中 图5的逻辑返回。
图6描述了根据本发明的 一个实施例的连接服务器的集群的示例 性处理的流程图。控制从模块600开始。然后,控制继续到模块605, 其中集群202-2中的服务器100上的控制器158连接到集群202-3。然后, 控制继续到模块610,其中服务器100上的控制器158确定服务器100是 否是集群202-2中的最老的服务器100-7,即控制器158通过确定连接到 集群202-3的服务器100的时间430是否在路由选择数据160-2中的所有 其它服务器的时间430之前或比其早,来确定服务器100是否在集群 202-2中的所有其它服务器之前加入集群202-2。
如果模块610处的确定是真,则连接到集群202-3的服务器100的 确在集群202-2中的所有其它服务器之前加入集群202-2,并且是集群 202-2中的最老的服务器100-7,这样控制继续到模块615,其中最老的 服务器100-7上的控制器158将广播消息305发送给集群202-3。广播消 息305包含集群202-2中的所有服务器100-7、 100-8和100-9的路由选择 数据160-2中的所有记录。
然后,控制继续到模块620,其中如下面参考图7进一步描述的, 集群202-3中的服务器处理广播消息305。然后,控制继续到模块625, 其中集群202-2中的最老的服务器100-7上的控制器158从集群202-3中 的最老的服务器100-10接收点到点消息310,点到点消息310包含集群 202-3中的所有服务器100-10、 100-11和100-12的路由选择数据160-3 中的所有记录。
然后,控制继续到模块630,其中集群202-2中的最老的服务器 100-7上的控制器158将广播消息315发送给集群202-2中的所有服务器 100-8和100-9。广播消息315包含集群202-3中的所有服务器100-10、 100-11和100-12的路由选择数据160-3中的所有记录。然后,控制继续 到模块635,其中集群202-2中的服务器接收广播消息,合并其路由选 择数据160-3和160-2的拷贝,并且如下面参照图7进一步描述的,通过合并后的路由选择数据,将请求发送给集群202-2和202-3中的服务器。 然后,控制继续到模块640,其中集群202-2中的最老的服务器100-7 上的控制器158合并其路由选择数据160-3和160-2的拷贝,并且通过合 并后的路由选择数据,将请求发送给集群202-2和202-3中的服务器。 然后,控制继续到模块699,其中图6的逻辑返回。
如果模块610处的确定是假,则连接到集群202-3的集群202-2中 的服务器IOO未在集群202-2中的所有其它服务器之前加入集群202-2 , 所以连接到集群202-3的服务器100是服务器100-8或100-9,这样控制 继续到模块699,其中图6的逻辑返回,
图7描述了根据本发明的一个实施例的用于处理广播消息的接收 的服务器上的示例性处理的流程图。控制从模块700开始。然后,控 制继续到模块705,其中接收服务器上的控制器158从发起服务器(发送 广播消息的服务器)接收广播消息(例如,广播消息205、 305或315)。 所接收的广播消息包含一个或多个记录405、 410或415,其与发起服 务器有关,或者其与集群202中的所有服务器有关。
然后,控制继续到模块710,其中控制器158确定接收服务器是否 是路由选择数据160的本地拷贝中的最老的服务器。控制器158通过比 较与接收服务器相关的路由选择数据160的记录中的时间戳430与路 由选择数据160中的其它记录的时间戳430 ,并且确定接收服务器加入 集群202的时间430是否早于其它服务器加入集群202的时间"0来做 出确定。
如果接收服务器的时间戳430是集群202的路由选择数据160中的 最早时间(在所有其它时间之前),则接收服务器是集群202中的最老的 服务器(例如,服务器100-1、100-7或100-10),这样控制继续到模块715, 其中接收服务器上的控制器158从集群202中的所有服务器的路由选 择数据160的其本地拷贝中取回记录,将取回的记录添加到点到点消 息,并且将该点到点消息(例如,点到点消息210或310)发送到发起广 播消息的服务器(例如服务器100-6或100-7)。
然后,控制继续到模块720,其中接收服务器上的控制器158计算差值=(tl +t3)/2-t2,其中 t2-广播消息的到达时间;
tl =与发起服务器相关的广播消息中的所接收的记录中的时间 戳430,其为广播消息的发起服务器加入集群202的时间;以及
t3 =接收服务器将点到点消息发送给发起服务器的时间(上面参 照模块715已经描述的)。
然后,控制继续到模块725,其中接收服务器上的控制器158将计 算的差值添加到与发起广播消息的服务器相关的所接收的记录中的 时间戳430。这样,接收服务器上的控制器158通过所计算的差值调整 发起服务器加入集群202的时间,来说明发起服务器决定加入集群的 时间与集群202中的最老的服务器实现发起服务器加入集群202的时 间之间的延迟。
然后,控制继续到模块730,其中接收服务器上的控制器158累加 来回行程的定时数据,并且利用多种活动调整该计算数据。
然后,控制继续到模块735,其中接收服务器上的控制器158将广 播消息中的所接收的记录添加到路由选择数据160,并且基于时间戳 430,将路由选择数据160中的记录排序。
然后,控制继续到模块740,其中接收服务器上的控制器158寻找 资源数据425中所标识的适当服务159,并且通过相关的服务器标识符 420,将请求发送给集群202中的服务器100上的服务159。
如果模块710上的确定为假,则接收服务器不是路由选择数据160 的本地拷贝中的最老的服务器(即,接收服务器在比集群202中的其它 服务器100更早的时间没有加入集群202),这样如上面已经描述的,控 制继续到模块735。
图8描述了根据本发明的一个实施例的响应于服务器离开网络 130的示例性处理的流程图。控制从模块800开始。然后,控制继续到 模块80S,其中控制器158确定服务器100是否已经离开集群202,例如, 离开网络130的服务器100是否已经遇到错误,或者已经变得不可到 达。如果模块805上的确定为真,则服务器100已经离开集群202,服务器100已经离开网络130,服务器100已经遇到错误,或者服务器IOO 不可到达,这样控制继续到模块810,其中控制器158从与模块805处 确定的服务器100相关的路由选择数据160中,通过服务器标识符字段 420寻找记录,并且从路由选择数据160中移除记录。然后,控制继续 到模块899,其中图8的逻辑返回。
如果模块805处的确定为假,则控制继续到模块899,其中图8的 逻辑返回,
在本发明的示例性实施例的前面详细描述中,对形成本文中的部 分的附图(其中类似编号代表类似单元)进行参考,并且在所述附图中 通过图解示出了可以实施本发明的特定示例性实施例。这些实施例被 足够详细地描述,以使得本领域技术人员能够实践本发明,但是可以 使用其它实施例,并且在不偏离本发明的范围的情况下,可以做出逻 辑、机械、电气以及其它改变。如该说明书内使用的词语"实施例"的 不同实例不必是指相同的实施例,但是其可以是指相同的实施例。本 文所图解或描述的任何数据与数据结构仅仅为例子,并且在其它实施 例中,可以使用不同数量的数据、数据的类型、字段、字段的数量和 类型、字段名、记录的数量和类型、条目、或者数据的组织。此外, 任何数据可以与逻辑相结合,使得单独的数据结构是不必的。因此, 前面的详细描述不会被认为是限制的意思,并且本发明的范围仅仅由 所附权利要求书所限定。
在前面的描迷中,提出了多个具体细节来提供对本发明的透彻了 解。但是,没有这些细节也可以实施本发明。在其它实例中,为了不 遮蔽本发明,未详细地示出众所周知的电路、结构和技术。
权利要求
1.一种在多个服务器的集群中的接收服务器处执行的方法,包括从新服务器接收广播消息,其中所述新服务器将所述广播消息发送给所述多个服务器的集群;确定所述接收服务器是否在所述集群中的多个服务器中的所有其它服务器之前加入所述集群;以及如果所述确定为真,则将点到点消息发送给所述新服务器,其中所述点到点消息包括有关所述集群中的多个服务器中的全部服务器的路由选择数据。
2. 如权利要求l所述的方法,其中所述广播消息包括 包括所述新服务器的标识、有关所述新服务器的资源数据和所述新服务器加入所迷集群的时间的记录。
3. 如权利要求2所述的方法,还包括 将所述记录添加到所述路由选择数据中。
4. 如权利要求3所述的方法,还包括 通过所述记录,将请求发送给所述新服务器。
5. 如权利要求l所述的方法,其中所述路由选择数据包括与所述多个服务器相关的多个记录,其中所述多个记录中的每一 个包括相应服务器的标识、由相应服务器提供的资源和相应服务器加 入所述集群的时间,其中所述接收服务器基于多个记录中的时间执行 所述确定。
6. 如权利要求5所述的方法,还包括如果所述多个服务器中的一个服务器离开所述集群,则将与离开 所述集群的所述一个服务器相关的记录从所述路由选择数据中移除。
7. 如权利要求l所述的方法,其中所述发送点到点消息还包括 将所述点到点消息唯一地发送给所述新服务器。
8. 如权利要求2所述的方法,还包括如果所述确定为假,则将所述记录添加到所述路由选择数据。
9. 一种在想要加入服务器集群的新服务器处执行的方法,包括 将广播消息发送给经由网络连接的所迷服务器集群;以及 从第 一多个服务器的第 一 集群的协调服务器接收点到点消息,其中所述协调服务器在所述第一多个服务器中的所有其它服务器之前 加入所述第一集群,并且其中,所述点到点消息包括有关所述第一集 群中的所述第一多个服务器中的全部服务器的路由选择数据,并且其 中,所述新服务器唯一地接收所述点到点消息。
10. 如权利要求9所述的方法,其中所述路由选择数据包括所 述集群中的所有服务器的标识、由所述集群中的所有服务器提供的资源以及所述服务器中的每一个加入所述集群的时间。
11. 如权利要求10所述的方法,还包括通过所述路由选择数据,将请求发送给所迷服务器中的一个服务 器上的至少一个资源。
12. 如权利要求9所述的方法,还包括将时间存储在所述广播消息中,其中所述时间包括所述新服务器 加入所述集群的时间。
13. 如权利要求9所述的方法,还包括将所述新服务器的标识和资源数据存储在所述广播消息中,其中 所述资源数据描述在所述新服务器处可用的至少一个服务。
14. 一种系统,所述系统包括适合于执行根据任何一个前述方法 权利要求所述的方法的所有步骤的装置。
15. —种计算机程序,所述计算机程序包括用于在所述计算机程 序在计算机系统上执行时执行根据任何一个前述方法权利要求所述 的方法的所有步骤的指令。
全文摘要
提供了一种方法、装置、系统和信号承载介质,在一个实施例中,其用于将广播消息发送到服务器集群并从集群的协调服务器接收点到点消息,其中协调服务器在集群中的所有其它服务器之前加入集群。点到点消息包含有关集群中的所有服务器的路由选择数据。在一个实施例中,广播消息包含含有新服务器的标识、有关新服务器的资源数据和新服务器加入集群的时间的记录,并且集群中的服务器将该记录添加到路由选择数据,并且通过记录将请求发送给新服务器。在另一个实施例中,广播消息包含第二个集群中的所有服务器的记录,并且新服务器将路由选择数据发送给第二集群中的服务器。如果服务器离开集群,则其记录被移除。这样,集群可响应动态地加入和离开集群的服务器,同时降低网络业务量。
文档编号H04L12/56GK101300796SQ200680041285
公开日2008年11月5日 申请日期2006年10月26日 优先权日2005年11月17日
发明者K·W·萨特, P·J·戴克斯, W·纽波特, 沈金梅, 浩 王 申请人:国际商业机器公司