分布式网络中的共享保活和故障检测机制的制作方法

文档序号:7994890阅读:225来源:国知局
分布式网络中的共享保活和故障检测机制的制作方法
【专利摘要】本文描述了用于检测结构化网络中失效节点的节点、计算机可读介质和方法。该方法包含:向主动组或被动组指配相邻集合的节点,其中相邻集合的节点连接到当前节点;命令主动组中的主动节点向当前节点发送保活查询,其中由当前节点控制用于从主动节点向当前节点发送保活查询的定时;命令被动节点侦听来自当前节点的保活查询,并用保活查询响应向当前节点答复;将当前节点配置成用保活查询响应向主动节点答复;以及基于(i)从被动节点接收的保活查询响应和(ii)由主动节点发送的保活查询确定失效节点。当前节点配置成不向主动节点发送保活查询,并且被动节点配置成不向当前节点发送保活查询。
【专利说明】分布式网络中的共享保活和故障检测机制

【技术领域】
[0001 ] 本发明一般涉及与分布式网络中的保活和故障检测机制相关的系统、软件和方 法,并且更具体地说,涉及用于有效检测分布式网络中失效节点的机制和技术。

【背景技术】
[0002] 分布式网络今天被用在各种上下文中,例如用于文件共享或IP语音。分布式网络 包含网格、云、分布式数据库和对等(P2P)系统。它们演示了以灵活方式的分散式和自组织 资源定位和使用的能力。
[0003] 如图1所示,分布式网络100包含与其它节点互连的高数量的节点102 (与常规客 户端-服务器网络相比)。为了实现一致性并向节点提供所设计的应用或服务,通常节点、 链路和/或资源(应用或服务)的可用性有必要对其它节点已知。从而,在此类分布式系 统中,节点、链路和/或资源的可用性当前由一些保活(心跳)机制提供,在这些机制中在 节点之间定期交换短消息以检测节点或链路的故障/可用性。
[0004] 换句话说,节点104向邻居节点108发送保活消息106。如果在节点104未从节点 108接收到答复,则节点104假定节点108停机(已经失效)。这对于网络100的每个节点 102都是正确的,S卩,网络的每个节点都不断地探测它连接到的其它节点。重要特性并且也 是在分布式网络中使用保活机制的主要原因是:保活机制主动地允许在基础应用或服务需 要这些节点和连接之前检测节点或连接停止。
[0005] 为了增强节点和/或服务的可用性并尽可能快速地检测故障,需要在现有分布式 网络中以高频率交换保活消息。然而,在强互连的大规模分布式网络中,保活机制引入了节 点之间的大量信令和通信开销,并且从而,限制了网络的可缩放性。因此,存在对于用于不 断增大的分布式系统的有效保活和故障检测机制的需要。
[0006] 现在讨论现有机制的几个限制。在当前分布式网络中使用的一个机制是如A. Rowstron 和 P. Druschel 的"Pastry: Scalable, distributed object location and routing for large-scale peer-to-peer systems" (IF IP/ACM Middleware, 2001)和 Mahajan 等人的 "Controlling the Cost of Reliability in P2P Overlays"(Proc. IP TP S2003)所描述的基本保活(BK)机制。在此机制中,通过网络从一个节点104向每个邻 居节点108、110、112、114和116发送保活查询,并且每个邻居节点108、110、112、114和116 向查询节点104发送回保活答复消息。当保活答复消息到达时,查询节点104知道另一节 点仍存活并且链路在起作用。在两个方向每k秒定期发起保活消息传送,并且k称为保活 间隔。直接连接到节点x(104)的节点(108、110、112、114和116)的集合称为节点x的邻 域集合(N(x))。
[0007] 用BK机制,每个节点独立于系统中的所有其它节点而管理。例如,都连接到第三 节点108的两个节点104和120不共享有关它们公共节点108的任何信息,因此保活任务 必须执行两次,一次由节点104并且一次由节点120,以便确定节点108是存活的。这将导 致两个保活消息每k秒从节点104和120到达节点108。当然,节点108可连接到也发送保 活消息的其它节点,从而进一步增大由节点108接收的消息量。
[0008] 虽然BK机制直观并且容易实现,但系统大小或互连程度的增大引入了大量传统 保活信令业务,这使分布式系统的性能降级。
[0009] 为了解决基本保活机制的这个限制,Dedinski等人("Cooperative Keep-Alives: An Efficient Outage Detection Algorithm for P2P Overlay Networks, 〃 Peer-to-Peer Computing, 2007)已经提出了合作保活(CK)机制。在此机制中,来自目标节点的邻域集合 的所有节点都向目标节点连续发送保活请求,并且目标节点配置成对来自邻域集合的节点 答复以确保目标节点仍然存活。请求以某一频率发送,由目标节点控制。目标节点的目的 是确保所有进来的保活请求的频率都接近期望的恒定间隔k,独立于其邻域集合的(通常 改变的)大小。
[0010] 这是通过在系统中的每个节点运行两个任务一一发送方任务和接收方任务达成 的。因为网络中的每个节点都运行这两个任务,因此系统是对称的,即,没有客户端或服务 器角色。在给定节点的发送方任务的主要功能是在预先设置的时间向给定节点的邻域中的 节点的接收方任务发送保活请求,并处理答复。发送方任务具有存储发送时间的时间表,称 为发送方进度表。从来自那个邻居节点的最后保活答复中提取用于向具体邻居节点发送下 一请求的时间。如果给定节点的发送方任务向另一节点发送请求并且给定节点未从另一节 点接收到答复,则该请求最多被重复r次,其中r是预先定义的重试计数。在r次重试后, 给定节点的发送方任务检测到另一节点的停止,并通过顺序泛洪技术向另一节点的所有邻 居广播此信息。
[0011] 尽管以上机制与基本保活机制相比减少了在节点之间交换的保活消息量,但它仍 具有如下缺点。第一,保活消息是单向的,g卩,给定节点的邻居需要主动地发送请求消息以 检索所有其邻居的状态。
[0012] 第二,在节点失效之后,给定(检测)节点向失效节点的所有已知邻居节点发送保 活信息。然而,当发送出此类信息时,有可能给定节点不能直接与失效节点的所有已知邻居 节点通信。在此情况下,这些节点未接收到故障信息,并且仅能由它们自己检测失效节点, 这需要另外的消息。从而,根据此机制,那些节点将花更长时间检测失效节点。此类问题未 被以上机制考虑,也未被解决。
[0013] 从而,存在开发减少大规模分布式网络或系统中故障检测时间和信令成本并且同 时维持基本保活机制的有效性和可靠性的新的且有效的保活和故障检测机制的需要。


【发明内容】

[0014] 在分布式网络中具有一个或多个失效节点的可能性是有可能的。从而,存在具有 能以比现有机制有效且更快速的方式检测故障节点的适当机制(例如方法)的需要。在一 个示范实施例中,网络节点被划分为被动节点(passive node)和主动节点(active node)。 当前节点探测被动节点,但不探测主动节点。当检测到失效节点时,当前节点告知邻居失效 节点,而且还追踪邻居节点是否可达到。使用后面所讨论的备选布置告知不可达到的邻居 节点。
[0015] 根据一个示范实施例,存在用于检测结构化网络中失效节点的方法。该方法包含 向主动组或被动组指配相邻集合的节点的步骤。相邻集合的节点连接到当前节点。该方法 进一步包含命令主动组中的主动节点向当前节点发送保活查询的步骤和命令被动节点侦 听来自当前节点的保活查询并用保活查询响应向当前节点答复的步骤。该方法还包含将当 前节点配置成用保活查询响应向主动节点答复的步骤。当前节点基于(i)从被动节点接收 的保活查询响应和(ii)由主动节点发送的保活查询确定失效节点。当前节点配置成不向 主动节点发送保活查询,并且被动节点配置成不向当前节点发送保活查询。
[0016] 根据另一个示范实施例,存在配置成检测结构化网络中失效节点的节点。该节点 包含配置成向主动组或被动组指配相邻集合的节点的处理器。相邻集合的节点连接到当前 节点。节点还包含接口,该接口配置成从主动节点接收保活查询,并向被动节点发送保活查 询,并从被动节点接收保活查询响应。接口还响应于保活查询向主动节点发送保活查询响 应。处理器基于⑴从被动节点接收的保活查询响应和(ii)由主动节点发送的保活查询 确定失效节点。当前节点配置成不向主动节点发送保活查询。
[0017] 根据又一个示范实施例,存在包含计算机可执行指令的计算机可读介质,其中所 述指令当由处理器执行时实现上面提到的方法。
[0018] 从而,目的是克服以上部分中讨论的缺陷中的一些,并且提供以较少消息交换确 定失效节点并且还以更安全方式告知邻居节点失效节点的机制。一个或多个独立权利要求 有利地提供了用于确定失效节点的此类机制。
[0019] 缩写列表 BK基本保活 CK合作保活 NST邻居集合表 ANL主动邻居列表 PNL被动邻居列表 KQ保活查询 KQR保活查询响应 KN保活通知 KNR保活通知响应 KNF保活通知转发 TCP传输控制协议 UDP用户数据报协议。

【专利附图】

【附图说明】
[0020] 并入说明书并构成其一部分的附图图示了一个或多个实施例,并且与说明书一起 说明这些实施例。在附图中: 图1是具有多个节点的通信网络的示意图; 图2是根据示范实施例具有故障检测机制的当前节点及其邻居节点的示意图; 图3是图示根据示范实施例如何在被动节点与主动节点之间交换保活消息的示意图; 图4是图示根据示范实施例的保活查询消息格式的示意图; 图5是根据示范实施例的保活查询响应消息格式的示意图; 图6是根据示范实施例的保活通知消息格式的示意图; 图7是根据示范实施例的保活通知响应消息格式的示意图; 图8是根据示范实施例的保活通知转发消息格式的示意图; 图9是图示根据示范实施例在节点之间发生的检测失效节点的各种步骤的示意图; 图10是根据示范实施例用于确定失效节点的方法的流程图;以及 图11是根据示范实施例实现用于检测失效节点的方法的节点的示意图。

【具体实施方式】
[0021] 示范实施例的如下描述参考附图。不同附图中的相同附图标记标识相同或类似元 素。如下详细描述不限制本发明。而是,本发明的范围由所附权利要求书定义。为了简化, 如下实施例相对于分布式协议(例如P2P Chord)建立成使得任何节点都知道其邻居节点 的分布式网络的术语和结构进行讨论。然而,新颖实施例不限于给定分布式协议,而是可应 用于其它类型的基础协议。
[0022] 在说明书通篇提到"一个实施例"或"实施例"是指结合一实施例描述的具体特征、 结构或特性包含在本发明的至少一个实施例中。从而,在说明书通篇各处出现的短语"在一 个实施例中"或"在实施例中"不一定全都指的是同一实施例。进一步说,具体特征、结构或 特性可以任何适合的方式组合在一个或多个实施例中。
[0023] 根据示范实施例,存在用于检测结构化网络中失效节点的方法。该方法向主动组 或被动组指配当前节点的相邻节点。命令来自主动组的节点向当前节点发送保活查询,并 命令来自被动组的节点侦听来自当前节点的保活查询,并用保活查询响应向当前节点答 复。当前节点配置成用保活查询响应向主动节点答复,并基于(i)从被动节点接收的保活 查询响应和(ii)由主动节点发送的保活查询确定失效节点。当前节点配置成不向主动节 点发送保活查询以减少业务,并且被动节点配置成不向当前节点发送保活查询以进一步减 少业务。
[0024] 现在相对于图2更详细说明这个新颖机制。分布式网络200具有N个节点,其中每 个节点连接到网络中的一些其它节点。图2为了简化仅示出了少数节点202、206、208、210、 212、214、222、224和226。当前节点202直接链接到节点206、208、210、212和214。这些节 点206、208、210、212和214是节点202的邻居节点。它们形成节点202的邻居集合(NS)。 邻居集合被标示为N(x)或204。类似地,节点212具有邻居节点202、222和224,并且这些 节点形成节点212的邻居集合N(Z) 220。网络中的所有其它节点由通用元素226表示。
[0025] 邻居集合204中的节点206、208、210、212和214被指配给主动组216(其包含主 动节点206、208和210)和被动组218 (其包含被动节点212和214)。在下文假定,节点之 间的邻域关系已经由基础覆盖协议(例如P2P Chord或其它分布式协议)建立。换句话 说,当前节点知道其邻居节点,并且当前节点可与邻居节点通信,并且节点的基本信息(例 如ID和IP地址)已经被交换。当节点加入或离开网络时,其邻居节点将基于现有协议更 新它们的邻居集合204和相关参数。
[0026] 适当地用此结构,在当前节点202的邻居集合204的节点之间共享保活信息,即, 在现有机制中邻居集合204中的每个节点都不需要与当前节点202定期交换保活消息。而 是,根据此新颖方法,邻居集合204中的节点被视为同一组的一部分,并且此组仅需要在固 定间隔(例如预定时间间隔)与当前节点202交换保活消息。
[0027] 换句话说,邻居集合204的节点206、208、210、212和214按预定顺序与当前节点 202交换保活消息,S卩,节点206首先与当前节点202交换保活消息,在预定时间间隔之后, 节点208与当前节点202交换保活消息,依此类推。进一步说,如后面将讨论的,并不是邻 居集合204中的所有节点都向当前节点202发送保活消息,而是仅主动节点发送。如果邻 居集合204中的邻居节点(例如节点208)已经检测到当前节点202的故障,则节点208将 与邻居集合204中的所有其它节点共享此信息。
[0028] 此外,为了进一步减少故障检测时间,在例如在图3中所示的两个节点之间双向 共享保活信息。图3示出了具有两个邻居206和212的节点202,其中节点206是主动节 点,而节点212是被动节点。这意味着,节点206向节点202发送保活查询230A,而节点202 用保活查询响应230B向节点206答复。然而,节点202不向节点206发送保活查询。
[0029] 类似地,因为节点202是被动节点212的主动节点,因此仅节点202向被动节点 212发送保活查询232A,并且仅被动节点212向节点202发送回保活查询响应232B。换句 话说,当节点202不向主动节点206发送保活查询并且被动节点212不向节点202发送保 活查询时,这些节点之间的业务减少。从而,节点212通过检查它在预计时间之前是否已经 从节点202接收到保活消息232A来检测节点202的故障。如果否,则节点212将假定节点 202已经失效,并且保活消息被发送到节点202以主动确认节点202已经永久失效。
[0030] 对于节点202确定节点206是否已经失效同样正确。换句话说,主动节点206通 过定期发送保活查询消息230A来检测节点202的状态。如果主动节点206未从节点202 接收到响应,则主动节点206将认为节点202已经失效,并将向节点202发送那个效果的确 认消息。被动节点202将通过检查在预计时间期间是否从节点206接收到保活查询消息 230A来检测主动节点206的状态。如果在预计时间以前节点202未从节点206接收到查询 消息,则节点202将认为节点206已经失效,并将向节点206发送那个效果的消息。
[0031] 为了实现这个新颖机制,根据示范实施例,每个节点需要保持两个列表:主动邻居 列表(ANL)和被动邻居列表(PNL)。ANL配置成包含当前节点的主动邻居,而PNL配置成包 含当前节点的被动邻居。主动角色和被动角色是对称的。例如,如果节点202是节点212 的主动节点,则节点212是节点202的被动节点。此外,一个节点可同时作为主动邻居和被 动邻居工作,例如图3中的节点202。然而,给定某一邻居,节点的角色是唯一的,例如,节点 202是节点212的主动节点。
[0032] 如上面所提到的,如果图2中的邻居集合220中的当前节点202已经检测到节点 212的故障,则节点202应该向邻居集合220中的所有其它节点222和224通知节点212的 故障。然而,在真实的分布式系统中,有可能节点202可能不能够直接与邻居集合220中的 所有其它节点通信。换句话说,节点222和224之一可能是节点202不可达到的。
[0033] 因此,与失效节点212相关的故障信息可能不与失效节点212的一些邻居节点共 享。根据另一示范实施例,当前(检测)节点202配置成要求邻居集合220中的其它可达 到的邻居节点向那些不可达到节点转发此类故障信息。例如,仍相对于图2,考虑当前节点 202可直接到达节点222但不到达节点224。然后,当故障信息发送给它时,当前节点202 追踪到未从节点224接收到响应,并且从而,当前节点202向邻居集合220中的其它可达到 节点(222)发送含有不可达到节点224的ID和其它信息的消息。可达到节点222然后向 不可达到节点224转发与失效节点212相关的故障信息。
[0034] 用所提出的新颖机制,可迅速检测到节点故障,同时信令开销大大下降。从而,与 现有机制相比,改进了分布式系统的总体性能。现在更详细地讨论上面讨论的新颖机制。
[0035] 邻居集合表(NST)可自动保持在每个节点中,以将其邻居节点的信息存储在分布 式系统中。在NST中,对于每个邻居节点都存在包含如下字段的条目:节点ID、IP地址和邻 居列表。节点ID用于唯一表示分布式覆盖网络中的节点,例如在P2P网络中,ID是节点的 对等ID。IP地址用于在节点之间传送消息,包含保活消息。邻居列表含有由当前条目的节 点ID表示的节点的节点邻居集合。在当前节点检测到其邻居节点之一的故障时,它将通知 邻居列表那个邻居节点。
[0036] 表1示出了节点212的NST的示例。从该表中可以看到,节点212的邻居节点包 含节点202、222和224。节点202的IP地址是〃 192. 168. 0. 100〃,而节点202的邻居包含 节点 206、208、210、212 和 214。节点 222 的 IP 地址是〃 192. 168. 0? 200〃,而节点 222 的邻 居包含节点c和d,依此类推。
[0037] 表1 :节点212的样品邻居集合表

【权利要求】
1. 一种用于检测结构化网络(200)中失效节点(212)的方法,所述方法包括: 向主动组(216)或被动组(218)指配相邻集合(204)的节点(206, 208, 210, 212, 214), 其中所述相邻集合(204)的所述节点(206, 208, 210, 212, 214)连接到当前节点(202); 命令所述主动组(216)中的主动节点(206, 208, 210)向所述当前节点(202)发送保活 查询(230A),其中由所述当前节点(202)控制用于从所述主动节点(206, 208, 210)向所述 当前节点(202)发送所述保活查询(230A)的定时; 命令被动节点(212, 214)侦听来自所述当前节点(202)的保活查询(232A),并用保活 查询响应(232B)向所述当前节点(202)答复; 将所述当前节点(202)配置成用保活查询响应(230B)向所述主动节点答复;以及 基于(i)从所述被动节点接收的所述保活查询响应(232B)和(ii)由所述主动节点发 送的所述保活查询(230A)确定所述失效节点(212), 其中所述当前节点(202)配置成不向所述主动节点发送所述保活查询(232A),并且所 述被动节点配置成不向所述当前节点(202)发送保活查询。
2. 如权利要求1所述的方法,进一步包括: 在所述当前节点保持仅包含所述主动节点的主动列表和仅包含所述被动节点的被动 列表,其中所述主动节点和所述被动节点形成所述当前节点的所述相邻集合。
3. 如权利要求1所述的方法,进一步包括: 如果作为对所述当前节点向所述失效节点发送的所述保活查询的答复未从所述失效 节点接收到保活查询响应,则确定所述失效节点是被动节点。
4. 如权利要求1所述的方法,进一步包括: 如果在预计时间所述当前节点未从所述失效节点接收到保活查询,则确定所述失效节 点是主动节点。
5. 如权利要求1所述的方法,进一步包括: 从所述当前节点向所述失效节点的邻居节点发送保活通知消息,其中所述保活通知包 含所述失效节点已经失效的信息。
6. 如权利要求5所述的方法,进一步包括: 保持具有所述失效节点的可达到的邻居节点的列表,其中可达到的邻居节点是响应于 所述保活通知消息而对所述当前节点答复的节点。
7. 如权利要求6所述的方法,进一步包括: 保持具有所述失效节点的不可达到的邻居节点的列表。
8. 如权利要求7所述的方法,进一步包括: 从所述可达到的邻居节点列表中随机选择预定数量的节点。
9. 如权利要求8所述的方法,进一步包括: 从所述当前节点向随机选择的可达到的邻居节点发送具有要被告知关于所述失效节 点的所述不可达到的邻居节点的所述列表。
10. 如权利要求1所述的方法,进一步包括: 从所述当前节点保持的各种表或列表中移除所述失效节点。
11. 一种配置成检测结构化网络(200)中失效节点(212)的当前节点(202),所述当前 节点(202)包括: 处理器,配置成向主动组(216)或被动组(218)指配相邻集合(204)的节点 (206, 208, 210, 212, 214),其中所述相邻集合(204)的所述节点(206, 208, 210, 212, 214)连 接到当前节点(202);以及 接口,配置成: 从所述主动组(216)中的主动节点(206, 208, 210)接收保活查询(230A); 向被动节点(212, 214)发送保活查询(232A),并从所述被动节点接收保活查询响应 (232B);以及 响应于所述保活查询(230A)向所述主动节点发送保活查询响应(230B); 其中所述处理器基于(i)从所述被动节点接收的所述保活查询响应(232B)和(ii)由 所述主动节点发送的所述保活查询(230A)确定所述失效节点,并且 其中所述当前节点(202)配置成不向所述主动节点发送所述保活查询(232A)。
12. 如权利要求11所述的节点,其中所述处理器配置成不向所述被动节点发送保活 查询响应。
13. 如权利要求11所述的节点,其中所述处理器进一步配置成:保持仅包含所述主动 节点的主动列表和仅包含所述被动节点的被动列表,其中所述主动节点和所述被动节点形 成所述当前节点的所述相邻集合。
14. 如权利要求11所述的节点,其中所述处理器进一步配置成: 如果作为对所述当前节点向所述失效节点发送的所述保活查询的答复未从所述失效 节点接收到保活查询响应,则确定所述失效节点是被动节点;或者 如果在预计时间所述当前节点未从所述失效节点接收到保活查询,则确定所述失效节 点是主动节点。
15. 如权利要求11所述的节点,其中所述处理器进一步配置成:向所述失效节点的邻 居节点发送保活通知消息。
16. 如权利要求15所述的节点,其中所述处理器进一步配置成:保持具有所述失效节 点的可达到的邻居节点的列表,其中可达到的邻居节点是响应于所述保活通知消息而对所 述当前节点答复的节点。
17. 如权利要求16所述的节点,其中所述处理器进一步配置成:保持具有所述失效节 点的不可达到的邻居节点的列表。
18. 如权利要求17所述的节点,其中所述处理器进一步配置成:从所述可达到的邻居 节点列表中随机选择预定数量的节点。
19. 如权利要求18所述的节点,其中所述处理器进一步配置成:向随机选择的可达到 的邻居节点发送具有要被告知关于所述失效节点的所述不可达到的邻居节点的所述列表。
20. -种包含计算机可执行指令的非暂时性计算机可读介质,其中所述指令当由处理 器执行时实现用于检测结构化网络(200)中失效节点(212)的方法,所述指令包括: 向主动组(216)或被动组(218)指配相邻集合(204)的节点(206, 208, 210, 212, 214), 其中所述相邻集合(204)的所述节点(206, 208, 210, 212, 214)连接到当前节点(202); 命令所述主动组(216)中的主动节点(206, 208, 210)向所述当前节点(202)发送保活 查询(230A),其中由所述当前节点(202)控制用于从所述主动节点(206, 208, 210)向所述 当前节点(202)发送所述保活查询(230A)的定时; 命令被动节点(212,214)侦听来自所述当前节点(202)的保活查询(232A),并用保活 查询响应(232B)向所述当前节点(202)答复; 将所述当前节点(202)配置成用保活查询响应(230B)向所述主动节点答复;以及 基于(i)从所述被动节点接收的所述保活查询响应(232B)和(ii)由所述主动节点发 送的所述保活查询(230A)确定所述失效节点(212), 其中所述当前节点(202)配置成不向所述主动节点发送所述保活查询(232A),并且所 述被动节点配置成不向所述当前节点(202)发送保活查询。
【文档编号】H04L12/26GK104509033SQ201280073493
【公开日】2015年4月8日 申请日期:2012年3月27日 优先权日:2012年3月27日
【发明者】蔡学军 申请人:爱立信(中国)通信有限公司(中国)
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1