服务器调度方法和系统与流程

文档序号:12068236阅读:979来源:国知局
服务器调度方法和系统与流程

本申请涉及计算机技术领域,尤其涉及一种服务器调度方法和系统。



背景技术:

目前,现有技术中对服务器调度的常用方法是:对一组的若干台服务器(服务器集群)进行某一种固定方式的调度,例如指定一台服务器执行某一类型的任务指令。但是这种调度方式存在着以下缺点:

1.调度方式单一。只能进行固定一种方式的调度,来选择服务器列队中的某台机器执行任务指令,这种粗放的调度方式导致机器资源分配不合理、资源闲置严重,或者机器资源冲突、程序运行不畅。

2.服务器队列固定。不仅服务器队列是固定的,而且服务器队列的排列顺序也是固定的,如果服务器性能发生变化,这种固定的队列不能够挑选性能最新的服务器执行任务指令。

3.服务器资源浪费。按照现有技术中的调度方案,一台服务器固定执行某一类型的任务。例如,消耗服务器cpu的计算类型指令在一台机器上运行,但是该台服务器的内存和io资源充足,还有能力执行某些消耗内存和io资源的操作(如拷贝文件指令、涉及海量数据的指令等),但是上述调度方案并不分配该服务器执行其他类型的任务,因此导致服务器资源浪费。

综上所述,上述的固定方式的服务器调度方案存在服务器资源浪费以及服务器资源分配不合理的问题,因此有必要提出改进的技术手段解决上述问题。



技术实现要素:

本申请的主要目的在于提供一种服务器调度方法和系统,以克服现有技 术中的服务器调度方案存在的服务器资源浪费以及服务器资源分配不合理的问题。

根据本申请实施例提供了一种服务器调度方法,其包括:收集多台服务器的资源消耗信息;根据资源类型分别组建多个对应不同资源类型的服务器队列,将所述多台服务器分别加入到每个服务器队列中,其中,所述服务器队列中的服务器按照其对应的资源类型的资源消耗信息进行排序;接收服务器任务指令,根据所述服务器任务指令所消耗的资源类型匹配到对应的服务器队列,按照顺序选取所述服务器队列中的服务器执行所述服务器任务指令。

其中,所述按照顺序选取所述服务器队列中的服务器执行所述服务器任务指令,包括:按照顺序选取所述服务器队列中的首台服务器进行阈值校验,判断选取的服务器的资源消耗信息是否小于预设阈值,若是则选取该服务器执行所述任务指令,否则按照顺序选取下一台服务器继续进行阈值校验。

其中,所述方法还包括:若所述服务器队列中的服务器均未通过阈值校验,则等待预设时间后重新进行阈值校验。

其中,在将所述服务器分别加入到每个服务器队列中的步骤之前,所述方法还包括:检测所述服务器集群中的服务器的是否正常运行,若是则将所述服务器分别加入到每个服务器队列中。

其中,所述服务器队列包括:中央处理器资源队列、内存资源队列、输入\输出资源队列、硬盘资源队列。

根据本申请实施例还提供了一种服务器调度系统,其包括:资源消耗信息收集模块,用于收集多台服务器的资源消耗信息;服务器队列组建及维护模块,用于根据资源类型分别组建多个对应不同资源类型的服务器队列,将所述多台服务器分别加入到每个服务器队列中,其中,所述服务器队列中的服务器按照其对应的资源类型的资源消耗信息进行排序;接收模块,用于接收服务器任务指令;匹配模块,用于根据所述服务器任务指令所消耗的资源类型匹配到对应的服务器队列;调度模块,用于按照顺序选取所述服务器队列中的服务器执行所述服务器任务指令。

其中,所述调度模块还用于,对选取的服务器进行阈值校验,判断选取的服务器的资源消耗信息是否小于预设阈值,若是则选取该服务器执行所述任务指令,否则按照顺序选取下一台服务器继续进行阈值校验。

其中,所述调度模块还用于,若所述服务器队列中的服务器均未通过阈值校验,则等待预设时间后重新进行阈值校验。

其中,所述系统还包括:检测模块,用于检测所述服务器集群中的服务器的是否正常运行,若是则将所述服务器分别加入到每个服务器队列中。

其中,所述服务器队列包括:中央处理器资源队列、内存资源队列、输入\输出资源队列、硬盘资源队列。

根据本申请的技术方案,通过将多台服务器按照各个资源消耗信息指标排序,并根据排序选取服务器执行服务器任务指令,从而能够选取服务器集群中性能最优的服务器执行服务器任务指令,并使得不同类型的服务器任务指令能够被调度到匹配的服务器执行,实现了对服务器集群的智能调度。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请一个实施例的服务器调度方法的流程图;

