提供使用最少带宽的故障检测的方法和系统的制作方法

文档序号:7970377阅读:286来源:国知局
专利名称:提供使用最少带宽的故障检测的方法和系统的制作方法
技术领域
本发明通常涉及故障检测,并具体涉及一种提供使用最少带宽的故障检测的方法、系统以及计算机程序产品。
背景技术
在典型的企业计算机配置中,诸如应用服务器层之类的一个计算机层需要知道诸如数据库层之类的另一层或者另一层中任意给定的机器何时变成不可用。这种需求的一个引人注目的示例就是这样一个数据库该数据库保持着关联于它的打开的TCP/IP连接的锁定(lock)。当在连接另一端的实体变成不可用时,识别这个事件并释放该数据库的锁定很重要。为了缩短任何可能的运转中断,故障检测时间应该尽可能小,而且用于这样做的机器不应该对那些在正常运转状况下在各个层之间流动的数据产生显著的干扰(例如,过多的带宽使用)。
一种已知的故障检测方法涉及使用专用连接来执行标准的心跳。在这种方法中,在两个节点之间总是开放一个连接。不论在同样的这两个节点之间的任何其它连接的状态如何,探查分组都在已配置的时间间隔上通过这个连接而被发送。如此,对于每个节点都存在固定的带宽使用,仅仅用来查验(ping)另一个节点的活动/无效状态。
另一种已知的故障检测方法涉及使用在逐个连接的基础上的TCP“KeepAlive”。这个方案的主要缺点是它必须在逐个节点(即系统范围)的基础上被配置。这意味着所有的应用都必须使用相同的超时值。另一个缺点是它彼此独立地测试连接,而不管它们是否连接到相同的计算机上。换言之,如果在节点A和B之间开放着三条连接,那么这些连接的每一个都发送心跳。每个连接然后必须彼此独立地超时,这样做很低效。

发明内容
本发明提供一种用于提供使用最少带宽的故障检测的方法、系统以及计算机程序产品。
本发明的第一个方面是针对一种在多节点系统中进行故障检测的方法,包括把第一节点和第二节点之间的所有连接与最后接收值和最大空闲值相关联;计算所述最后接收值和当前时间之间的差值;并且如果所述最后接收值和所述当前时间之间的差值超过最大空闲值,则建立从第一节点到第二节点的心跳连接。
本发明的第二个方面是针对一种在多节点系统中进行故障检测的系统,包括用于把第一节点和第二节点之间的所有连接与最后接收值和最大空闲值相关联的系统;用于计算所述最后接收值和当前时间之间的差值的系统;和用于如果所述最后接收值和所述当前时间之间的差值超过最大空闲值,则建立从第一节点到第二节点的心跳连接的系统。
本发明的第三个方面是针对一种存储在计算机可读媒体上用于在多节点系统中进行故障检测的程序产品,该计算机可读媒体包括用于执行如下步骤的程序代码把第一节点和第二节点之间的所有连接与最后接收值和最大空闲值相关联;计算所述最后接收值和当前时间之间的差值;并且如果所述最后接收值和所述当前时间之间的差值超过最大空闲值,则建立从第一节点到第二节点的心跳连接。
本发明的第四个方面是针对一种用于在多节点系统中部署用于故障检测的应用的方法,包括提供计算机基础设施,其可操作来把第一节点和第二节点之间的所有连接与最后接收值和最大空闲值相关联;计算所述最后接收值和当前时间之间的差值;并且如果所述最后接收值和所述当前时间之间的差值超过最大空闲值,则建立从第一节点到第二节点的心跳连接。
本发明的第五个方面是针对被实现于用于在多节点系统中进行故障检测的传播信号中的计算机软件,该计算机软件包括使得计算机系统执行如下功能的指令把第一节点和第二节点之间的所有连接与最后接收值和最大空闲值相关联;计算所述最后接收值和当前时间之间的差值;并且如果所述最后接收值和所述当前时间之间的差值超过最大空闲值,则建立从第一节点到第二节点的心跳连接。


