分布式任务调度方法、系统及存储介质与流程

文档序号:17488759发布日期:2019-04-23 20:13阅读:214来源:国知局
分布式任务调度方法、系统及存储介质与流程

本发明涉及计算机任务管理技术领域,尤其涉及一种分布式任务调度方法、系统及计算机可读存储介质。



背景技术:

按照调度信息在何处存储以及调度算法在何处执行,可将任务调度系统分为两类:分布式任务调度系统和分布式任务调度系统。在分布式任务调度系统中,存在一个作为中心调度器的控制器,可以接收所有执行机的状态信息,所有任务由该中心调度器统一调度,然后再分配到各个执行机上去执行。而分布式任务调度系统具有多个控制器,这些控制器共同完成调度策略。分布式任务调度系统的最大优点是具有良好的扩展性。

目前,分布式任务调度系统通常利用多个控制器间的同步通信,实现多个执行机间的负载均衡,然而,由于无法排除网络延迟等因素的影响,调度效率无法得到保障。



技术实现要素:

本发明的主要目的在于提供一种分布式任务调度方法、系统及计算机可读存储介质,用来提高分布式任务调度系统的调度效率。

为实现上述目的,本发明提供一种分布式任务调度方法,应用于分布式任务调度系统,该方法包括:

统计步骤:获取执行机的可用状态,统计可用执行机的数量;

设置步骤:设置每个所述可用执行机的可执行任务阈值并记录所述分布式任务调度系统的每个控制器对每个所述可用执行机的可分配任务数;

映射步骤:从任一控制器获取待分配任务,根据该待分配任务的属性信息计算该待分配任务的哈希值;

计算步骤:计算所述哈希值与所述可用执行机的数量的第一取余值,从所述可用执行机中确定与该第一取余值对应的可用执行机;及

分配步骤:当所述控制器对所述确定的可用执行机的可分配任务数大于0时,将所述待分配任务分配给所述确定的可用执行机执行;当所述控制器对所述确定的可用执行机的可分配任务数不大于0时,将所述待分配任务分配给任一其他所述控制器对其的可分配任务数大于0的可用执行机执行;当所述控制器对所述可用执行机的可分配任务数都不大于0时,随机选择一个可用执行机执行所述待分配任务。

优选地,所述待分配任务的属性信息包括任务名称和任务所有者名称。

优选地,所述映射步骤包括:

利用第一哈希函数对所述待分配任务的名称进行哈希运算,得到第一运算结果;

利用第二哈希函数对所述待分配任务的所有者名称进行哈希运算,得到第二运算结果;

对所述第一运算结果和所述第二运算结果进行异或运算,得到第三运算结果,将该第三运算结果作为所述待分配任务的哈希值。

优选地,所述第一哈希函数和所述第二哈希函数为md5、sha-1中的一种或两种。

优选地,所述设置步骤中记录每个控制器对每个所述可用执行机的可分配任务数的过程包括如下步骤:

将所述可执行任务阈值与控制器的数量相除并舍位取整,得到每个控制器对每个所述可用执行机的可分配任务数的初始值;

在每个控制器上定义一个一维数组,使该一维数组的元素与所述可用执行机一一对应,且各元素的初始值与所述每个控制器对每个所述可用执行机的可分配任务数的初始值相等;

将从某个控制器获取的一个待分配任务分配给某个可用执行机执行时,该控制器对该可用执行机的可分配任务数减1;

该可用执行机执行完成该任务时,该控制器对该可用执行机的可分配任务数加1。

优选地,所述分配步骤中将所述待分配任务分配给任一其他所述控制器对其的可分配任务数大于0的可用执行机执行的过程包括如下步骤:

获取小于所述可用执行机的数量且与所述可用执行机的数量互质的自然数,统计获取的自然数的数量;

计算所述待分配任务的哈希值与所述获取的自然数的数量的第二取余值,选取与该第二取余值对应的所述自然数作为扫描步长;

根据所述扫描步长依次判断所述控制器对各可用执行机的可分配任务数是否大于0;

当所述控制器对某个可用执行机的可分配任务数大于0时,将所述待分配任务分配给该可用执行机执行,结束所述分配步骤。

本发明还提供一种分布式任务调度系统,该分布式任务调度系统包括存储器、处理器和若干执行机,其特征在于,所述存储器中包括任务调度程序,该任务调度程序被所述处理器执行时实现如下步骤:

统计步骤:获取执行机的可用状态,统计可用执行机的数量;