图2是根据本申请另一实施例的服务器调度方法的流程图;

图3是根据本申请实施例的组建服务器队列的示意图;

图4是根据本申请实施例的服务器调度系统的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有 其他实施例,都属于本申请保护的范围。

根据本申请实施例,提供一种服务器调度方法。

图1是根据本申请一个实施例的服务器调度方法的流程图,如图1所示,所述方法至少包括以下步骤:

步骤S102,收集多台服务器的资源消耗信息。

在本申请的实施例中,所述多台服务器为服务器集群中的有限数量的服务器。其中,所述服务器的资源消耗信息是指服务器的硬件资源的消耗使用情况,具体地包括但不限于:中央处理器(cpu)利用率、内存(mem)利用率、输入\输出(io)消耗数量、硬盘(disk)利用率。需要说明,在本实施例中,服务器的资源消耗信息还可以包括其他的服务器硬件资源消耗信息(如网络使用信息),此处不再赘述。

步骤S104,根据资源类型分别组建多个对应不同资源类型的服务器队列,将所述多台服务器分别加入到每个服务器队列中,其中,所述服务器队列中的服务器按照其对应的资源类型的资源消耗信息进行排序。

根据资源类型组建的服务器队列可以包括cpu资源队列,mem资源队列,io资源队列,disk资源队列等等。将各个正常运行的服务器分别加入到上述的服务器队列中,在每个服务器队列中按照服务器队列对应的资源类型的资源消耗信息对服务器进行排序。如果服务器队列中的服务器按照资源利用率的升序排列,那么资源较空闲的服务器排列在更靠前的位置。例如,在cpu资源队列中,按照cpu消耗资源对服务器升序排列,队列中越靠前位置的服务器当前cpu利用率越低,即cpu越空闲。实际上,服务器队列就是将多台服务器分别按照各个资源消耗信息指标进行排序。

需要说明,在步骤S104中需要按照预设时间(例如以秒为单位)动态更新各个对应不同资源类型的服务器队列,使得队列中的服务器的排序结果实时反映每个服务器的资源消耗的实际指标。

步骤S106,接收服务器任务指令,根据所述服务器任务指令所消耗的资源类型匹配到对应的服务器队列,按照顺序选取所述服务器队列中的服务器执行所述服务器任务指令。

一般地,服务器任务指令与业务逻辑相关,当接收到用户传入的服务器任务指令后,首先判断该任务指令所消耗的资源类型:比如消耗cpu类,消耗mem类,消耗io类,消耗disk类等等。然后根据用户传入的任务指令所消耗的资源类型,匹配到与该资源类型相对应的服务器队列,例如消耗cpu类的任务指令匹配到cpu资源队列。接着在匹配到的对应的服务器队列中按照顺序选取服务器执行所述服务器任务指令。如果服务器队列中的服务器按照资源利用率的升序排列,服务器队列中排列靠前的服务器的资源较空闲,因此可以按照从前至后的顺序选取资源较空闲的服务器执行需消耗该资源的服务器任务指令,在保证程序运行效果的同时平衡了机器使用率;如果服务器队列中的服务器按照资源利用率的降序排列,服务器队列中排列靠后的服务器的资源较空闲,因此可以按照从后至前的顺序选取资源较空闲的服务器执行需消耗该资源的服务器任务指令,在保证程序运行效果的同时平衡了机器使用率。

在本申请的一个实施例中,在选取服务器队列中的服务器执行服务器任务指令之前,需要对选取到的服务器进行阈值校验,如果该服务器通过阈值校验则选取该服务器执行服务器任务指令。具体地,首先判断服务器队列中的第一台服务器的资源消耗信息是否小于预设阈值,若是则该第一台服务器通过阈值校验,选取该第一台服务器执行所述任务指令;如果选取的第一台服务器的资源消耗信息大于或等于预设阈值,则过滤掉该第一台服务器,继续选取服务器队列中的第二台服务器进行阈值校验,判断该第二台服务器的资源消耗信息是否小于预设阈值,若是则该第二台服务器通过阈值校验,选取该第二台服务器执行所述任务指令,否则继续选取服务器队列中的第三台服务器进行阈值校验,依次类推直到有一台服务器通过阈值校验,选取通过阈值校验的服务器执行所述任务指令。需要说明,所述阈值可以是一个校验阈值或一组校验阈值。例如:在对cpu资源队列中的服务器进行阈值校验时,校验阈值既可以是只有cpu资源阈值这一个阈值,也可以是包括cpu资源阈值、mem资源阈值、io资源阈值等在内的一组阈值。此外,在校验阈值为多个阈值的情况下,只有在服务器的资源消耗信息均小于多个阈值时,才判断服务器通过阈值校验。在本实施例中,进行阈值校验的极端情况是服务器队列中的服务器均未通过阈值校验,在这种情况下需等待预设时间后重新进行 阈值校验,直到有通过阈值校验的服务器出现为止,最终选取通过阈值校验的服务器执行任务指令。

