作为服务的故障检测与恢复的制作方法

文档序号:7892746阅读:180来源:国知局
专利名称:作为服务的故障检测与恢复的制作方法
作为服务的故障检测与恢复
背景技术
在计算领域,许多情形涉及计算机系统中的故障检测,比如干扰进程;进程所利用的资源的不可用性,比如唯一地被另一个进程锁定的空闲存储器或资源的耗尽;进程无能力完成任务;进程的逻辑故障,其导致资源的消耗、无穷尽的循环或应用崩溃;或设备的硬件故障,其中断进程的执行。这样的故障的严重程度为从好奇到不便到严重的问题(例如在实时进程或正常运行时间用户所依赖的进程中的故障)。在这些和其他情形中,管理员可以努力监控该进程,比如利用在同一个设备或另一个设备上运行的监控进程来监控被监控进程的实现(instrumentation),验证被监控进程继续按预期运行、提供可接受性能以及对用户而言是可访问的。如果被监控进程显示出故障的指示或变得不可及,则监控进程可以在日志中记录这些指示或者可以通知管理员
发明内容
通过简化形式提供该发明内容以引入概念的选择,在下文的具体实施方式
中对其进一步描述。该发明内容不旨在标识要求保护的主题的关键因素或必要特征,也不旨在用于限制要求保护的主题的范围。监控进程和被监控进程的接口经常是高度专用且专有的。例如,要被监控的进程可以报告指示其状况(status)的一组专用度量,并且/或者可以以专用方式报告这样的度量,比如特定类型的日志或事件模型或特定位置。该监控进程还可以特别地被设计成与被监控进程耦合(例如,以便评估日志,预订事件和/或查询被监控进程)。该监控进程和被监 控进程可以一起表示一对紧密耦合的互操作进程。然而,该监控进程和被监控进程的专用化(specialization)可能在某些方面是低效的。作为第一实例,每个被监控进程可以具有对应的监控进程,并且对许多被监控进程的监控可涉及许多监控进程的部署,其中每个监控进程监控一个进程。该耦合可以降低监控设备的再使用(例如,可能难以配置一组机器来监控一组进程)。作为第二实例,可能罕见的是建立对正在监控第二进程的第一进程的监控(在同一个机器或另一个机器上)。作为第三实例,监控的每种情形可能有轻微不同或显著不同(例如向管理员通知故障指示符的方式,被不同进程使用的故障指示符的类型,以及日志文件的位置、格式和语义使用),导致在系统的管理方面复杂性增加。本文提出了用于将故障监控实现为标准化服务的技术。根据这些技术,可以提供一组一个或多个监控节点,其被配置成执行对执行要被监控的一个或多个进程的各个被监控节点的监控。一个或多个被监控节点可以向监控节点注册(register)以便监控,并且可以发起对这些进程的状况(可能包括这些进程的状态(例如不仅仅包括进程是否正在运行,而且还包括该进程的内部状态))的周期性报告。监控节点可以记录该信息,并且可以在接收到进程或被监控节点正在遭遇困难或已经停止报告的指示时采取行动。例如,该监控节点可以请求重启不再报告的进程,包括重启处于由被监控节点最后报告的状态的该进程,并且还可以请求在不同的被监控节点上重启该进程。如果被监控节点完全停止响应,则监控节点可以选择替代的被监控节点,并且可以请求在该替代的被监控节点上重启所有这些进程(可能处于最后报告的状态)。而且,在涉及一组两个或更多监控节点的情形中,监控节点还可以相互监控。例如,被监控节点可以被指派(as s i gn )向特定监控节点报告。而且,监控节点可以周期性地使其中的监控信息同步(例如每个监控节点可以告知其他监控节点分配给它的被监控节点、在其上执行的被监控进程和每个这样的被监控进程的状况和/或可能地状态)。如果监控节点故障(例如停止向其他监控节点报告),则其他监控节点可以选择替代的监控节点,该故障监控节点的所有被监控节点可以被重新分配给该替代的监控节点。根据这些技术的故障检测和故障恢复的实现方式可以呈现一些优点。作为第一实例,这些技术可以使得故障容忍能够被作为非专用的、非专有的、基于预订的服务提供,其中一组监控节点可以合作来监控一组被监控节点上的任意参与进程,而不管被监控的进程的类型或被监控节点的作用如何。作为第二实例,这些技术可以促进监控资源的高效使用;例如,执行少量监控进程的单组监控节点可以被配置成监控大且多样的一组被监控节点和被监控进程。作为第三实例,这些技术使得监控节点能够承担故障监控节点的角色(例如,通过接纳(adopt)先前分配给该故障监控节点的被监控节点),并且使得被监控节点能够承 担故障被监控节点的角色(例如在故障时刻重启由被监控节点执行的进程)。节点的这种冗余和可替代性可以通过在减少被监控进程和/或监控服务的中断的同时从故障中恢复来促进高可用性。作为第四实例,这些技术可以促进监控服务的可扩展性;例如,被监控节点和进程可以容易地注册以便监控,并且监控能力可以简单地通过添加更多的监控节点来扩展。这些和其他优点可以通过根据本文所提供的技术实现监控情形来实现。为了实现前述和相关目的,下面的描述和附图阐述了某些说明性方面和实现方式。这些仅仅指示可以使用一个或多个方面的各种方式中的一些。本公开的其他方面、优点和新颖特征将根据下面在结合附图考虑时的详细描述而变得清楚明白。