设置步骤:设置每个所述可用执行机的可执行任务阈值并记录所述分布式任务调度系统的每个控制器对每个所述可用执行机的可分配任务数;

映射步骤:从任一控制器获取待分配任务,根据该待分配任务的属性信息计算该待分配任务的哈希值;

计算步骤:计算所述哈希值与所述可用执行机的数量的第一取余值,从所述可用执行机中确定与该第一取余值对应的可用执行机;及

分配步骤:当所述控制器对所述确定的可用执行机的可分配任务数大于0时,将所述待分配任务分配给所述确定的可用执行机执行;当所述控制器对所述确定的可用执行机的可分配任务数不大于0时,将所述待分配任务分配给任一其他所述控制器对其的可分配任务数大于0的可用执行机执行;当所述控制器对所述可用执行机的可分配任务数都不大于0时,随机选择一个可用执行机执行所述待分配任务。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有任务调度程序,该任务调度程序被执行时实现如上所述的分布式任务调度方法中的任意步骤。

本发明提供的分布式任务调度方法、系统及计算机可读存储介质,通过获取执行机的可用状态,统计可用执行机的数量,然后设置每个可用执行机的可执行任务阈值,通过在控制器上定义一维数组的方式记录分布式任务调度系统的每个控制器对每个所述可用执行机的可分配任务数。在从任一控制器获取待分配任务之后,根据该待分配任务的属性信息计算该待分配任务的哈希值,接着利用所述哈希值和所述可用执行机的数量计算所述待分配任务的可用执行机,最后根据调度该待分配任务的控制器对所述计算得到的可用执行机以及其他可用执行机的可分配任务数,选择执行该待分配任务的可用执行机。在本发明中,利用所述哈希值和所述可用执行机的数量计算所述待分配任务的可用执行机是为了优先将属性信息相同的同类任务分配给相同的可用执行机执行,以实现资源复用,提高任务执行效率。另外,通过定义一维数组记录每个控制器对每个所述可用执行机的可分配任务数,使得多个控制器间无须进行同步通信,也能实现负载均衡,提高了调度效率。因此,利用本发明,有利于提高任务执行效率,还可以提高分布式任务调度系统的调度效率。

附图说明

图1为本发明分布式任务调度系统一实施例的示意图;

图2为图1中任务调度程序一实施例的程序模块图;

图3为本发明分布式任务调度方法一实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解的是,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种分布式任务调度系统。参照图1所示,为本发明分布式任务调度系统1一实施例的示意图。

所述分布式任务调度系统1包括存储器11、处理器12、网络接口13以及执行机集群14。

其中,所述存储器11包括至少一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器等的非易失性存储介质。在一些实施例中,所述可读存储介质可以是所述分布式任务调度系统1的内部存储单元,例如该分布式任务调度系统1中的主机硬盘。在另一些实施例中,所述可读存储介质也可以是所述分布式任务调度系统1的外部存储器11,例如所述分布式任务调度系统1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。

在本实施例中,所述存储器11的可读存储介质通常用于存储任务调度程序10。所述存储器11还可以用于暂时地存储已经输出或者将要输出的数据。

所述处理器12包括多个控制器,该多个控制器随机接收待分配任务并对其进行调度,将其分配到所述执行机集群14中的各个执行机上去执行。需要说明的是,不同的控制器可以部署在同一个处理器中,也可以部署在不同的处理器(图中未示出)中。在一些实施例中,所述处理器12可以是中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码,例如执行所述任务调度程序10。

所述网络接口13可以包括标准的有线接口、无线接口(如wi-fi接口)。通常用于在该分布式任务调度系统1与其他系统或电子设备之间建立通信连接。

所述执行机集群14包括若干执行机。所述执行机可以是各种具有运算功能的电子设备,包括但不限于服务器、智能手机、电话手表、平板电脑、便携式计算机、桌上型计算机、游戏设备、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii)、mp4播放器(movingpictureexpertsgroupaudiolayeriv),等等。在一个实施例中,当所述执行机为服务器时,该服务器可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等的一种或几种。在另一个实施例中,不同的执行机还可以部署在同一个服务器中。

在本发明中,为了便于描述,假设所述执行机群14中的执行机是同种类型的执行机,具有相同的配置和处理能力。

图1仅示出了具有组件11-14和任务调度程序10的分布式任务调度系统1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

可选地,该分布式任务调度系统1还可以包括输入单元比如键盘(keyboard),语音输入装置比如麦克风(microphone)等具有语音识别功能的设备以及语音输出装置比如音响、耳机等。用户可利用这些装置和设备对所述任务调度程序10进行设置和调整。

