分布式系统及其调度方法和调度装置与流程

文档序号:12824530阅读:404来源:国知局
分布式系统及其调度方法和调度装置与流程

本发明涉及分布式技术领域,特别是涉及一种分布式系统及其调度方法和调度装置。



背景技术:

随着数据的不断膨胀,一般的单机系统已经不能够满足大数据的处理任务。因此利用多台机器组成的分布式系统成为当今主流的解决方案。在分布式系统中,一个非常核心的问题是资源的调度。比如hadoop(由apache基金会所开发的分布式系统基础架构)中,负责执行具体的处理任务的工作节点通过中心调度系统分配到集群的各个机器上。

分布式系统中各个机器的运行环境较为复杂,因此如何对分布式系统中的各个机器进行调度,以使得在分布式系统中出现单机问题时,仍能保持资源的正常调度,是目前分布式系统面临的主要问题。



技术实现要素:

本发明的主要目的在于提供一种分布式系统及其调度方法和调度装置,其能够在分布式系统中出现单机问题时,仍能保持资源的正常调度。

根据本发明的一个方面,提供了一种分布式系统,包括向多个业务节点发放任务的调度节点和用于运行任务的多个业务节点,其中,业务节点周期性地向调度节点发送当前资源占用信息和当前任务队列信息;调度节点根据当前资源占用信息和当前任务队列信息,判定该业务节点是否可用;以及调度节点暂停向被判定为不可用的业务节点发送新的任务。

由此调度节点可以在可用的业务节点间进行资源的调度,并且可以避免将新的任务分发给不可用的业务节点,防止新任务被搁置。

优选地,调度节点在没有接收到来自特定业务节点的信息达第一预定时间的情况下将该特定业务节点从分布式系统中删除。这样,在判定节点死亡之前等待预定时间,能够规避节点短暂异常带来的系统抖动。另外,通过将失联节点的删除与繁忙节点的停用相结合,能够在保证资源可用性的前提下,优先使用优势资源,淘汰劣势资源,有效提示系统效率并预防性能问题。

优选地,调度节点在不可用业务节点数达到第一阈值和/或被删除业务节点数达到第二阈值时,启用新的业务节点。

由此,通过启用新的业务节点保证分布式系统能够提供足够的资源来执行任务的处理。

优选地,调度节点在不可用业务节点数高于第三阈值时暂停将业务节点判定为不可用。

由此,当不可用业务节点达到上限时,可以不再将业务节点判定为不可用,以保证分布式系统中能够提供足够的资源来执行任务的处理。

优选地,调度节点在当前资源占用信息高于第四阈值和当前任务队列信息高于第五阈值时判定该业务节点不可用。

通过根据当前资源占用信息和当前任务队列信息,能够更为全面准确地判断业务节点的不可用,如此一方面可以减轻业务节点的压力,另一方面可以将新任务分配给其它适于执行的业务节点,以使得新任务可以快速被执行。

优选地,调度节点在如下至少之一的情况下将不可用业务节点重新设为可用:当前资源占用信息不高于第四阈值和/或当前任务队列信息不高于第五阈值;以及业务节点被设为不可用达第二预定时间。

由此,被判定为不可用的业务节点在其满足条件的情况下可以重新投入系统使用。

根据本发明的另一个方面,还提供了一种分布式系统的调度方法,分布式系统包括用于运行任务的多个业务节点,该方法包括:周期性地获取业务节点的当前资源占用信息和当前任务队列信息;根据当前资源占用信息和当前任务队列信息,判定该业务节点是否可用;以及暂停向被判定为不可用的业务节点发送新的任务。

优选地,该调度方法还可以包括:在没有接收到来自特定业务节点的信息达第一预定时间的情况下将该特定业务节点从分布式系统删除。

优选地,该调度方法还可以包括:在不可用业务节点数达到第一阈值和/或被删除业务节点数达到第二阈值时,启用新的业务节点。

优选地,该调度方法还可以包括:在不可用业务节点数高于第三阈值时暂停将业务节点判定为不可用。

根据本发明的又一个方面,还提供了一种分布式系统的调度装置,分布式系统包括用于运行任务的多个业务节点,该装置用于向多个业务节点发放任务,并且包括:信息获取单元,用于周期性地获取业务节点的当前资源占用信息和当前任务队列信息;可用节点判断单元,用于根据当前资源占用信息和当前任务队列信息,判定该业务节点是否可用;以及调度调整单元,用于暂停向被判定为不可用的业务节点发送新的任务。