图I是以由监控节点对被监控节点所执行的进程进行监控为特征的示范性情况的图示。图2是以一组监控节点为特征的示范性情况的图示,其中该组监控节点被配置成根据本文所提出的技术监控由一组被监控节点执行的一个或多个进程。图3是图示配置监控节点以监控一个或多个被监控节点上的一个或多个进程的示范性方法的流程图。图4是图示配置被监控节点参与由一个或多个被监控节点进行的监控的示范性方法的流程图。图5是包括被配置成体现本文所提及的一个或多个指配(provisions)的处理器可执行指令的示范性计算机可读介质的图示。图6是以被配置成监控被监控节点的进程的状态且处理进程或被监控节点的故障的监控节点为特征的示范性情况的图示。图7是以被配置成在检测到由被监控节点执行的相应进程已经进入特定状态时执行逻辑的监控节点为特征的示范性情况的图示。图8是以被配置成彼此相互监控并处理监控节点的故障的一组监控节点为特征的示范性情况的图示。图9图示了可实现本文所提及的一个或多个指配的示范性计算环境。
具体实施例方式现在参考附图描述要求保护的主题,其中相同的附图标记始终用于指代相同的元件。在下面的描述中,为了解释的目的,许多特定细节被阐述,以便提供对要求保护的主题的彻底理解。然而,可 能显然的是,要求保护的主题可以在没有这些特定细节的情况下被实施。在其他情况中,以框图形式示出结构和设备,以便便于描述要求保护的主题。在计算领域内,许多情形涉及对由在故障情况下要被监控的一个或多个节点(例如,各种类型的设备和计算机,和/或在其上运行的模拟运行环境)执行的一个或多个进程的监控。进程可以由于各种原因(例如,干扰进程;进程所利用的资源的不可用性,比如唯一地被另一个进程锁定的空闲存储器或资源的耗尽;进程未能完成任务;进程中导致资源消耗的逻辑故障,无穷尽的循环或应用崩溃)发生故障。此外,整个节点可能经历软件或硬件故障(例如,处理器过热、供电或网络访问停止、硬盘故障或操作系统崩溃)。这样的故障的结果可以覆盖某个范围的严重程度,比如好奇、不便或受挫,以及严重的问题(例如,实时进程可以在具有严格的定时参数的情况内执行,比如在装配线上操作机器人的运动的进程,或可以被大量的其他进程利用的进程,比如将存储在数据库中的数据提供给一系列数据驱动的应用的数据库服务器,或响应于从许多用户接收的大量请求同时接收和生成网页的网络服务器)。在这样的情况内,可能期望配置执行进程的计算机或设备以便被另一个计算机或设备监控。例如,执行特定进程的被监控节点可以由监控节点来监控,其可以周期性地检测度量或接收报告,该报告指示被监控节点和/或进程的状况(比如该进程和节点是否保持操作并正在以可接受方式执行)。在检测到新出现的、即将发生的或现有的问题(比如进程或被监控节点的故障)时,监控节点可以执行各种动作,比如记录检测的信息或通知管理员以进行进一步的动作。由监控节点对被监控节点的进程的监控可以以各种方式实现。图I呈现示范性情况10的图示,其以用于配置被监控节点14和监控节点18进行互操作来实现对被监控节点14所执行的进程16的监控的两种示范性技术为特征。在该示范性情况10中,第一被监控节点14执行被第一监控节点18监控的第一进程16,并且第二被监控节点14执行被第二监控节点18监控的第二进程16。然而,在这两种实现方式之间监控的环境可能明显不同。例如,第一监控进程14可以利用包括为监控所述进程16所写的专用应用的第一监控进程20,其实现与进程16的专用接口 24通信的专用接口 22 (例如监控进程20可以接收由进程16的专用接口 24发送的度量,和/或可以通过专用接口 24查询进程16以请求状况信息)。第一监控进程20还可以将重要的信息写到第一日志28上,该第一日志可以被管理员12浏览以确定被监控节点14和进程16的状况。第二监控进程14可以利用包括为监控所述进程16所写的专用应用的第二(不同的)监控进程20。然而,该进程16可以不被配置成与监控进程20通信,但是可以向客户端32提供服务30,并且监控进程20可以利用客户端32监控34进程16的服务30 (例如,监控从进程16向客户端32的数据提供)。第二监控进程20还可以将重要信息写到第二 (不同的)日志28,该日志可以被管理员12浏览以确定被监控节点14和进程16的状况。以此方式,第一监控节点18和第一被监控节点14可以互操作以实现对第一进程16的监控,并且第二监控节点18和第二被监控节点14可以互操作以实现对第二进程16的监控。因此图I的示范性情况10图示了用于监控每个进程16的专用技术,涉及各监控节点18和被监控节点16的紧密耦合以实现状况和故障的监控和报告。然而,该示范性情况10还图示了一些缺点,这些缺点可能随着基于这种紧密耦合的专用技术而出现。作为第一实例,每个监控节点18执行对对应的被监控节点14和进程16的监控,但是不参与对其他被监控节点14和/或进程16的监控。因此,监控节点18在一个被监控节点14故障情况下可能不利用另一个被监控节点14的资源。作为第二实例,监控节点18不相互通信,并且任一监控节点18的故障可能未被其他监控节点18检测到或被其响应;事实上,监控节点18的故障可能不被报告给管理员12或被管理员注意到。作为第三实例,监控节点18以不同方式(例如利用不同日志28)向管理员12报告关于监控的信息,并且管理员12可能不得不检查每个日志28并继而关注对每个进程16的监控细节。作为第四实例,管理员12可能难以将要被监控的新进程16、执行进程16的新的被监控节点14或新监控节点20引入到示 范性情况10中,这是由于其中已经包括资源的专用化和紧密耦合。而且,在记录信息和报告故障的方式方面的差异可以降低报告进程的一致性。相反,对新进程16和/或被监控节点14的监控可以仅通过引入新监控节点18 (可能包括专用监控进程20)来实现,从而进一步增加图I的示范性情况10中监控管理的复杂性。本文提出了用于实现一个或多个监控节点18以标准化方式监控由一个或多个监控节点14执行的一个或多个进程16的技术,该标准化方式促进了这种监控的互操作、故障检测和故障恢复能力、灵活性、可扩展性和一致性。根据这些技术,监控节点18可以被配置成接受一个或多个被监控节点14的注册,并且可以执行对其上执行的进程的监控。被监控节点14可以向监控节点18注册以便监控,并且可以指示在被监控节点14上执行的一个或多个进程16。然后,被监控节点14可以通知监控节点18各个进程16的状况。在进程16故障的情况下(例如指示问题的发展的度量、故障状况的报告或报告的状况的停止),监控节点18可以请求被监控节点14重启进程16。可替代地,在检测到整个被监控节点14故障(例如,来自被监控节点14的报告的停止或缺乏响应性)时,监控节点18可以从被监控节点组选择替代的被监控节点14,并且可以请求该替代的被监控节点14重启曾经正在发生故障的被监控节点14上执行的每一个进程16。而且,监控节点18可以被配置成相互监控;例如,如果监控节点18停止向其他监控节点18报告其状况,则所述其他监控节点18可以为故障监控节点18共同地选择替代的监控节点18,并且可以将已被分配给故障监控节点18的被监控节点14重新分配给替代的监控节点18。图2呈现以对一组进程16的监控为特征的示范性情况40,其中所述一组进程16由一组被监控节点14执行且由一组监控节点18监控。在该示范性情况40中,一组监控节点18互操作以执行对被监控节点14和进程16的监控。被监控节点14可以被配置成在加入监控情况时注册以便监控,并且所述监控节点18可以协商(confer)以选择要向其分配被监控节点14的监控节点18。被监控节点14可以接收分配的通知,并且可以开始向监控节点18上的监控进程20报告相应进程16的一组状况42。监控节点18因此可以确定被监控节点14和由其执行的进程16的状况。如果进程16故障(如由向其报告的状况42所指示),监控节点18可以请求被监控节点14重启进程16 ;但是如果整个被监控节点14故障,则监控节点18可以与其他监控节点18协商选择替代的被监控节点14,并且在故障的被监控节点14上执行的进程16可以在替代的被监控节点14上被重启。而且,如果监控节点18故障,则其他监控节点18可以协商选择替代的监控节点,并且可以将所有已被分配给故障的监控节点18的被监控节点14重新分配给替代的监控节点18。所有这些动作可以由管理员12浏览,管理员可以查看监控节点18共享的日志并且管理监控网络(例如通过添加更多的被监控节点14、进程16和/或监控节点18来扩展监控网络) 。本文所提出的技术(包括在图2的示范性情况40中)相对于其他监控技术(比如图I的示范性情况10中所示的监控技术)可以呈现出一些优点。作为第一实例,本文所提出的技术可以表示标准化监控框架,其中任何进程16可以通过向监控节点18报告信息而参与监控。作为第二实例,本文所提出的技术提升了监控情况的可扩展性;例如,附加的监控节点18可以容易地被添加到监控节点组18以共享监控的计算负荷并改善其弹性,并且包括要被监控的各个进程16的被监控节点14可以容易地加入被监控节点组以预订监控。此外,该监控框架可以使得监控能够作为标准化服务被给予(offer)、提供和预订;例如,监控主机可以给予一组监控节点18,可以针对其预订任意组被监控节点14和进程16。作为第三实例,在进程16、被监控节点14和监控节点18之间的故障检测和故障恢复被显著改进;例如,任何组件的故障可以被检测并被监控情况的剩余资源所吸收。而且,通过这些技术故障恢复的简易和迅速性可以实现被监控进程和监控服务的高可用性;例如,设备和进程故障可以被迅速检测,并且另一个监控节点和/或被监控节点可以承担故障设备的角色。作为第四实例,通过配置监控节点18以记录信息并以标准化方式向管理员12报告,监控情况的一致性可被显著提高并且其复杂性被显著降低。例如,管理员12可以通过查看由所有监控节点18共享的一个日志而查看所有被监控资源的状况。这些和其他优点可以通过根据本文所提出的技术的监控的实现方式来实现。图3呈现这些技术的第一实施例,其被图示为配置具有处理器的监控节点18以监控执行至少一个进程16的一个或多个被监控节点14的示范性方法50。该示范性方法50可以被实现为例如一组处理器可执行指令,其存储在监控节点18的存储器组件(例如,存储器电路、硬盘驱动器母板、固态存储设备或磁盘或光盘)中并且以这样的方式被配置当由监控节点18的处理器执行时使得监控节点18执行示范性方法50的任务。示范性方法50在52处开始并且涉及在处理器上执行54指令。特别地,这些指令被配置成当接收监控被监控节点14的请求时,将被监控节点14的至少一个进程16注册56以便监控。这些指令还被配置成在从被监控节点14的进程16接收至少一个状况42时,记录58进程16的状况42。这些指令还被配置成在检测到被监控节点14的至少一个进程16的故障时,重启60被监控节点14上的进程16。以此方式,示范性方法50使得监控节点18执行对一个或多个被监控节点14的进程16的故障检测和故障恢复,因此在62处结束。图4呈现这些技术的第一实施例,其图示为配置具有处理器并执行要由监控节点18监控的至少一个进程16的被监控节点14的示范性方法70。示范性方法70可以被实现为例如一组处理器可执行指令,其存储在监控节点18的存储器组件(例如,存储器电路、硬盘驱动器母板、固态存储设备或磁盘或光盘)中并且以这样的方式被配置当由被监控节点14的处理器执行时使得被监控节点14执行示范性方法50的任务。示范性方法70在72处开始并且涉及在处理器上执行74指令。特别地,这些指令被配置成向监控节点18注册至少一个进程16。这些指令还被配置成向监控节点18 (例如周期性地)报告78至少一个进程16的至少一个状况42。此外,这些指令还被配置成在从监控节点18接收重启进程16的请求时,重启80进程16。以此方式,示范性方法70使得被监控节点14登记其进程16以便由监控节点18监控并且参与根据本文所提出技术的监控情况,因此在82处结束。又一个实施例涉及计算机可读介质,其包括被配置成应用本文所提出的技术的处理器可执行指令。这样的计算机可读介质可以包括例如涉及有形设备的计算机可读存储介质,比如存储器半导体(例如,利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)和/或同步动态随机存取存储器(SDRAM)技术的半导体)、硬盘驱动器母板、闪存设备或磁盘或光盘(比如⑶-R、DVD-R或软盘),其对一组计算机可读指令编码,该指令在被设备的处理器执行时使得设备实现本文所提出的技术。这样的计算机可读介质还可以包括(作为区别于计算机可读存储介质的一类技术)各种类型的通信介质,比如可以通过各种物理现象传播的信号(例如,电磁信号、声波信号或光信号)并且在各种有线情况(例如经由以太网或光纤线缆)和/或无线情况(例如无线局域网(WLAN)(比如WiFi)、个人区域网络、(PAN)(比如蓝牙)或蜂窝或无线电网络)中,并且其编码一组计算机可读指令,该指令在被设备的处理器执行时使得设备实现本文所提出的技术。图5中图示了可以以这些方式设计的示范性计算机可读介质,其中实现方式90包括计算机可读介质92 (例如CD-R、DVD-R或硬盘驱动器的母板),其上计算机可读数据94被编码。该计算机可读数据94又包括被配置成根据本文所阐述的原理操作的一组计算机指令96。在一个这种实施例中,该处理器可执行指令96可以被配置成执行配置监控节点以监控在一个或多个被监控节点上的一个或多个进程的方法,比如图3的示范性方法50。在另一个这种实施例中,处理器可执行指令96可以被配置成实现配置被监控节点以参与由一个或多个监控节点进行的监控的方法,比如图4的示范性方法70。该计算机可读介质的一些实施例可以包括非瞬时计算机可读存储介质(例如硬盘驱动器、光盘或闪存设备),其被配置成存储以该方式配置的处理器可执行指令。许多这样的计算机可读介质可以被本领域技术人员设计,这些介质被配置成根据本文所提出的技术操作。本文所讨论的技术可以被设计成在许多方面变形,并且一些变形可以呈现附加的优点并且/或者减少相对于这些和其他技术的其他变形的缺点。而且,一些变形可以以组合方式实现,并且一些组合可以以通过协同合作而附加的优点和/或减少的缺点为特征。这些变形可以被并入各种实施例中(例如图3的示范性方法50和图4的示范性方法70)以协商在这样的实施例上的单独和/或协同的优点。可以在多个实施例之间变化的第一方面涉及可以利用这样的实施例的情况。作为第一实例,本文所提出的监控技术可以被用于实现对许多类型节点的监控,比如各种形式因素的计算机(比如,服务器、工作站、控制台、笔记本、平板计算机、掌上设备和智能电话)。作为第二实例,许多类型的进程16可以根据本文所提出的技术来监控,比如服务,例如,电子邮件服务器、文件服务器、数据库服务器、传感器、自动服务器(比如管理控制和数据采集(SCADA)组件)和人工智能进程。作为第三实例,许多类型的状况42可以由这样的进程16报告,所述状况包括“0K”状况、“not 0K”状况、“遭遇困难”状况和“锁定”状况。本领域技术人员可以设想许多可以利用本文所提出的技术的情况。
可以在这些技术的多个实施例之间变化的第二方面涉及对执行至少一个进程16的被监控节点14的监控的配置。作为该第二方面的第一实例,被监控节点14和/或进程16可以被配置成向监控节点18发送指示被监控节点14和/或进程16的持续功能性的一系列持久性指示符。被监控节点14和/或进程16可以被配置成在通知周期内(例如每分钟一次)向监控节点18发送持久性指示符,并且监控节点可以被配置成随着通知周期的流逝、在没有接收到持久性指示符的情况下检测被监控节点14和/或进程16的故障。作为该第二方面的第二实例,除了报告状况42 (例如作为持久性指示符)之外,进程16可被配置成向监控节点18报告其状态,该监控节点可被配置成记录进程16的状态。例如,进程16可以包括可以以各种状态存在的状态机和/或进程16正操作的一个或多个数据项,并且进程16可以周期性地向监控节点18报告状态和数据项。该信息可以向进程16的报告的状况42添加细节,并且在进程16后续故障的情况下可能是有用的。作为该第二方面的第三实例,监控节点18可以被配置成在检测到被监控节点14 和/或进程16的故障时采取多种类型的动作。作为第一实例,监控节点18可以简单地将故障记录在日志28中,或者可以用故障的通知联系管理员12。作为第二实例,监控节点18可以请求被监控节点14重启已发生故障的进程16。而且,如果监控节点18正监控一组两个或更多被监控节点14,则监控节点18可以选择替代的被监控节点14,并且可以请求替代的被监控节点14重启进程16。该替代可能是有利的,例如如果被监控节点14还正在执行在相同被监控节点14上重启时可被进程16的附加故障中断的其他进程16,和/或用于在不同的被监控节点14上重试进程16,该不同的被监控节点14可能具有避免进程16的二次故障的不同条件。而且,该替代可能是有利的,例如当整个被监控节点14故障时,以及当已被被监控节点14执行的所有进程16要在一个或多个替代的被监控节点14上被重启时。作为该第二方面的第四实例,如果进程16被配置成向监控节点16报告其状态,那么在检测到进程16的故障时,该监控节点18可以请求处于在故障之前被进程16最后报告的状态的被监控节点14 (包括替代的被监控节点14)上重启进程16。例如,进程16可以包括执行冗长计算(例如处理大阵列)的算法,并且可以在该算法内向监控进程18周期性报告其状态(例如,进入当前被处理的阵列的索引)。如果进程16故障,监控进程18可以请求被监控节点14在最后报告的状态处重启进程16,比如在该算法内的最后报告的位置(例如开始于阵列内最后报告的阵列索引)。以此方式,进程16可以被重启而不必执行先前执行的状态,从而降低了完全算法部分的冗余执行并且在进程16的执行中保存计算资源。图6呈现了以向监控节点报告由相应被监控节点14执行的相应进程16的一组状态102为特征的示范性情况100的图示。在该示范性情况100中,两个被监控节点14分别正在执行分别被配置成向监控节点18报告进程16的状态102的两个被监控进程16。例如,进程16可以周期性地或者在从第一状态102向第二状态102转换时向监控节点18报告状态102。监控节点18可以在状态日志104中记录进程16的状态102。因此,如果在第一被监控节点14上执行的第二进程16经历故障106(例如,如果第二进程16崩溃、报告问题或无法继续报告状态102和/或状况42,比如性能指示符),则监控节点18可以检测第二进程16的故障106,并且可以向被监控节点14发送重启第二进程16的请求108。而且,监控节点18可以参考状态日志104,识别由第二进程16报告的最后状态102(例如,第二进程16可能已经报告了第二状态102并且然后崩溃),监控节点18可以在请求108中指示被监控节点14将在第二状态102中重启第二进程16。类似地,第二被监控节点14可能正在执行两个进程16,但是也可能经历故障110 (例如,可能过热、丢失电力或网络连接性或表现出操作系统崩溃)。监控节点18可以检测第二被监控节点14的故障110,并且可以向第三被监控节点14发送一系列请求108以重启第二被监控节点14在发生故障110的时候正执行的每一个进程16。而且,监控节点18可以在请求108中指示状态102,在该状态中第三被监控节点14要基于在故障110之前最后报告的进程16的状态102重启每一个进程16。以此方式,监控节点18可以命令被监控节点14根据在故障之前最后报告的状态102重启进程16,从而在监控情况内保存进程16的计算资源。作为该第二方面的第五实例,监控节点18可以被配置成在检测到进程16的故障时采取其它行动以便解决该故障。例如,监控节点18可以被配置成在进程16进入特定状态102时(例如当进程16出现特定事件时)执行特定逻辑(例如函数或指令集的调用)。而且,监控节点18可以提前从被监控节点14 (例如在被监控节点14注册以便监控期间)和/或进程(例如当被监控节点14启动要被监控节点18监控的进程16时)接收该逻辑。例 如,被监控节点14或进程16可以包括含有一个或多个函数的动态链接库(DLL),并且可以向监控节点18提供该库连同在进程16进入特定状态102的情况下执行一个或多个所述函数的请求。以此方式,被监控节点14可以在预订监控服务的同时向监控节点18提供要在发生故障的情况下执行的指令。图7呈现了以被配置成在检测到进入特定状态102的进程16时(例如,在出现特定事件时)执行逻辑124的监控节点18为特征的示范性情况120的图示。在该示范性情况120中,监控节点18从被监控节点14 (例如,在被监控节点14向监控节点18注册时)接收包括一组可执行函数的函数库122 (比如动态链接库(DLL)或脚本)以及在特定进程16进入特定状态102时调用函数的规范。监控进程18可以例如在指定当特定进程16进入特定状态102时将执行的逻辑126的逻辑表124中存储该信息,并且可以在每当状态102报告进入新状态102时参考逻辑表124。因此,在图7的示范性情况120中,当第二进程14向监控节点18报告它已经进入第二状态时,监控节点18可以参考逻辑表102,确定它将在该事件中执行特定逻辑126 (例如调用函数库122的第三个函数),并且可以执行该逻辑,从而导致向被监控节点14请求128以特定状态102开始第三进程16 (例如解决由第二进程16报告的状态102所指示的特定类型的故障的维修进程)。本领域技术人员可以在根据本文所提出的技术、由监控节点18应用到被监控节点14和由其执行的进程的监控类型方面设计许多变形。可以在这些技术的多个实施例之间变化的第三方面涉及牵涉可以通过互操作来监控被监控节点14和进程16而提供附加特征(比如改进的故障容忍和故障恢复)的一组监控节点18的监控情况。作为第一实例,监控节点组的每一个监控节点18可以存储从相应的被监控节点14的进程16接收的状况42,并且可以使状况42与至少一个其他监控节点18同步。该同步可以使得监控节点18能够共享关于进程16的状况42的信息且保持关于该监控情况中组件的状况的最新信息。作为该第三方面的第二实例,当被监控节点14的故障被检测到时,监控节点18可以协商为故障的被监控节点14选择替代的被监控节点14。例如第一监控节点18可以检测被监控节点14的故障,但是第二监控节点18可以与执行很少或不执行进程16的第二被监控节点14通信,以及监控节点14可以协商为发生故障的被监控节点14选择第二被监控节点14作为替代的节点14。该协商因此可以在故障情况下在选择替代的被监控节点14时实现负载均衡效果。作为该第三方面的第三实例,相应的被监控节点14可以被分配以便被监控节点组的特定监控节点18监控。例如,当被监控节点14注册以便监控时,监控节点组可以协商选择要向其分配被监控节点14的监控节点18 (例如通过选择当前监控很少或不监控其他被监控节点14和/或进程16的监控节点18)。当被监控节点14的进程16报告状况42或状态102时,被监控节点14可以向监控节点18 (已向其分配被监控节点14)发送状况42或状态102 (而不是向许多监控节点18发送状况42或状态102,例如作为广播消息)。以此方式,监控节点18可以在监控节点18之间执行负载均衡,并且可以通过减少状况42和/或状态102的报告的广播来保存监控情况的网络资源。作为该第三方面的第四实例,相应监控节点18可被配置成相互监控故障,并且以不中断对被监控节点14和/或进程16的监控的方式从这种故障中恢复。例如,相应的监控节点18可以被配置为在通知周期内相互发送持久性指示符(例如每分钟来自每个监控 节点18的一个持久性指示符),并且如果第一监控节点18检测到通知周期已经流逝而第二监控节点18没有发送持久性指示符的情况下,则第一监控节点18可以检测第二监控节点18的故障。可替代地,该第一监控节点18可以从被监控节点14接收到关于第二监控节点(被监控节点14被分配给该第二监控节点、但被监控节点14不能联系)的故障指示符。所检测到的监控节点18的故障还可以提示其他监控节点18采取各种行动;例如,剩余监控节点18可以协商选择替代的监控节点18,并且可以向替代监控节点18重新分配先前被分配给故障监控节点18的被监控节点14。该协商可以经由选举或一致构建机制(例如Paxos算法)来执行,其中监控节点18可以针对故障的监控节点18指派其他监控节点18作为替代的监控节点18,并且在各监控节点18之间投票的清点可导致替代的监控节点18的一致和选举。替代的监控节点18然后可以联系重新分配的被监控节点14以建立重新分配。而且,如果故障的监控节点18已经使重新分配的被监控节点14的进程16的状况42和/或状态102同步,则替代的监控节点18可以快速且容易地承担故障的监控节点18的角色。以此方式所述监控情况可以在不中断监控服务的情况下检测监控节点18的故障并从中恢复。图8呈现以对监控节点组的监控节点18的故障的检测并从中恢复为特征的示范性情况130的图示。在该示范性情况130中,被监控节点组的相应被监控节点14具有向包括四个监控节点18的监控节点组的用于监控的分配134。该监控节点18可以以各种方式通信以识别故障,并且可以以各种方式对检测到的故障作出响应。作为第一实例,第一监控节点18和第二监控节点18可以周期性交换持久性指示符136以指示持续的性能。然而,当第一监控节点18未能向第二监控节点18发送持久性指示符136时,第二监控节点14可以检测第一监控节点18的故障138,并且可以发起被监控节点14向第二监控节点18的重新分配140。作为第二实例,第三监控节点18可以具有向一组被监控节点14的分配134,但是这样的一个被监控节点14可以检测第三监控节点18的故障142(例如,在发送状况42或状态102时没有能力联系监控节点18)。第三监控节点18可以利用故障指示符144联系第四监控节点18。第四监控节点18可以与监控节点组的剩余监控节点18 (例如第二监控节点18)协商,并且可以针对用以承担故障的第三监控节点18的角色的替代的监控节点18达成一致146 ;并且在被选举为替代的监控节点18时,第四监控节点18可以发起被监控节点14向第四监控节点18的重新分配140。以此方式,监控节点组的监控节点18可以在监控节点组的各监控节点18之中合作以检测故障并从中恢复。本领域技术人员可以根据本文所提出的技术设计配置监控节点组的监控节点18的许多方式。尽管已经以特定于结构特征和/或方法动作的语言描述了所述主题,但是应当理解所附权利要求中定义的主题不必限于上述特定特征或动作。相反,上述特定特征和动作作为实现权利要求的实例形式被公开。如本申请中所使用的术语“组件”、“模块”、“系统”、“接口 ”等一般地旨在意指计算机相关实体、硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是运行在处理器上的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。通过 图示的方式,运行在控制器上的应用和控制器二者均可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。而且,要求保护的主题可以被实现为使用标准的编程和/或工程技术生产软件、固件、硬件或其任意组合以控制计算机实现所公开的主题的方法、装置或制造品。如本文所使用的术语“制造品”旨在包含可从任何计算机可读设备、载体或介质访问的计算机程序。当然,本领域技术人员将认识到,可以对该配置进行许多修改而不脱离要求保护的主题的范围或精神。图9和下面的讨论提供了对实现本文所阐述的一个或多个指配(provision)的实施例的适当计算环境的简短、总体的描述。图9的操作环境仅仅是适当的操作环境的一个实例并且不旨在暗示关于操作环境的使用或功能的范围的任何限制。实例计算设备包括但不限于个人计算机、服务器计算机、手持或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费型电子产品、迷你计算机、大型计算机、包括任何上述系统或设备的分布式计算环境等等。尽管不需要,但是在正被一个或多个计算设备执行的“计算机可读指令”的一般环境中描述实施例。计算机可读指令可以经由计算机可读介质(下面讨论的)来分发。计算机可读指令可以被实现为执行特定任务或实现特定抽象数据类型的程序模块,比如函数、对象、应用编程接口(API)、数据结构等。典型地,计算机可读指令的功能可以如各种环境中所期望的那样进行组合或分布。图9图示了包括被配置成实现本文所提供的一个或多个实施例的计算设备152的系统150的实例。在一个配置中,计算设备152包括至少一个处理单元156和存储器158。依据计算设备的确切配置和类型,存储器158可以是易失性的(例如,比如RAM)、非易失性的(例如,比如ROM、闪存等)或这两种的某个组合。该配置在图9中用虚线154图示。在其他实施例中设备152可以包括附加特征和/或功能。例如,设备152还可以包括附加的存储装置(例如可移除和/或不可移除的),其包括但不限于磁存储装置、光学存储装置等等。这种附加存储装置在图9中由存储装置160图示。在一个实施例中,用于实现本文所提供的一个或多个实施例的计算机可读指令可以在存储装置160中。存储装置160还可以存储实现操作系统、应用程序等的其他计算机可读指令。例如,计算机可读指令可以被加载在存储器158中以便被处理单元156执行。
如本文所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器158和存储装置160是计算机存储介质的实例。计算机存储介质包括但不限于RAM、R0M、EEPR0M、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD )或其他光学存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备,或可以用于存储期望的信息并且可以被设备152访问的任何其他介质。任何这样的计算机存储介质可以是设备152的一部分。设备152还可以包括允许设备152与其他设备通信的通信连接166。通信连接166可以包括但不限于调制解调器、网络接 口卡(NIC)、集成的网络接口、射频发射器/接收器、红外端口、USB连接或用于将计算设备152连接到其他计算设备的其他接口。通信连接166可以包括有线连接或无线连接。通信连接166可以发送和/或接收通信介质。术语“计算机可读介质”可以包括通信介质。通信介质典型地包含计算机可读指令或在“已调制数据信号”(比如载波或其他传输机构)中的其他数据并且包括任何信息传递介质。术语“已调制数据信号”可以包括以使得在信号中编码信息的方式来设置或改变一个或多个其特性的信号。设备152可以包括输入设备164,比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备和/或任何其他输入设备。在设备152中还可以包括输出设备162,比如一个或多个显不器、扬声器、打印机和/或任何其他输出设备。输入设备164和输出设备162可以经由有线连接、无线连接或其任意组合而连接到设备152。在一个实施例中,来自另一个计算设备的输入设备或输出设备可以被用作计算设备152的输入设备164或输出设备162。计算设备152的组件可以通过诸如总线之类的各种互连而连接。这样的互连可以包括外围组件互连(PCI)(比如高速PCI)、通用串行总线(USB)、火线(IEEE1394)、光学总线结构等。在另一个实施例中,计算设备152的各组件可以通过网络互连。例如,存储器158可以由多个位于不同物理位置通过网络互连的物理存储器单元组成。本领域技术人员将认识到,用于存储计算机可读指令的存储设备可以跨越网络分布。例如,可经由网络168访问的计算设备170可以存储用于实现本文所提供的一个或多个实施例的计算机可读指令。计算设备152可以访问计算设备170并且下载一部分或所有计算机可读指令以供执行。可替代地,计算设备152可以按照需要下载若干条计算机可读指令,或者一些指令可以在计算设备152处执行,而一些在计算设备170处执行。本文提供了实施例的各种操作。在一个实施例中,所描述的一个或多个操作可以构成存储在一个或多个可计算机可读介质上的计算机可读指令,如果这些指令被计算设备执行则将使得该计算设备执行所述的操作。描述一些或所有操作的顺序不应当被解释为暗示这些操作必需是顺序相关的。可替代的排序将是具有本说明书的利益的本领域技术人员理解的。而且,应当理解,不是所有操作都必需存在于本文所提供的每个实施例中。而且,本文使用词语“示范性的”来意指充当实例、例证或说明。本文描述为“示范性”的任何方面或设计不必被解释为比其他方面或设计有利。相反,词语示范性的使用旨在以具体方式呈现概念。如在本申请中使用的术语“或”旨在意指包含性的“或”而非排他性的“或”。即,除非另外指定或从上下文清楚,“X使用A或B”旨在意指自然包含性排列的任何一个。即,如果X使用A ;X使用B ;或X使用A和B,则“X使用A或B”在上述任何一种情况下都是满足的。此外,本申请和所附权利要求中使用的冠词“一”一般地可以被解释为意指“一个或多个”,除非另外指定或从上下文清楚指向单数形式。而且,尽管已经相对于一个或多个实现方式示出并描述了本公开,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变化和修改。本公开包括所有这样的修改和改变并且仅受所附权利要求范围的限制。特别地关于由上述组件(例如元件、资源等)执行的各种功能,用于描述这样的组件的术语旨在对应于(除非另外指示)执行所述组件的指定功能的任何组件(例如其在功能上是等价的),即使在结构上不等价于执行这里所图示的本公开示范性实现方式的功能的公开结构。此外,尽管本公开的特定特征可能已经相对于若干实现方式之一而被公开,但是这种特征可以与其他实现方式的一个或多个其他特征组合,因为这可能对于任意给定的或特定的应用是期望的和有利的。而且,就术语“包括”、“具有”、“有”或其变形被用在详细的说明书中或权利要求中而言,这样的术语旨在 以与术语“包括”相似的方式是包含性的。
权利要求
1.一种配置具有处理器(156)的监控节点(18)以监控执行至少一个进程(16)的被监控节点(14)的方法(50),该方法(50)包括 在处理器(156 )上执行(54 )指令(96 ),该指令(96 )被配置成 在接收监控被监控节点(14)的请求时,注册(56)被监控节点(14)的至少一个进程(16)以便监控; 在从被监控节点(14)的进程(16)接收至少一个状 况(42)时,记录(58)进程(16)的状况(42);以及 在检测到被监控节点(14)的至少一个进程(16)的故障时,在被监控节点(14)上重启(60)进程(16)。
2.权利要求I的方法 至少一个被监控节点被配置成在通知周期内向监控节点发送持久性指示符;以及 检测故障包括在尚未从被监控节点接收到持久性指示符的情况下检测通知周期的流逝。
3.权利要求I的方法 监控节点监控至少两个被监控节点;以及 在被监控节点上重启至少一个进程,包括 选择替代的被监控节点,以及 在替代的被监控节点上重启被监控节点的至少一个进程。
4.权利要求3的方法 检测被监控节点的至少一个进程的故障包括检测被监控节点的故障;以及在被监控节点上重启所述至少一个进程包括在替代的被监控节点上重启被监控节点的所有进程。
5.权利要求I的方法 被监控节点的至少一个进程被配置成向监控节点报告至少一个进程的至少一个状态;以及 所述指令被配置成在接收到由被监控节点报告的至少一个进程的状态的报告时,存储该进程的状态。
6.权利要求5的方法,在被监控节点上重启进程包括在被监控节点上在由该进程最后报告的状态处重启该进程。
7.权利要求5的方法 所述监控节点包括要在进程报告特定状态时执行的逻辑;以及 所述指令被配置成在从进程接收到特定状态的报告时,执行该逻辑。
8.权利要求7的方法,所述指令被配置成在从被监控节点接收到要在被监控节点的进程报告特定状态时执行的逻辑时,存储该逻辑。
9.权利要求I的方法,所述监控节点包括在监控节点组中,该监控节点组包括至少一个其他监控节点。
10.权利要求9的方法 监控节点组的监控节点被配置成存储至少一个被监控节点的至少一个状况;以及 所述指令被配置成使至少一个被监控节点的所述至少一个状况与该监控节点组的至少一个其他监控节点同步。
11.权利要求9的方法 检测被监控节点的至少一个进程的故障包括检测被监控节点的故障;以及在被监控节点上重启所述至少一个进程包括与监控节点组的至少一个其他监控节点协商,为被监控节点选择替代的被监控节点。
12.权利要求9的方法,所述指令被配置成检测第二监控节点的故障。
13.权利要求12的方法 第二监控节点被配置成在通知周期内向监控节点发送持久性指示符;以及 检测第二监控节点的故障包括 在尚未从第二监控节点接收到持久性指示符的情况下检测通知周期的流逝。
14.权利要求12的方法 分配相应的被监控节点以便由监控节点组的至少一个监控节点来监控;以及 所述指令被配置成在检测到被分配至少一个被监控节点的第二监控节点的故障时 选择替代的监控节点,以及 将所述至少一个被监控节点重新分配给替代的监控节点。
15.一种配置在处理器(156)上执行至少一个进程(16)的被监控节点(14)以便由监控节点(18)监控的方法(70),该方法(70)包括 在处理器(156 )上执行(74 )指令(96 ),其被配置成 向监控节点(18 )注册(76)至少一个进程(16); 向监控节点(18)报告(78)至少一个进程(16)的至少一个状况(42);以及 在从监控节点(18)接收到重启进程(16)的请求时,重启(80)进程(16)。
16.一种计算机可读存储介质,其包括指令,当所述指令由处理器执行时,执行如权利要求I 一 15中任一项的方法。
全文摘要
由监控节点进行的对由被监控节点执行的进程的监控经常被设计为紧密耦合交互,但是这种耦合可以降低监控资源和进程的再使用并且增加了监控情况的管理复杂性。相反,故障检测和恢复可以被设计为一种非专有服务,其中一组被监控的节点连同执行一组进程可以注册以便由一组监控节点监控。在进程或整个被监控节点故障的情况下,监控节点可以合作来发起在相同或替代的被监控节点上重启所述进程(可能处于由相应进程最后报告的状态)。此外,监控节点的故障可被检测到,并且所有被分配给故障的监控节点的被监控节点可以被重新分配给替代的监控节点。
文档编号H04L12/26GK102739435SQ20121009000
公开日2012年10月17日 申请日期2012年3月30日 优先权日2011年3月31日
发明者A.卡蒂亚, C.B.波利纳蒂 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1