下面结合图2详细描述上述处理的细节。图2是根据本申请另一实施例的服务器调度方法的流程图,如图2所述,所述方法至少包括以下步骤:

步骤S202,收集多台服务器的资源消耗信息。

具体地,在每台服务器中安装代理(Agent),通过发送心跳信息检测服务器是否正常运行,同时收集正常运行的服务器的资源消耗信息、版本信息情况等。其中,所述服务器的资源消耗信息的类型包括但不限于:消耗cpu利用率、mem利用率、io消耗数量、disk利用率。例如,收集到一台服务器的资源消耗信息包括:cpu利用率为50%,mem利用率为80%,io消耗数量为20。在本申请的一个实施例中,服务器的资源消耗信息还可以包括其他的服务器硬件资源消耗信息(如网络使用信息),此处不再赘述。

步骤S204,根据资源类型分别组建多个对应不同资源类型的服务器队列,将正常运行的服务器分别加入到每个服务器队列中,其中,所述服务器队列中的服务器按照其对应的资源类型的资源消耗信息的大小进行排序。

下面结合图3详细描述组建及维护服务器队列的技术细节。参考图3,服务器集群31包括有4台服务器(S1、S2、S3和S4),根据资源类型分别组建多个对应不同资源类型的服务器队列32,分别是:cpu资源队列33、mem资源队列34、io资源队列35、disk资源队列36。在本实施例中,组建的服务器队列还可以包括对应其他资源类型的服务器队列,例如网络(net)资源队列,此处不再赘述。将服务器(S1、S2、S3和S4)分别加入到组建的4个服务器队列中,其中在cpu资源队列33中按照服务器的cpu利用率由小到大的顺序排序,在mem资源队列34中按照服务器的mem利用率由小到大的顺序排序等等。通过图3可以看出,在不同的服务器队列中,服务器的排列顺序是不同的。

步骤S206,接收服务器任务指令,其中,服务器任务指令包括有linux命令、shell脚本、python脚本等等。根据所述服务器任务指令所消耗的资源类型匹配到对应的服务器队列。一般地,计算类的任务指令,可以匹配到cpu 资源队列;文件拷贝类的任务指令,可以匹配到disk资源队列或io资源队列;涉及海量数据的任务指令,可以匹配到mem资源队列;占用数据库连接或者socket连接数量大的任务指令,可以匹配到网络(net)资源队列。

步骤S208,在匹配到的服务器队列中按照顺序选取服务器队列中的服务器。如果服务器队列中的服务器按照资源利用率的升序排列,服务器队列中排列靠前的服务器的资源较空闲,因此可以按照从前至后的顺序选取资源较空闲的服务器;如果服务器队列中的服务器按照资源利用率的降序排列,服务器队列中排列靠后的服务器的资源较空闲,因此可以按照从后至前的顺序选取资源较空闲的服务器。

步骤S210,对选取的服务器进行阈值校验,判断选取的服务器的资源消耗信息是否小于预设阈值,若是则执行步骤S212,否则按照顺序选取下一台服务器继续进行阈值校验。

在本实施例中,设置一组校验阈值进行阈值校验。具体地,阈值校验过程包括:首先确定一组校验阈值(所述阈值也可以根据需求随时进行动态调整),比如cpu利用率为50%、mem利用率为80%、io消耗为20等等。如果选取的第一台服务器的各个资源消耗信息均在校验阈值之下,那么该第一台服务器就为最佳的可执行服务器任务指令的服务器;如果选取的第一台服务器各个资源消耗信息指标中有一个指标在阈值之上,那么就过滤掉该服务器,继续选取该服务器队列中的第二台服务器,断该第二台服务器的各个资源消耗信息是否均小于预设阈值,若是则该第二台服务器通过阈值校验,选取该第二台服务器执行所述任务指令,否则再选取服务器队列中第三台服务器进行阈值校验,依次类推,直到有一台服务器通过阈值校验。若所述服务器队列中的服务器均未通过阈值校验,则等待预设时间后继续执行步骤S208,重新选取服务器进行阈值校验,直到有通过阈值校验的服务器出现为止。