可选地,该分布式任务调度系统1还可以包括显示器,也可以称为显示屏或显示单元。在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(organiclight-emittingdiode,oled)显示器等。显示器用于显示在分布式任务调度系统1中处理的信息以及用于显示可视化的用户界面。

该分布式任务调度系统1还可以包括射频(radiofrequency,rf)电路、传感器、音频电路、有线接口和无线接口等等,在此不再赘述。

在上述实施例中,处理器12执行存储器11中存储的任务调度程序10时可以实现如下步骤:

统计步骤:获取执行机的可用状态,统计可用执行机的数量;

设置步骤:设置每个所述可用执行机的可执行任务阈值并记录所述分布式任务调度系统的每个控制器对每个所述可用执行机的可分配任务数;

映射步骤:从任一控制器获取待分配任务,根据该待分配任务的属性信息计算该待分配任务的哈希值;

计算步骤:计算所述哈希值与所述可用执行机的数量的第一取余值,从所述可用执行机中确定与该第一取余值对应的可用执行机;及

分配步骤:当所述控制器对所述确定的可用执行机的可分配任务数大于0时,将所述待分配任务分配给所述确定的可用执行机执行;当所述控制器对所述确定的可用执行机的可分配任务数不大于0时,将所述待分配任务分配给任一其他所述控制器对其的可分配任务数大于0的可用执行机执行;当所述控制器对所述可用执行机的可分配任务数都不大于0时,随机选择一个可用执行机执行所述待分配任务。

关于上述步骤的详细介绍,请参照下述图2关于任务调度程序10实施例的程序模块图以及图3关于分布式任务调度方法实施例的流程图的说明。

在其他实施例中,所述任务调度程序10可以被分割为多个模块,该多个模块被存储于存储器12中,并由处理器13执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。

参照图2所示,为图1中任务调度程序10一实施例的程序模块图。在本实施例中,所述任务调度程序10可以被分割为:统计模块110、设置模块120、映射模块130、计算模块140以及分配模块150。

所述统计模块110,用于获取执行机的可以状态,计算可用执行机的数量。具体地,统计模块110可以向各个执行机发送用于确定节点设备可用状态的广播报文,并根据接收到的响应报文计算所述执行机集群14中可用执行机的数量。统计模块110还可以用于对所述可用执行机进行编号,为每个所述可用执行机分配一个唯一的可用执行机编号,例如,从0开始以递增整数为每个所述可用执行机编号:0、1、2……

所述设置模块120,用于设置每个所述可用执行机的可执行任务阈值,并记录所述分布式任务调度系统的每个控制器对每个所述可用执行机的可分配任务数。具体地,用户可通过设置模块120根据所述可用执行机的配置、承载力等设置每个所述可用执行机的可执行任务阈值,然后将该可执行任务阈值与所述分布式任务调度系统1包含的控制器的数量相除并舍位取整,得到每个控制器对每个所述可用执行机的可分配任务数。例如,假设所述可用执行机的可执行任务阈值都为10,所述分布式任务调度系统1具有3个用于完成调度策略的控制器,那么每个控制器对每个所述可用执行机的可分配任务数为3。可以理解的是,控制器对可用执行机的可分配任务数是变化的,当将从某个控制器获取的一个待分配任务分配给某个可用执行机执行时,该控制器对该可用执行机的可分配任务数减1,当该可用执行机执行完成该任务时,该控制器对该可用执行机的可分配任务数加1。在本实施例中,通过在每个控制器上定义一个一维数组,使该一维数组的元素与所述可用执行机一一对应,且各元素的值与所述每个控制器对每个所述可用执行机的可分配任务数的值始终相等,即,当将从某个控制器获取的一个待分配任务分配给某个可用执行机执行时,对应元素值减1,当该可用执行机执行完成该任务时,对应元素值加1。

所述映射模块130,用于从任一控制器获取待分配任务,并根据该待分配任务的属性信息计算该待分配任务的哈希值。其中,所述待分配任务的属性信息包括任务名称和任务所有者名称。在一个实施例中,可以对所述待分配任务的名称进行md5运算,得到第一运算结果,再对所述待分配任务的所有者名称进行sha-1运算,得到第二运算结果,最后将所述第二运算结果(160位)的后128位与所述第一运算结果(128位)进行异或运算,得到第三运算结果,将该第三运算结果作为所述待分配任务的哈希值。可以理解的是,同类任务通常具有相同的任务名称,其任务所有者也相同,因此,依照上述哈希值计算方法,同类任务将得到相同的哈希值。