结合附图从本发明各个方面的以下详细描述中,本发明的这些以及其它特征将变得更易理解,在附图中图1描述了根据本发明实施例的故障检测过程的流程图。
图2描述了根据本发明实施例的包括故障检测系统在内的示例性多节点系统。
图3描述了根据本发明实施例的心跳方案。
图4描述了用于实现本发明实施例的示例性计算机系统。
这些附图只是示意性的表述,而非旨在描绘本发明的具体参数。附图旨在仅仅描述本发明的典型实施例,并且因此不应该被认为限制本发明的范围。在附图中,同样的标号表示同样的单元。
具体实施例方式
一般来讲,本发明提供一种提供使用最少带宽的故障检测的方法、系统以及计算机程序产品。具体来讲,本发明降低了用于心跳目的所使用的带宽量。代替如现有技术中那样使用专用的心跳连接,本发明监控去向/来自给定节点的所有连接的活动。它跟踪该节点的空闲时间,并且每当出现与该节点的通信时就重置该空闲时间。这样的通信可以包括从该节点接收到数据或者数据成功发送到该节点,或者是与该节点的连接成功建立。只有当这个空闲时间达到一个(用户配置的)级别时才开始心跳。在此时,为了心跳的目的而打开与该节点的新连接。通过假设该节点可以通过观察在仅仅一个连接上的活动而被声明为活动,本发明消除了连续心跳的需要(和成本)。通过对已创建的连接执行分析来确定过程关联并相应地将连接进行归组,心跳的规模可以从“逐个节点”变窄到“逐个过程”。
根据本发明实施例的故障检测过程的流程图10如图1所示。将参考图2中所述的示例性多节点系统20来描述该故障检测过程。正如所示出的那样,多节点系统20包括多个(本示例中为4个)节点节点A、节点B、节点C、节点D。节点D被示出为包括故障检测系统22,尽管很显然多节点系统20中的其它节点也可以包括类似的故障检测系统22。一般来说,这样的多节点系统将包括任意数量的节点以及节点之间任意数量的连接。
在步骤S1,两个节点(或者过程,如果过程是所希望的粒度的话)之间的所有连接24与“LastReceipt”值和最大空闲值“MaxIdle”相关联。此MaxIdle值表示在假定故障情形已经发生之前的最大时间间隔。该MaxIdle值可以被多节点系统10的用户配置或者可以使用任何现在已知的或者以后开发的方法来确定。例如,在图2中,LastReceipt值“02:58:30”和MaxIdle值“10s”与节点D和节点A之间的连接24相关联。类似地,LastReceipt值“02:58:23”和MaxIdle值“5s”与节点D和节点B之间的连接24相关联,而LastReceipt值“02:58:25”和MaxIdle值“15s”与节点D和节点C之间的连接24相关联。任何时候只要通过位于节点D和其它节点之一之间的任何连接24成功接收或发送数据(步骤S2),或者是在节点D和其它节点之一之间成功创建新连接24(步骤S3),则在步骤S4中,与该节点相关联的相应“LastReceipt”值被重置为当前时间28。例如在图2中,在节点A和节点D之间已经建立了新的连接24(点线)。如此,与节点A相关联的“LastReceipt”值已被重置为当前时间“02:58:30”28。
故障检测系统22包括背景轮询线程26,其周期性地运行并且检查(步骤S5)所有LastReceipt值和当前时间28之间的差值。用于实现背景轮询线程26的示例性代码片断例如可以包括while(true){for each node:
if(CurrentTime-node.LastReceipt>node.MaxIdle)
node.startHeartBeat()pause;}如果由背景轮询线程26确定的差值超过了给定节点的MaxIdle值,则在步骤S6打开与该节点的心跳连接并且在步骤S7启动心跳过程。例如在图2中,可以看到,对于节点B,LastReceipt值“02:58:23”和当前时间“02:58:23”28之间的差值(即,7s)大于节点B的MaxIdle时间(即,5s)。结果,在节点D和节点B之间打开心跳连接30并且由心跳系统32启动心跳过程以便确定节点B的状况。根据本发明可以使用任何适合的心跳过程。
示出本发明的故障检测过程的示例性方案如图3所述。在这个方案中有两个节点节点A、节点B。
在时间T=0处创建从节点A到节点B的新连接24;节点A知道节点B处于活动状态;在时间T=2处创建从节点B到节点A的新连接24;节点A知道节点B处于活动状态;在时间T=4处通过连接24,数据(虚线)从节点A成功发送到节点B;节点A知道节点B处于活动状态;在时间T=6处通过连接24,数据被节点A从节点B接收;节点A知道节点B处于活动状态;在时间T=10处创建从节点B到节点A的新连接24;节点A知道节点B处于活动状态;在时间T=12处通过连接24,数据从节点A成功发送到节点B,并且通过连接24,数据被节点A从节点B接收;节点A知道节点B处于活动状态;在时间T=22处节点B的MaxIdle值10s被节点A的背景轮询线程观察到;打开从节点A到节点B的心跳连接30;在时间T=28处心跳从节点A成功发送到节点B;节点A知道节点B处于活动状态;
在时间T=30处通过连接24,数据被节点A从节点B接收;节点A知道节点B处于活动状态并且中断心跳连接30。
从上述方案可以看出本发明的故障检测过程不需要在节点之间使用专用的心跳连接来检测故障。相对地,本发明的故障检测过程只检查在节点之间的现有连接上发生的活动来检测故障。
通过在心跳连接30创建并运行后拉紧心跳之间的时间长度,还可以进一步节省带宽。存在若干执行自适应心跳的已知方法。此类方法之一是监控节点用来确认心跳所需的时间量,并且把这些值的历史记录存档。从这个存档中,可以生成给定节点已经出故障的时间点概率。根据本发明,可以使用附加的被称为maxHeartbeatBandwidth的配置参数,该参数限定了被心跳所使用的带宽量。基于该参数,可以确定最大心跳频率。最大心跳频率(或较低频率)可以被用作为初始自适应心跳间隔。然后,心跳频率可以按照已知的方式来确定。
根据本发明实施例用于提供使用最少带宽的故障检测的计算机系统100如图4所述。计算机100包括分布式系统中的多个节点101中的一个。计算机系统100被提供于计算机基础设施102中。计算机系统100意在表示能够执行本发明的讲授的任何类型的计算机系统。例如,计算机系统100可以是膝上型计算机、台式计算机、工作站、手持式设备、服务器、计算机群等等。另外,正如将在下面进一步描述的那样,计算机系统100可以由提供用于根据本发明提供使用最少带宽的故障检测的服务的服务供应商来部署和/或操作。应该理解用户104可以直接访问计算机系统100,或者可以操作通过网络106(例如因特网、广域网(WAN)、局域网(LAN)、虚拟专用网(VPN)等等)与计算机系统100通信的计算机系统。在后一种情况下,在计算机系统100和用户操作的计算机系统之间的通信可以经由各种类型的通信链路的任意组合而发生。例如,通信链路可以包括能够利用有线和/或无线传输方法的任意组合的可寻址连接。当通信经由因特网发生时,可以通过传统的基于TCP/IP套接的协议来提供连接,并且因特网服务供应商可以被用于建立对因特网的连接。
计算机系统100被示出包括处理单元108、存储器110、总线112和输入/输出(I/O)接口114。另外,计算机系统100被示出与外部设备/资源116以及一个或多个存储系统118通信。一般来说,处理单元108执行存储于存储器110和/或一个或多个存储系统118中的计算机程序代码,例如故障检测系统22。在执行计算机程序代码的同时,处理单元108可以从存储器110、一个或多个存储系统118和/或I/O接口114中读取数据和/或写入数据到其中。总线112提供计算机系统100中的各个组件之间的通信链路。外部设备/资源116可以包括使用户能够与计算机系统100相交互的任何设备(例如,键盘、点击设备、显示器(例如显示器120)、打印机等等),和/或使计算机系统100能够与一个或多个其它计算设备通信的任何设备(例如网卡、调制解调器等等)。
计算机基础设施102只是示意说明了可被用于实现本发明的各种类型的计算机基础设施。例如,在一实施例中,计算机基础设施102可以包括通过网络(例如网络106)进行通信以便执行本发明的各个过程步骤的两个或更多计算设备(例如服务器群)。而且,计算机系统100只表示可被用在本发明实践中的多种类型的计算机系统,其中的每一个都可以包括硬件/软件的多种组合。例如,处理单元108可以包括单个处理单元,或者可以被分布于一个或多个位置中的一个或多个处理单元中,例如在客户机或服务器上。类似地,存储器110和/或一个或多个存储系统118可以包括驻留于一个或多个物理位置上的各种类型的数据存储和/或传输媒体的任意组合。另外,I/O接口114可以包括用于与一个或多个外部设备/资源116交换信息的任意系统。此外,应该理解,未在图4中示出的一个或多个附加组件(例如系统软件、通信系统、高速缓冲存储器等等)可被包括在计算机系统100中。可是,如果计算机系统100包括手持式设备或类似物,则应该理解,一个或多个外部设备/资源116(例如显示器)和/或一个或多个存储系统118可被包含在计算机系统100之中,而非如图所示出那样是外部的。
一个或多个存储系统118可以是能够根据本发明提供信息存储的任意类型的系统(例如数据库)。此类信息例如可以包括LastReceipt值、MaxIdle值等等。在这个程度上说,一个或多个存储系统118可以包括诸如磁盘驱动器或光盘驱动器之类的一个或多个存储设备。在另一实施例中,一个或多个存储系统118可以包括例如分布于局域网(LAN)、广域网(WAN)或存储区域网(SAN)(未示出)的数据。而且,虽然没有示出,但是用户104操作的计算机系统可以包含与在上面关于计算机系统100而描述的组件相类似的计算机化的组件。
在存储器110中示出的(例如,作为计算机程序产品)是用于根据本发明实施例提供使用最少带宽的故障检测的故障检测系统22。该故障检测系统22包括关联系统130,用于把和其它节点101的连接与LastReceipt值和MaxIdle值相关联;LastReceipt重置系统132,如果确定节点101处于活动状态,则该系统132用于重置节点101的LastReceipt值;背景轮询线程26,用于计算节点101的LastReceipt值和当前时间28之间的差值并且基于该差值确定MaxIdle违规;和心跳系统32,用于建立与节点101的心跳连接30并且用于执行与该节点的心跳过程(自适应或者非自适应)。
本发明可以被提供作为一种基于预订或交费基础上的商业方法。例如,本发明的一个或多个组件可以被向顾客提供在此所述功能的服务供应商来创建、维护、支持和/或部署。也就是说,服务供应商可以被用于提供如上所述提供使用最少带宽的故障检测的服务。
还应该理解本发明可以用硬件、软件、传播信号、或者它们的任意组合来实现。任何种类的计算机/服务器系统(或者其它适于执行在此所述方法的装置)都是适合的。硬件和软件的典型组合可以包括具有下述计算机程序的通用计算机系统,其中,当该计算机程序被载入并执行时,它执行在此所述的各个方法。可选择地,包含用于执行本发明一个或多个功能任务的专用硬件的专用计算机可以被利用。本发明还可以被嵌入计算机程序产品中或者传播信号中,其包括使在此所述的方法得以实现的所有各个特征,并且其在被载入计算机系统中时能够执行这些方法。
本发明可以采用完全硬件实施例、完全软件实施例、或者包含硬件和软件单元的实施例的形式。在优选实施例中,本发明以软件的形式被实现,其包括但是不局限于固件、常驻软件、微代码等等。
本发明可以采用从计算机可用或计算机可读媒体中可访问的计算机程序产品的形式,其中所述媒体提供了被计算机或任何指令执行系统所使用或与其结合使用的程序代码。对于此说明书的目的,计算机可用或者计算机可读媒体可以是能够包含、存储、通信、传播或者传输被该指令执行系统、装置或设备所使用或者与其结合使用的程序的任何装置。
所述媒体可以是电子的、磁的、光的、电磁的、红外的或者半导体系统(或装置、或设备)、或者传播媒体。计算机可读媒体的示例包括半导体或固态存储器、磁带、可拆卸计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘的当前示例包括致密盘-只读盘(CD-ROM)、致密盘-读/写盘(CD-R/W)以及数字通用光盘(DVD)。
在本上下文中的计算机程序、传播信号、软件程序、程序或者软件意指以任意语言、代码或符号形式的一组指令的任何表达法,所述指令意在使得具有信息处理能力的系统直接执行或者在如下一个或两个步骤之后执行特定的功能,所述步骤为(a)转换为另一种语言、代码或符号;和/或(b)以另一种物质的形式再现。
已经出于说明和描述的目的呈现了本发明的优选实施例的前述说明。其不是穷尽性的或者把本发明限制为所公开的精确形式,并且很显然,许多修改和变型是可能的。对本领域技术人员来说显而易见的是,这些修改和变型意在被包括在由权利要求所限定的本发明的范围之内。
权利要求
1.一种在多节点系统中进行故障检测的方法,包括把第一节点和第二节点之间的所有连接与最后接收值和最大空闲值相关联;计算所述最后接收值和当前时间之间的差值;以及如果所述最后接收值和所述当前时间之间的差值超过最大空闲值,则建立从第一节点到第二节点的心跳连接。
2.根据权利要求1所述的方法,还包括在所述心跳连接上启动心跳过程以便确定第二节点的状况。
3.根据权利要求1所述的方法,还包括当第一节点和第二节点之间发生通信时重置所述最后接收值。
4.根据权利要求3所述的方法,其中所述通信包括数据从第二节点被接收或者被成功发送到第二节点。
5.根据权利要求3所述的方法,其中所述通信包括成功建立与第二节点的连接。
6.一种在多节点系统中进行故障检测的系统,包括用于把第一节点和第二节点之间的所有连接与最后接收值和最大空闲值相关联的系统;用于计算所述最后接收值和当前时间之间的差值的系统;以及用于如果所述最后接收值和所述当前时间之间的差值超过最大空闲值,则建立从第一节点到第二节点的心跳连接的系统。
7.根据权利要求6所述的系统,还包括用于在所述心跳连接上启动心跳过程以便确定第二节点的状况的系统。
8.根据权利要求6所述的系统,还包括用于当第一节点和第二节点之间发生通信时重置所述最后接收值的系统。
9.根据权利要求8所述的系统,其中所述通信包括数据从第二节点被接收或者被成功发送到第二节点。
10.根据权利要求8所述的系统,其中所述通信包括成功建立与第二节点的连接。
11.部署用于在多节点系统中进行故障检测的应用,包括提供可操作来执行权利要求1的方法的计算机基础设施。
全文摘要
本发明提供一种使用最少带宽的故障检测的方法、系统以及计算机程序产品。根据本发明实施例在多节点系统中进行故障检测的方法包括如下步骤把第一节点和第二节点之间的所有连接与最后接收值和最大空闲值相关联;计算所述最后接收值和当前时间之间的差值;并且如果所述最后接收值和所述当前时间之间的差值超过最大空闲值,则建立从第一节点到第二节点的心跳连接。然后在所述心跳连接上启动心跳过程以便确定第二节点的状况。
文档编号H04B17/00GK101013971SQ20061014226
公开日2007年8月8日 申请日期2006年10月11日 优先权日2005年10月13日
发明者M·E·哈伯肯, B·C·瓦肖, T·R·吉塞尔, G·A·科莫 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1