步骤S212,选取通过阈值检验的服务器执行步骤S206接收到的服务器任务指令。

通过本申请的上述实施例,能够选取服务器集群中性能最优的服务器执行服务器任务指令。

根据本申请实施例,还提供一种服务器调度系统。

图4是根据本申请实施例的服务器调度系统的结构框图,如图4所示,所述系统包括:资源消耗信息收集模块41、服务器队列组建及维护模块42、接收模块43、匹配模块44和调度模块45,下面详细描述各模块的结构和功能。

资源消耗信息收集模块41,用于收集服务器集群中的多台服务器的资源消耗信息,其中,所述资源消耗信息包括但不限于:中央处理器(cpu)利用率、内存(mem)利用率、输入\输出(io)消耗数量、硬盘(disk)利用率、网络(net)使用情况等。

服务器队列组建及维护模块42,用于根据资源类型分别组建多个对应不同资源类型的服务器队列,将所述多台服务器分别加入到每个服务器队列中,其中,所述服务器队列中的服务器按照其对应的资源类型的资源消耗信息进行排序。在本申请实施例中,所述服务器队列包括但不限于:cpu资源队列、mem资源队列、io资源队列、disk资源队列。在本实施例中,将服务器集群中的多台服务器分别加入到上述的服务器队列中,在每个服务器队列中按照服务器队列对应的资源类型的资源消耗信息对服务器进行排序。如果服务器队列中的服务器按照资源利用率的升序排列,那么资源较空闲的服务器排列在更靠前的位置。需要说明,服务器队列组建及维护模块42需要按照预设时间(例如以秒为单位)动态更新各个服务器队列,使得队列中的服务器的排序结果实时反映每个服务器的资源消耗的实际指标。

进一步,所述系统还包括有:检测模块(图中未示出),用于检测所述服务器集群中的服务器是否正常运行,若是则将所述服务器分别加入到每个服务器队列中。

接收模块43,用于接收服务器任务指令,其中,所述服务器任务指令包括有linux命令、shell脚本、python脚本等等。

匹配模块44,用于根据所述服务器任务指令所消耗的资源类型匹配到对应的服务器队列。一般地,服务器任务指令与业务逻辑相关,当接收到用户传入的服务器任务指令后,首先判断该任务指令所消耗的资源类型:比如消 耗cpu类,消耗mem类,消耗io类,消耗disk类等等。然后根据用户传入的任务指令所消耗的资源类型,匹配到与该资源类型相对应的服务器队列,例如,计算类的任务指令,可以匹配到cpu资源队列;文件拷贝类的任务指令,可以匹配到disk资源队列或io资源队列;涉及海量数据的任务指令,可以匹配到mem资源队列;占用数据库连接或者socket连接数量大的任务指令,可以匹配到网络(net)资源队列。

调度模块45,用于按照顺序选取所述服务器队列中的服务器执行所述服务器任务指令。如果服务器队列中的服务器按照资源利用率的升序排列,服务器队列中排列靠前的服务器的资源较空闲,因此可以按照从前至后的顺序选取资源较空闲的服务器执行需消耗该资源的服务器任务指令;如果服务器队列中的服务器按照资源利用率的降序排列,服务器队列中排列靠后的服务器的资源较空闲,因此可以按照从后至前的顺序选取资源较空闲的服务器执行需消耗该资源的服务器任务指令,在保证程序运行效果的同时平衡了机器使用率。

进一步,所述选取模块45还用于,对选取的服务器进行阈值校验,判断选取的服务器的资源消耗信息是否小于预设阈值,若是则选取该服务器执行所述任务指令,否则按照顺序选取下一台服务器继续进行阈值校验。需要说明,所述阈值可以是一个校验阈值或一组校验阈值。在校验阈值为多个的情况下,只有在服务器的资源消耗信息均小于多个阈值时,才判断服务器通过阈值校验。如果所述服务器队列中的服务器均未通过阈值校验,则等待预设时间后重新进行阈值校验,直到有通过阈值校验的服务器出现为止,最终选取通过阈值校验的服务器执行任务指令。

本申请的方法的操作步骤与系统的结构特征对应,可以相互参照,不再一一赘述。

根据本申请的技术方案,通过将多台服务器按照各个资源消耗信息指标排序,并根据排序选取服务器执行服务器任务指令,从而能够选取服务器集群中性能最优的服务器执行服务器任务指令,并使得不同类型的服务器任务指令能够被调度到匹配的服务器执行,实现了对服务器集群的智能调度。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机 程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之 内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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