优选地,该调度装置还可以包括:节点删除单元,用于在没有接收到来自特定业务节点的信息达第一预定时间的情况下将该特定业务节点从分布式系统删除。

优选地,该调度装置还可以包括:新节点启用单元,用于在不可用业务节点数达到第一阈值和/或被删除业务节点数达到第二阈值时,启用新的业务节点。

本发明的分布式系统及其调度方法和调度装置,利用业务节点发送的当前资源占用信息和当前任务队列信息,判断该业务节点是否可用,在判定不可用时,可以暂停向该业务节点发送新的任务。由此调度节点可以在可用的业务节点间进行资源的调度,并且可以避免将新的任务分发给不可用的业务节点,防止新任务被搁置。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1是示出了根据本发明一实施例的分布式系统的功能框图。

图2是示出了根据本发明一实施例的分布式系统的调度方法的示意性流程图。

图3是示出了根据本发明一实施例的分布式系统的调度装置的示意性流程图。

图4是示出了本发明一具体实施例下的业务节点的状态转换示意图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

下面将参照图1至图4来具体地描述本发明的实施例。图1是示出了根据本发明一实施例的分布式系统100的功能框图。

如图1所示,分布式系统100包括调度节点110和一个或多个业务节点120。调度节点110可以通过发送调度指令,在多个业务节点120之间分配任务。

调度节点110和业务节点120均可以部署在服务器中。作为优选实施例,不同的业务节点120可以部署在不同的服务器中,并且调度节点110可以部署在不同于业务节点120的一个独立的服务器中,也可以和其中一个业务节点120部署在同一个服务器中。附图中的连线表示调度节点110和业务节点120之间存在信息交互,上述连线可以是有线连接、无线连接,或是能够进行信息传送的任何形式的连接。

业务节点120可以周期性地向调度节点110发送信息。上述信息可以证明业务节点的存活,即,正常连接在系统中,因此可被称为“心跳信息”。发送的信息中还可以包含用于指示业务节点当前使用状况的信息,这些信息可被称为“健康状态”信息,用来表征具体节点的健康状况。在一个实施例中,健康状态信息可以是或包括当前资源占用信息和当前任务队列信息。

调度节点110可以根据接收到来自业务节点120的健康状态信息,例如当前资源占用信息和当前任务队列信息,来判定该业务节点是否可用。在业务节点120的“健康状态”不佳时,例如当前资源占用信息和当前任务队列信息过高,指示该节点当前过于繁忙时,调度节点110可以暂停向被判定为不可用的业务节点120发送新的任务。

调度节点110的具体处理过程可以参见图2,图2是示出了根据本发明一实施例的分布式系统的调度方法的示意性流程图。

参见图2,方法200开始于步骤s210,周期性地获取业务节点的健康状态信息,例如当前资源占用信息和当前任务队列信息。此处述及的当前资源占用信息可以包括业务节点120当前运行的任务占用的cpu和内存的信息。例如可以是能够指示cpu、内存占用情况的iowait状态信息。当前任务队列信息可以包括业务节点120当前未完成的任务的数量。

调度节点110可以根据获取的健康状态信息,判断该业务节点120是否可用(步骤s220),并可以暂停向被判定为不可用的业务节点120发送新的任务(步骤s230)。

具体来说,业务节点120的当前资源占用信息过高,表明该业务节点120当前所能提供的用于运行新任务的资源有限,而业务节点120的当前任务队列信息过高,则表明其目前需要处理的任务数过多,已不适于执行新的任务。因此调度节点110可以将当前资源占用信息高于第四阈值和当前任务队列信息高于第五阈值的业务节点120判定为不可用的业务节点,并暂停向其发送新的任务。

需要说明的是,此处以及下文述及的各阈值的具体数值可以根据实际情况设定,并且此处述及的“第四”、“第五”以及下文将要述及的“第一”、“第二”、“第三”仅是为了进行区分,不应理解为对发明在任何意义上的限制。

业务节点的当前资源占用信息过高可能是由该业务节点所在的机器的硬盘老化引起的,也可能是由于该业务节点运行的任务占用的资源较大造成的。对于前者可以淘汰该业务节点,也可以人工介入进行修复。对于后者,可以由该业务节点继续运行当前任务队列中的任务,也可以停止该业务节点的运行,并将其当前任务队列中的任务交由其它业务节点或启用的新的业务节点运行。

对于被判定为不可用的业务节点120,调度节点110可以在其满足可用条件后,将其重新设为可用的业务节点。