所述计算模块140,用于计算所述哈希值与所述可用执行机的数量的第一取余值,从所述可用执行机中确定与该第一取余值对应的可用执行机。例如,当所述可用执行机的编号依次为0、1、2……i时,若某个待分配任务的哈希值与所述可用执行机的数量(i+1)的取余值为0时,则编号为0的可用执行机即为与所述第一取余值对应的可用执行机。因为同类任务的哈希值相同,所以,对于同类任务,所述确定的可用执行机相同。所述计算模块130的作用在于,优先考虑将同类任务分配给相同的可用执行机执行,以实现资源复用,提高任务执行效率。

所述分配模块150,用于根据调度所述待分配任务的控制器对所述确定的可用执行机以及其他可用执行机的可分配任务数,选择执行所述待分配任务的可用执行机。具体地,当所述控制器对所述确定的可用执行机的可分配任务数大于0时,将所述待分配任务分配给所述确定的可用执行机执行;当所述控制器对所述确定的可用执行机的可分配任务数不大于0时,将所述待分配任务分配给任一其他所述控制器对其的可分配任务数大于0的可用执行机执行;当所述控制器对所述可用执行机的可分配任务数都不大于0时,随机选择一个可用执行机执行所述待分配任务。其中,将所述待分配任务分配给任一其他所述控制器对其的可分配任务数大于0的可用执行机执行的过程包括如下操作:

获取小于所述可用执行机的数量且与所述可用执行机的数量互质的自然数,统计获取的自然数的数量;

计算所述待分配任务的哈希值与所述获取的自然数的数量的第二取余值,选取与该第二取余值对应的所述自然数作为扫描步长;

根据所述扫描步长依次判断所述控制器对各可用执行机的可分配任务数是否大于0;

当所述控制器对某个可用执行机的可分配任务数大于0时,将所述待分配任务分配给该可用执行机执行,结束分配操作。

例如,假设所述可用执行机的数量为10,编号为0-9,则所述获取的自然数的数量为4,分别是1、3、7、9。即在为一个待分配任务寻找任一其他所述控制器对其的可分配任务数大于0的可用执行机时,扫描步长可能为1、3、7、9中的一个数。依上述例子,假设所述计算模块140计算得到的所述确定的可用执行机的编号为2,若扫描步长为1,则当所述控制器对所述确定的可用执行机的可分配任务数不大于0时,分配模块150将依次判断所述控制器对编号为3、4、5、……9的可用执行机的可分配任务数是否大于0,直至所述控制器对上述某个可用执行机的可分配任务数大于0时,将所述待分配任务分配给该可用执行机执行,结束分配操作;若扫描步长为9,则当所述控制器对所述确定的可用执行机的可分配任务数不大于0时,分配模块150将依次判断所述控制器对编号为1、0、9、8、……3的可用执行机的可分配任务数是否大于0,直至所述控制器对上述某个可用执行机的可分配任务数大于0时,将所述待分配任务分配给该可用执行机执行,结束分配操作。

需要说明的是,本发明未将扫描步长规定为1,而是通过计算的方式在满足要求的有限的自然数(包括1)中选择确定的数作为某个待分配任务的扫描步长,是为了减少任务分配不均的可能。例如,对于多类任务,计算模块140计算得到的所述确定的可用执行机可能相同,当所述确定的可用执行机相同时,若所述扫描步长也相同,则任务分配过程将出现此多类任务聚集在个别可用执行机上的情况,无法达到负载均衡的目的。而通过上述计算的方式计算出多类任务的扫描步长不一定相等,即可减少任务聚集的可能,更有利于达到负载均衡的目的。

此外,本发明还提供一种分布式任务调度方法。参照图3所示,为本发明分布式任务调度方法的实施例的流程示意图。分布式任务调度系统1的处理器12执行存储器11中存储的任务调度程序10时实现分布式任务调度方法的如下步骤:

步骤s300,利用所述统计模块110获取执行机的可用状态,计算可用执行机的数量。在本实施例中,通过向各个执行机发送用于确定节点设备可用状态的广播报文并接收响应报文来获取所述分布式任务调度系统1中的执行机的可用状态,进而统计可用执行机的数量。然后还可以对所述可用执行机进行编号,为每个所述可用执行机分配一个唯一的可用执行机编号,例如,从0开始以递增整数为每个所述可用执行机编号:0、1、2……i。