例如,调度节点110可以在先前被判定为不可用的业务节点120的当前资源占用信息不高于第四阈值和/或当前任务队列信息不高于第五阈值时,将该业务节点120重新设置为可用。另外,调度节点110也可以在业务节点120被设为不可用达到第二预设时间时,将其重新设为可用。对于被重新设为可用的业务节点120,调度节点110可以向其发放新的任务。对于上述阈值和预设时间,可以根据系统的综合情况灵活设置。

作为本发明的一个优选实施例,可以将业务节点120被设为不可用达第二预设时间时,将其重新设为可用。由此,在分布式系统100中多个业务节点120被判定为不可用时,可以在业务节点120被设为不可用达第二预设时间时,自动将其设为可用的业务节点,使得分布式系统100具有一定的自我修复能力,并且还可以为人工介入不可用的业务节点进行修复提供时间。

以上结合图2详细描述了分布式系统100中调度节点110根据业务节点120发送的当前资源占用信息和当前任务队列信息,判断业务节点120不可用以及将不可用的业务节点120重新设为可用的业务节点的过程。

分布式系统中的业务节点所在的机器不时会发生断网或机器故障等异常情况。在现有技术中,调度节点周期性地接收到来自业务节点的心跳信息,则可判定该节点“存活”。一旦调度节点没有接收到来自某一业务节点的信息,就会随即判定该节点“死亡”,但这种方式不利于规避暂时的系统或是网络抖动。例如,当某一集群的网络发生时间极短的中断时,虽然通信可能随即恢复,但调度节点110已经由于在一个周期内没有接收到来自该集群的业务节点的“心跳”信息而判定该集群内大量业务节点死亡,并将其从系统删除,从而导致系统的整体处理能力受到影响。虽然被判定为死亡并被删除的节点随后可以通过一系列冷/热操作或是人工介入而被重新接入系统,但这一过程是复杂且费时的,由此使得系统的鲁棒性和使用性降低。

针对这种情况,在本发明的分布式系统100中,调度节点110对业务节点120的存活状态的判断还可以加入一个“未知”状态。即,当业务节点心跳丢失时,并不立刻判定该节点“死亡”,而是将该节点置为“未知”状态,并且开始计时。若在预定时间段内通信恢复,则重新将该节点状态置为“存活”。但在预定时间段内还是没有接收到来自该节点的信息,则可将该节点判定为死亡。由此,能够避免业务节点因为网络等故障暂时无法与调度节点110通信而导致被系统删除,从而规避集群的短暂异常,减少系统抖动。

对于被判定为死亡的业务节点120,调度节点110可将其从分布式系统100中删除,不再从该节点调度资源。此处述及的“删除”主要是指软件上的删除,即,系统不再接收来自节点的信息。在“死亡”节点恢复正常运行后,可以经由一系列冷/热操作或是人工介入而重新接入分布式系统。由此,调度节点110能够在保证系统内业务节点可用的同时避免短暂故障导致的系统波动,通过对分布式系统100中的业务节点120进行维护,使得可以及时剔除分布式系统100中出现问题的业务节点120,由此可以在正常的业务节点120之间进行任务的调度。

在一个实施例中,为了保证在删除业务节点和/或判定业务节点不可用时,分布式系统100仍能够提供足够的资源来执行任务的处理,调度节点110可以在每判定一个业务节点不可用或者每删除一个业务节点时,启用一个新的业务节点。此处及下文述及的启用的新的业务节点可以是经过恢复的之前被判定为不可用或被删除的业务节点。

另外,调度节点110也可以在不可用业务节点数达到第一阈值时,启用新的业务节点,或者在被删除业务节点数达到第二阈值时,启用新的业务节点,或者在不可用业务节点数达到第一阈值和被删除业务节点数达到第二阈值的条件同时满足时,启用新的业务节点。其中,第一阈值和第二阈值可以是大于或等于1的自然数。

进一步地,调度节点110还可以在不可用业务节点数高于第三阈值时暂停将业务节点判定为不可用。

图3是示出了根据本发明一实施例的分布式系统的调度装置的功能框图。其中,调度装置300的功能模块可以由实现本发明原理的硬件、软件或硬件和软件的结合来实现。本领域技术人员可以理解的是,图3所描述的功能模块可以组合起来或者划分成子模块,从而实现上述发明的原理。因此,本文的描述可以支持对本文描述的功能模块的任何可能的组合、或者划分、或者更进一步的限定。

图3所示的调度装置300可以用来实现图2所示的调度方法,下面仅就调度装置300可以具有的功能模块以及各功能模块可以执行的操作做简要说明,对于其中涉及的细节部分可以参见上文结合图1、图1的描述,这里不再赘述。

参见图3,调度装置300包括信息获取单元310、可用节点判断单元320以及调度调整装置330。

信息获取单元310用于周期性地获取业务节点的当前资源占用信息和当前任务队列信息。可用节点判断单元320用于根据当前资源占用信息和当前任务队列信息,判定该业务节点是否可用。调度调整单元330用于暂停向被判定为不可用的业务节点发送新的任务。

优选地,可用节点判断单元320可以在当前资源占用信息高于第三阈值和当前任务队列信息高于第四阈值时判定该业务节点不可用。进一步地,可用节点判断单元320可以在当前资源占用信息不高于第三阈值和/或所述当前任务队列信息不高于第四阈值时,或者业务节点被设为不可用达第二预定时间时,将不可用业务节点重新设为可用。另外,可用节点判断单元320还可以在不可用业务节点数高于第三阈值时暂停将业务节点判定为不可用。

如图3所示,调度装置300还可以可选地包括节点删除单元350。节点删除单元350用于在没有接收到来自特定业务节点的信息达第一预定时间的情况下将该特定业务节点从所述分布式系统删除。

如图3所示,调度装置300还可以可选地包括新节点启用单元370。新节点启用单元370用于在不可用业务节点数达到第一阈值和/或被删除业务节点数达到第二阈值时,启用新的业务节点。

上文中已经参考附图详细描述了根据本发明的分布式系统及其调度方法和调度装置。如下将给出利用本发明实现分布式系统的调度的一个具体应用。

应用例

本实施例中的分布式系统可以用于调度对象为服务进程的应用场景,例如在推荐引擎中,分布式系统中固定调度节点通过调度提供推荐服务的业务节点。

业务节点可以周期性地向调度节点发送包含iowait状态信息和任务队列长度信息的心跳包,调度节点可以根据接收到业务节点发送的心跳包的情况,将业务节点的心跳状态分为alive(存活)、unknown(未知)、dead(死亡),并且还可以根据接收到业务节点发送的iowait状态信息和任务队列长度信息,将业务节点的健康状态分为invalid(无效)和valid(有效)。各心跳状态和健康状态的含义如下:

alive,调度节点可以收到业务节点的心跳包;

unknown,调度节点未收到业务节点的心跳包,业务节点可能已经死亡,也可能是因为网络等故障导致的短暂心跳丢失;

dead,调度节点已经持续一段时间未收到工作节点的心跳,表明节点已经死亡或者网络等故障短时间内无法恢复,节点不再适合提供服务;

invalid,由于非致命因素导致工作节点提供服务的能力大大弱于其它工作节点,比如工作节点当前所在机器环境恶劣(内存不足,硬盘老化),节点不再适合提供服务;

valid,工作节点处于健康状态,可提供服务。

下面结合图4就业务节点在几种状态的转换以及调度节点如何进行调度进行具体地阐述。

1)客户端提交服务程序部署申请,调度节点接收到以后,根据服务的资源需求在合适的机器上分配业务节点(进程)用于处理任务,业务节点初始状态为unknow,健康状态为valid;

2)业务节点上报心跳,调度节点接收到心跳后,将业务节点状态置为alive,并更新业务节点的健康状态;

3)若业务节点未上报心跳,调度节点将业务节点状态置为unknown;并记录丢失心跳的开始时间;

4)如果在指定超时时间内,一直未收到业务节点的心跳,将该业务节点的状态置为dead,该业务节点不再接收服务请求。同时在另一台机器上重新分配一个新的业务节点用于提供服务;

5)如果业务节点当前状态为alive,心跳上报的iowait和任务队列长度均超出了预定的范围。如果当前处于invalid状态的工作节点未达到上限值,调度节点将该业务节点的健康状态置为invalid,同时另一台机器上重新分配一个新的业务节点用于提供服务。原业务节点将被停止,并不再提供服务。在指定的一段时间内,原业务节点所在机器不再用于此服务的业务节点分配。

综上,调度节点可以从心跳状态和健康状态两个维度上为资源调度提供依据,在保证资源可用性的前提下,优先使用优势的资源,淘汰劣势资源,可以有效预防性能问题。并且,业务节点从“存活”到“死亡”状态的转换过程中间增加了“未知”状态,可以用于处理业务节点所在机器的短暂异常,减少系统抖动。

此外,根据本发明的方法还可以实现为一种计算机程序,该计算机程序包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。或者,根据本发明的方法还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的上述方法中限定的上述功能的计算机程序。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1