步骤s301,利用所述设置模块120设置每个所述可用执行机的可执行任务阈值,并记录所述分布式任务调度系统的每个控制器对每个所述可用执行机的可分配任务数。在本实施例中,可根据所述可用执行机的配置信息预估并设置每个所述可用执行机的可执行任务阈值,然后将该可执行任务阈值与所述分布式任务调度系统1包含的控制器的数量相除并舍位取整,得到每个控制器对每个所述可用执行机的可分配任务数的初始值。然后在每个控制器上定义一个一维数组,使该一维数组的元素与所述可用执行机一一对应,且使各元素的初始值与上述计算得到的每个控制器对每个所述可用执行机的可分配任务数的初始值相等。当将从某个控制器获取的一个待分配任务分配给某个可用执行机执行时,对应元素值减1,当该可用执行机执行完成该任务时,对应元素值加1。

步骤s302,利用所述映射模块130从任一控制器获取待分配任务,并根据该待分配任务的属性信息计算该待分配任务的哈希值。在本实施例中,所述待分配任务的属性信息包括任务名称和任务所有者名称。先对所述待分配任务的名称进行md5运算,得到第一运算结果,再对所述待分配任务的所有者名称进行sha-1运算,得到第二运算结果,最后将所述第二运算结果(160位)的后128位与所述第一运算结果(128位)进行异或运算,得到第三运算结果,将该第三运算结果作为所述待分配任务的哈希值。因为同类任务通常具有相同的任务名称,其任务所有者也相同,所以同类任务将具有相同的哈希值。

步骤s303,利用所述计算模块140计算所述哈希值与所述可用执行机的数量的第一取余值,从所述可用执行机中确定与该第一取余值对应的可用执行机。因为同类任务的哈希值相同,所以,对于同类任务,所述确定的可用执行机相同。优先考虑将同类任务分配给相同的可用执行机执行,可实现资源复用,提高任务执行效率。

步骤s304,利用所述分配模块150根据调度所述待分配任务的控制器对所述确定的可用执行机以及其他可用执行机的可分配任务数,选择执行所述待分配任务的可用执行机。具体地,当所述控制器对所述确定的可用执行机的可分配任务数大于0时,将所述待分配任务分配给所述确定的可用执行机执行;当所述控制器对所述确定的可用执行机的可分配任务数不大于0时,将所述待分配任务分配给任一其他所述控制器对其的可分配任务数大于0的可用执行机执行;当所述控制器对所述可用执行机的可分配任务数都不大于0时,随机选择一个可用执行机执行所述待分配任务。

在本实施例中,将所述待分配任务分配给任一其他所述控制器对其的可分配任务数大于0的可用执行机执行的过程包括如下操作:

计算扫描步长:

step=

coprimelist(numinvokers).get(hash%size(coprimerlist(numinvokers)));

计算任一其他可用执行机的编号:

invoker编号=(homeinvoker+m*step)%numinvokers;

判断所述控制器对当前可用执行机的可分配任务数是否大于0;

若所述控制器对当前可用执行机的可分配任务数大于0,则将所述待分配任务分配给该当前可用执行机执行,结束步骤s304;

若所述控制器对当前可用执行机的可分配任务数不大于0,则令m=m+1,计算另一可用执行机的编号,判断所述控制器对该另一可用执行机的可分配任务数是否大于0。

其中,numinvokers表示可用执行机的数量,coprimelist(numinvokers)表示获取小于numinvokers值且与numinvokers值互质的自然数列表,size(coprimelist(numinvokers))表示所述自然数列表中自然数的个数,get(hash%size(coprimelist(numinvokers)))表示先利用所述待分配任务的哈希值对所述自然数列表中自然数的个数进行取余计算,然后从该自然数列表中取得与所得取余值对应的数值,homeinvoker表示所述确定的可用执行机的编号,变量m表示从1到numinvokers-1的整数值。

当m=numinvokers-1时,将完成对所有所述可用执行机对于所述控制器的可分配任务数与0的相对大小的判断。若所述控制器对所述可用执行机的可分配任务数都不大于0,则随机选择一个可用执行机执行所述待分配任务。

此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以是硬盘、多媒体卡、sd卡、闪存卡、smc、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器等等中的任意一种或者几种的任意组合。所述计算机可读存储介质中包括任务调度程序10,该任务调度程序10被执行时实现的功能,请参照上述关于图2、图3的介绍,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质中,包括若干指令用以使得分布式任务调度系统执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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