CN104657212B - 一种任务调度的方法及系统 - Google Patents
一种任务调度的方法及系统 Download PDFInfo
- Publication number
- CN104657212B CN104657212B CN201510080579.1A CN201510080579A CN104657212B CN 104657212 B CN104657212 B CN 104657212B CN 201510080579 A CN201510080579 A CN 201510080579A CN 104657212 B CN104657212 B CN 104657212B
- Authority
- CN
- China
- Prior art keywords
- task
- type
- concurrent
- scheduler
- dispatch server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开一种任务调度的方法及系统,涉及网络通信技术领域,用于解决任务调度效率低的问题。本发明调度服务器通过消息总线接收运行平台发送的任务完成消息,更新当前任务和当前任务的后续任务的任务状态;获取就绪任务,按任务类型对就绪任务分组,对每组中的就绪任务按静态优先级排序;获取每种任务类型的最大并发数、就绪任务数量、运行中任务数量;通过每种任务类型的最大并发数、就绪任务数量、运行中任务数量,调整每种任务类型的最大并发数,将每种任务类型的就绪任务分别按各组内就绪任务的排列顺序派发给各自的运行平台运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数。本发明提供的方案适于任务调度时采用。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种任务调度的方法及系统。
背景技术
在IT(Information Technology,信息技术)系统中,存在大量后台需要周期性运行的任务,这些任务分布在多个系统平台,并且具有一定的优先级关系以及依赖关系,由于用于处理这些任务的资源是有限的,所以需要对这些任务进行合理的调度。
目前,进行任务调度的方法通常为调度工具提供一个任务配置界面,人工在任务配置界面上将需要运行的任务一个一个连接起来,然后根据业务经验设置每个任务的运行顺序、依赖条件以及优先级等。完成任务配置之后,任务调度系统根据人工配置的运行顺序并行运行某些任务时,如果任务调度系统的资源还有剩余,如果即将运行的任务所占用的资源小于任务调度系统的剩余资源时,任务调度系统可以运行该即将运行的任务,但当即将运行的任务所需占用的资源大于任务调度系统的剩余资源时,则任务调度系统不会启动该即将运行的任务,直到当前正在运行的任务运行结束之后再启动该即将运行的任务,因而在任务调度系统的剩余资源不足以运行即将运行的任务时导致等待时间过长,任务调度的效率低。
发明内容
本发明的实施例提供一种任务调度的方法及系统,可以解决任务调度效率低的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,本发明的实施例提供一种任务调度的方法,所述方法应用于任务调度系统中,所述任务调度系统包括调度服务器、消息总线、用于运行不同任务的多个运行平台,所述方法包括:
所述调度服务器通过所述消息总线接收当前任务对应的运行平台发送的任务完成消息,所述任务完成消息用于指示所述当前任务对应的运行平台已完成所述当前任务;
所述调度服务器通过所述任务完成消息更新所述当前任务的任务状态以及所述当前任务的后续任务的任务状态,所述当前任务的后续任务为规定运行完所述当前任务之后运行的任务,其中,任务的任务状态包括等待状态、就绪状态、运行中状态和完成状态;
所述调度服务器从数据库中获取就绪任务,按照任务类型对所述就绪任务进行分组,并对每组中的就绪任务按静态优先级排序,所述任务类型为根据各任务平均每次运行时长划分的类型;
所述调度服务器获取每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,所述最大并发数为所述任务调度系统允许并行运行每种任务类型的任务的最大数量;
所述调度服务器通过所述每种任务类型的最大并发数、所述每种任务类型的就绪任务数量,以及所述每种任务类型的运行中任务数量,调整所述每种任务类型的最大并发数,将每种任务类型的就绪任务分别按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数。
在本发明的另一实施例中,所述任务类型包括第一类型、第二类型、第三类型,其中,所述第一类型为平均每次运行时长大于等于第一预设时长的任务,所述第二类型为平均每次运行时长小于所述第一预设时长大于第二预设时长的任务,所述第三类型为平均每次运行时长小于等于所述第二预设时长的任务;
所述调度服务器通过所述每种任务类型的最大并发数、所述每种任务类型的就绪任务数量,以及所述每种任务类型的运行中任务数量,调整所述每种任务类型的最大并发数,将每种任务类型的就绪任务分别按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数,包括:
所述调度服务器确定第一类型的运行中任务数量小于第一类型的最大并发数时,将第一类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第一类型的运行中任务数量达到所述第一类型的最大并发数;
当所述第一类型的就绪任务全部开始运行时,所述第一类型的运行中任务数量仍未达到所述第一类型的最大并发数,将所述第一类型的最大并发数中的剩余数量转换为第二类型的转换并发数,将第二类型的最大并发数更新为第二类型的原始最大并发数+所述第二类型的转换并发数;
所述调度服务器确定所述第二类型的运行中任务数量小于所述第二类型的最大并发数时,将第二类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第二类型的运行中任务数量达到所述第二类型的最大并发数;
当所述第二类型的就绪任务全部开始运行时,所述第二类型的运行中任务数量仍未达到所述第二类型的最大并发数,将所述第二类型的最大并发数中的剩余数量转换为第三类型的转换并发数,将第三类型的最大并发数更新为第三类型的原始并发数+所述第三类型的转换并发数;
所述调度服务器确定所述第三类型的运行中任务数量小于所述第三类型的最大并发数时,将第三类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第三类型的运行中任务数量达到所述第三类型的最大并发数。
在本发明的另一实施例中,所述调度服务器通过所述任务完成消息更新所述当前任务的任务状态以及当前任务的后续任务的任务状态,包括:
所述调度服务器将所述当前任务的任务状态更新为完成状态;
所述调度服务器从所述数据库中查找所述当前任务的后续任务;
当确定所述后续任务的前置任务都为完成状态时,将所述后续任务的任务状态更新为就绪状态,所述后续任务的前置任务为规定在运行所述后续任务之前需运行的任务。
在本发明的另一实施例中,在所述调度服务器通过消息总线接收运行平台发送的任务完成消息之前,所述方法还包括:
所述调度服务器从所述数据库中获取调度任务信息,所述调度任务信息包括调度任务的任务标识、所述调度任务的运行平台以及所述调度任务的静态优先级,所述调度任务包括所述任务调度系统需要运行的所有任务;
所述调度服务器通过查找所述调度任务间的数据关系,确定每个调度任务的前置任务;
所述调度服务器更新每个调度任务的静态优先级;
所述调度服务器确定每个调度任务的任务类型。
在本发明的另一实施例中,所述调度服务器更新每个调度任务的静态优先级,包括:
所述调度服务器确定每条任务路径的指定优先级,所述任务路径用于表示所述调度任务之间的关联以及运行顺序;
所述调度服务器将各任务路径上的每个调度任务的静态优先级与各自对应的指定优先级进行比较,当调度任务的静态优先级小于指定优先级时,将调度任务的静态优先级更新为指定优先级。
在本发明的另一实施例中,所述确定调度任务的任务类型,包括:
所述调度服务器获取每个调度任务在预设时间段内的运行总时长以及运行次数;
所述调度服务器通过每个调度任务在预设时间段内的运行总时长以及运行次数,确定每个调度任务的平均每次运行时长;
所述调度服务器将平均每次运行时长大于等于所述第一预设时长的调度任务分为第一类型;
所述调度服务器将平均每次运行时长小于所述第一预设时长大于所述第二预设时长的调度任务分为第二类型;
所述调度服务器将平均每次运行时长小于等于所述第二预设时长的调度任务分为第三类型。
另一方面,本发明的实施例提供一种任务调度的系统,包括:
运行平台,用于通过消息总线向调度服务器发送当前任务的任务完成消息,所述任务完成消息用于指示所述当前任务对应的运行平台已完成所述当前任务;
所述消息总线,用于接收所述当前任务对应的运行平台发送的所述任务完成消息,并将所述任务完成消息发送给调度服务器;
所述调度服务器,用于通过所述消息总线接收当前任务对应的运行平台发送的任务完成消息,通过所述任务完成消息更新所述当前任务的任务状态以及所述当前任务的后续任务的任务状态,所述当前任务的后续任务为规定运行完所述当前任务之后运行的任务,其中,任务的任务状态包括等待状态、就绪状态、运行中状态和完成状态;从数据库中获取就绪任务,按照任务类型对所述就绪任务进行分组,并对每组中的就绪任务按静态优先级排序,所述任务类型为根据各任务平均每次运行时长划分的类型;获取每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,所述最大并发数为所述调度系统允许并行运行每种任务类型的任务的最大数量;通过所述每种任务类型的最大并发数、所述每种任务类型的就绪任务数量,以及所述每种任务类型的运行中任务数量,调整所述每种任务类型的最大并发数,将每种任务类型的就绪任务分别按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数;
所述运行平台,还用于运行所述调度服务器派发的各自对应的就绪任务。
在本发明的另一实施例中,所述任务类型包括第一类型、第二类型、第三类型,其中,所述第一类型为平均每次运行时长大于等于第一预设时长的任务,所述第二类型为平均每次运行时长小于所述第一预设时长大于第二预设时长的任务,所述第三类型为平均每次运行时长小于等于所述第二预设时长的任务;
所述调度服务器,用于确定第一类型的运行中任务数量小于第一类型的最大并发数时,将第一类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第一类型的运行中任务数量达到所述第一类型的最大并发数;当所述第一类型的就绪任务全部开始运行时,所述第一类型的运行中任务数量仍未达到所述第一类型的最大并发数,将所述第一类型的最大并发数中的剩余数量转换为第二类型的转换并发数,将第二类型的最大并发数更新为第二类型的原始最大并发数+所述第二类型的转换并发数;
所述运行平台,还用于运行所述调度服务器派发的各自对应的第一类型的就绪任务;
所述调度服务器,还用于确定所述第二类型的运行中任务数量小于所述第二类型的最大并发数时,将第二类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第二类型的运行中任务数量达到所述第二类型的最大并发数;当所述第二类型的就绪任务全部开始运行时,所述第二类型的运行中任务数量仍未达到所述第二类型的最大并发数,将所述第二类型的最大并发数中的剩余数量转换为第三类型的转换并发数,将第三类型的最大并发数更新为第三类型的原始并发数+所述第三类型的转换并发数;
所述运行平台,还用于运行所述调度服务器派发的各自对应的第二类型的就绪任务;
所述调度服务器,还用于确定所述第三类型的运行中任务数量小于所述第三类型的最大并发数时,将第三类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第三类型的运行中任务数量达到所述第三类型的最大并发数;
所述运行平台,还用于运行所述调度服务器派发的各自对应的第三类型的就绪任务。
在本发明的另一实施例中,所述调度服务器,还用于将所述当前任务的任务状态更新为完成状态;从所述数据库中查找所述当前任务的后续任务;当确定所述后续任务的前置任务都为完成状态时,将所述后续任务的任务状态更新为就绪状态,所述后续任务的前置任务为规定在运行所述后续任务之前需运行的任务。
在本发明的另一实施例中,所述调度服务器,还用于从所述数据库中获取调度任务信息,所述调度任务信息包括调度任务的任务标识、所述调度任务的运行平台以及所述调度任务的静态优先级,所述调度任务包括所述任务调度系统需要运行的所有任务;通过查找所述调度任务间的数据关系,确定每个调度任务的前置任务;更新每个调度任务的静态优先级;确定每个调度任务的任务类型。
在本发明的另一实施例中,所述调度服务器,还用于确定每条任务路径的指定优先级,所述任务路径用于表示所述调度任务之间的关联以及运行顺序;将各任务路径上的每个调度任务的静态优先级与各自对应的指定优先级进行比较,当调度任务的静态优先级小于指定优先级时,将调度任务的静态优先级更新为指定优先级。
在本发明的另一实施例中,所述调度服务器,还用于获取每个调度任务在预设时间段内的运行总时长以及运行次数;通过每个调度任务在预设时间段内的运行总时长以及运行次数,确定每个调度任务每次运行时长的平均值;通过每个调度任务每次运行时长的平均值,对调度任务进行分类;将平均每次运行时长大于等于所述第一预设时长的调度任务分为第一类型;将平均每次运行时长小于所述第一预设时长大于所述第二预设时长的调度任务分为第二类型;将平均每次运行时长小于等于所述第二预设时长的调度任务分为第三类型。
本发明实施例提供的任务调度的方法及系统,调度服务器通过消息总线接收当前任务对应的运行平台发送的任务完成消息,调度服务器通过任务完成消息更新当前任务的任务状态以及当前任务的后续任务的任务状态,之后调度服务器从数据库中获取就绪任务,按照任务类型对就绪任务进行分组,并对每组中的就绪任务按照静态优先级排序,然后获取每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,通过每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,调整每种任务类型的最大并发数,将每种任务类型的就绪任务按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数。与现有技术中任务调度系统还有剩余资源的情况下,由于要严格按照人工配置的顺序运行任务,使得任务调度系统的剩余资源不够运行即将运行的任务,等待时间过长而导致任务调度的效率低相比,本发明中每运行完一个任务后都会根据当前实际情况调整当前每种任务类型的最大并发数,并将各任务类型的就绪任务按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,而不是严格按照事先配置的运行顺序运行,使得每种任务类型的运行中任务数量达到各自任务类型的最大并发数,充分利用任务调度系统的资源运行任务,减少了运行全部调度任务所需的时间,提高了任务调度的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种任务调度的方法流程图;
图2为本发明实施例提供的另一种任务调度的方法流程图;
图3为本发明实施例提供的另一种任务调度的方法流程图;
图4为本发明实施例提供的另一种任务调度的方法流程图;
图5为本发明实施例提供的一种任务调度的方法的示例性示意图;
图6为本发明实施例提供的另一种任务调度的方法的示例性示意图;
图7为本发明实施例提供的另一种任务调度的方法的示例性示意图;
图8为本发明实施例提供的一种任务调度的系统的逻辑结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种任务调度的方法,该方法应用于任务调度系统中,任务调度系统包括调度服务器、消息总线、用于运行不同任务的多个运行平台,如图1所示,该方法包括:
101、调度服务器通过消息总线接收当前任务对应的运行平台发送的任务完成消息,任务完成消息用于指示运行平台已完成当前任务。
其中,消息总线用于接收多个运行平台发送的任务完成消息,并将任务完成消息转发给调度服务器。
102、调度服务器通过任务完成消息更新当前任务的任务状态以及当前任务的后续任务的任务状态,当前任务的后续任务为规定运行完当前任务之后运行的任务,其中,任务状态包括等待状态、就绪状态、运行中状态和完成状态。
可以理解的是,当前任务运行完之后任务状态会发生改变,当前任务的任务状态改变可能会引起与当前任务相关联的任务状态发生改变,所以每运行完一个任务都需要更新该任务的任务状态以及该任务的后续任务的任务状态。
103、调度服务器从数据库中获取就绪任务,按照任务类型对就绪任务进行分组,并对每组中的就绪任务按静态优先级排序,任务类型为根据各任务平均每次运行时长划分的类型。
举例说明,假设就绪任务有T1(10)、T2(2)、T3(5)、T4(9)、T5(3)、T6(7),其中,括号内数字代表各就绪任务的静态优先级,首先对这些就绪任务进行分组,第一组中包括第一种任务类型的任务:T1、T5,第二组中包括第二种任务类型的任务:T3、T6,第三组中包括第三种任务类型的任务:T2、T4,然后分别对每组中的就绪任务进行排序,例如按照静态优先级从高到低的顺序排序,则第一组:T1、T5,第二组:T6、T3,第三组:T4、T2。
104、调度服务器获取每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,最大并发数为任务调度系统允许并行运行每种类型的任务的最大数量。
值得说明的是,每种任务类型的最大并发数是在进行任务调度之前,根据任务调度系统的可用资源量以及运行每种任务类型的任务所需的资源量确定的。
105、调度服务器通过每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,调整每种任务类型的最大并发数,将每种任务类型的就绪任务数量派发给各任务对应的运行平台运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数。
本发明实施例提供的任务调度的方法,调度服务器通过消息总线接收当前任务对应的运行平台发送的任务完成消息,调度服务器通过任务完成消息更新当前任务的任务状态以及当前任务的后续任务的任务状态,之后调度服务器从数据库中获取就绪任务,按照任务类型对就绪任务进行分组,并对每组中的就绪任务按照静态优先级排序,然后获取每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,通过每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,调整每种任务类型的最大并发数,将每种任务类型的就绪任务按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数。与现有技术中任务调度系统还有剩余资源的情况下,由于要严格按照人工配置的顺序运行任务,使得任务调度系统的剩余资源不够运行即将运行的任务,等待时间过长而导致任务调度的效率低相比,本发明中每运行完一个任务后都会根据当前实际情况调整当前每种任务类型的最大并发数,并将各任务类型的就绪任务按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,而不是严格按照事先配置的运行顺序运行,使得每种任务类型的运行中任务数量达到各自任务类型的最大并发数,充分利用任务调度系统的资源运行任务,减少了运行全部调度任务所需的时间,提高了任务调度的效率。
本发明实施例还提供一种任务调度的方法,本实施例中详细描述了调整每种任务类型的最大并发数,并根据每种任务类型的最大并发数进行任务调度的方法,其中,任务类型包括第一类型、第二类型、第三类型,第一类型为平均每次运行时长大于等于第一预设时长的任务,第二类型为平均每次运行时长小于第一预设时长大于第二预设时长的任务,第三类型为平均每次运行时长小于等于第二预设时长的任务。如图2所示,该方法包括:
201、调度服务器确定第一类型的运行中任务数量小于第一类型的最大并发数时,将第一类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至第一类型的运行中任务数量达到第一类型的最大并发数。
其中,第一类型任务为平均每次运行时间较长的任务,运行时间长则整个运行过程对系统资源的占用量比较大。可以理解的是,第二类型任务对系统资源的占用量适中,第三类型任务对系统资源的占用量较小。在开始运行任务之前,调度服务器会根据系统资源情况以及每种任务类型任务运行时对资源的占用量设置每种类型的最大并发数。
例如,设置的第一类型的最大并发数为5,此时第一类型的运行中任务数量为3,第一类型的就绪任务数量为4,则将第一类型的就绪任务中静态优先级最高的两个任务派发给各自对应的运行平台运行。
202、当第一类型的就绪任务全部开始运行时,第一类型的运行中任务数量仍未达到第一类型的最大并发数,将第一类型的最大并发数中的剩余数量转换为第二类型的转换并发数,将第二类型的最大并发数更新为第二类型的原始最大并发数+第二类型的转换并发数。
值得说明的是,假设设置的第一类型的最大并发数为5,此时第一类型的运行中任务数量为3,但是第一类型的就绪任务只有一个,将该就绪任务派发给对应的运行平台运行之后,第一类型的运行中任务数量为4,未达到第一类型的最大并发数,则将第一类型的最大并发数中的剩余数量1转换为第二类型的转换并发数。
由于第一类型的任务对系统资源的占用量大,所以运行一个第一类型任务对系统资源的占用量可以供多个第二类型的任务使用,假设1个第一类型的任务对系统资源的占用量等于5个第二类型的任务对系统资源的占用量,则第二类型的转换并发数为5,设第二类型的原始最大并发数为10,则此时将第二类型的最大并发数更新为第二类型的原始最大并发数+第二类型的转换并发数=15。
此外,当第一类型的就绪任务全部开始运行时,第一类型的运行中任务数量达到第一类型的最大并发数,则不改变第二类型的最大并发数,继续执行下述步骤203。
203、调度服务器确定第二类型的运行中任务数量小于第二类型的最大并发数时,将第二类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至第二类型的运行中任务数量达到第二类型的最大并发数。
结合上述步骤202、如果第二类型的最大并发数更新为15,则判断第二类型的运行中任务数量是否小于15,若是,则将第二类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至第二类型的运行中任务数量达到15,若否,则直接执行下述步骤205。
如果第二类型的最大并发数没有改变,仍为10,则调度服务器判断第二类型的运行中任务数量是否小于10,如果小于,则按上述方法派发任务,直至第二类型的运行中任务数量达到10。
204、当第二类型的就绪任务全部开始运行时,第二类型的运行中任务数量仍未达到第二类型的最大并发数,将第二类型的最大并发数中的剩余数量转换为第三类型的转换并发数,将第三类型的最大并发数更新为第三类型的原始最大并发数+第三类型的转换并发数。
此步骤与上述步骤202的原理相同,假设此时第二类型的最大并发数中的剩余数量为5,1个第二类型的任务对系统资源的占用量等于4个第三类型的任务对系统资源的占用量,则第三类型的转换并发数为20,设第三类型的原始最大并发数为35,则将第三类型的最大并发数更新为第三类型的原始最大并发数+第三类型的转换并发数=55。
当第二类型的就绪任务全部开始运行时,第二类型的运行中任务数量达到第二类型的最大并发数,则不改变第三类型的最大并发数,继续执行下述步骤205。
205、调度服务器确定第三类型的运行中任务数量小于第三类型的最大并发数时,将第三类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至第三类型的运行中任务数量达到第三类型的最大并发数。
如果第三类型的最大并发数为55,则判断第三类型的运行中任务数量是否小于55,若是,则将第三类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至第三类型的运行中任务数量达到55,完成此次调整过程。
值得说明的是,任务类型不限制于三类,可以根据系统资源情况分类,并设置各任务类型的最大并发数,每种任务类型的任务可以在不超过各自的最大并发数的情况下并行运行,且当占用系统资源量较大的任务类型的就绪任务全部进入运行中状态时,该任务类型的运行中任务数量还未达到该任务类型的最大并发数,则将该任务类型的最大并发数中的剩余数量转换为占用系统资源量稍低的任务类型的转换并发数,使调度服务器可以运行更多占用系统资源量稍低的任务类型的就绪任务。
本发明实施例提供的任务调度的方法,调度服务器确定第一类型的运行中任务数量小于第一类型的最大并发数时,将第一类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至第一类型的运行中任务数量达到第一类型的最大并发数;当第一类型的就绪任务全部开始运行时,第一类型的运行中任务数量仍未达到第一类型的最大并发数,将第一类型的最大并发数中的剩余数量转换为第二类型的转换并发数,将第二类型的最大并发数更新为第二类型的原始最大并发数+第二类型的转换并发数;当第二类型的就绪任务全部开始运行时,第二类型的运行中任务数量仍未达到第二类型的最大并发数,将第二类型的最大并发数中的剩余数量转换为第三类型的转换并发数,将第三类型的最大并发数更新为第三类型的原始并发数+第三类型的转换并发数;调度服务器确定第三类型的运行中任务数量小于第三类型的最大并发数时,将第三类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至第三类型的运行中任务数量达到第三类型的最大并发数。与现有技术中并行运行任务时,当系统资源还有剩余时也不会改变预先设置的运行顺序,将运行时不超过系统剩余资源量的任务投入运行,使等待时间长从而导致任务调度的效率低相比,本发明实施例根据任务运行时所需占用的资源量对任务进行分类,为各类型任务设置最大并发数,各类型的任务并行运行,避免了为了优先保证系统资源占用量大的任务运行而导致对系统资源占用小的任务等待时间过长的现象,且当第一类型的就绪任务全部运行时,第一类型的运行中任务还未达到最大并发数时,将第一类型的最大并发数的剩余数量转换为第二类型的转换并发数,同理,当第二类型的最大并发数中存在剩余数量时,也会转换为第三类型的转换并发数,根据任务运行情况实时调整各任务类型的最大并发数,使系统资源得到充分的利用,使任务调度更加合理且减少了运行所有任务所需的时间,提高了任务调度的效率。
本发明实施例还提供一种任务调度的方法,如图3所示,上述步骤102中,调度服务器通过任务完成消息更新当前任务的任务状态以及与当前任务相关联的任务状态的具体实现方式为:
1021、调度服务器将当前任务的任务状态更新为完成状态。
1022、调度服务器从数据库中查找当前任务的后续任务。
其中,当前任务的后续任务为规定运行完当前任务之后运行的任务。
1023、当确定后续任务的前置任务都为完成状态时,将后续任务的任务状态更新为就绪状态,后续任务的前置任务为规定在运行后续任务之前需运行的任务。
值得说明的是,任务之间具有依赖关系,当前任务为后续任务的前置任务,该后续任务还存在其他的前置任务,当该后续任务的所有前置任务都运行完之后才可以运行该后续任务,所以在更新该后续任务的状态之前,需要判断该后续任务的所有前置任务是否全部为完成状态,若是,将该后续任务的状态更新为就绪状态,若否,则不更新该后续任务的状态。
举例说明,当前任务为T1,T1的后续任务为T2,T2的前置任务有T1、T3、T4、T5。运行T2需要用到运行完T1、T3、T4、T5后的输出数据,所以当T1运行完之后,调度服务器确定T1为T2的前置任务,进一步的判断是否T3、T4、T5是否也为完成状态,当确定T1、T3、T4、T5均为完成状态,代表运行T2所需的数据已全部准备好,则将T2的任务状态更新为就绪状态,否则T2仍为等待状态。
可以理解的是,运行完每个任务之后都需更新刚刚完成任务的任务状态以及该任务的后续任务的任务状态。
本发明实施例还提供一种任务调度的方法,如图4所示,在调度服务器通过消息总线接收运行平台发送的任务完成消息之前,该方法还包括:
401、调度服务器从数据库中获取调度任务信息,调度任务信息包括调度任务的任务标识、调度任务的运行平台以及调度任务的静态优先级。
其中,调度任务包括调度服务器需要运行的所有任务。
值得说明的是,调度服务器从数据库中获取调度任务信息之后,可以根据调度任务信息建立任务列表,如图5所示,任务列表中包括从数据库中获取的调度任务的任务标识、调度任务的运行平台,还包括可以通过计算得出的调度任务的前置任务、更新后的静态优先级、任务类型以及状态。图5中的任务列表仅为示意图,实际任务列表中不仅仅包括4个任务。
402、调度服务器通过查找调度任务间的数据关系,确定每个调度任务的前置任务。
其中,前置任务为根据任务之间的数据关系以及任务的触发类型确定的,任务的触发类型包括:事件触发、时间触发和关系触发。
事件触发是指当某类特定的时间发生时触发启动的任务,外部系统会给消息总线发送一个消息,消息总线将该消息发送给调度服务器,调度服务器根据消息中的任务标识,查找该任务并将该任务派发给运行平台运行。
时间触发是指规定任务在指定的时间点启动运行。
关系触发是指当运行平台运行完一个任务时,该运行平台通过消息总线向调度服务器发送任务完成消息,调度服务器根据任务完成消息更新任务状态之后,启动满足运行条件的后续任务,该运行条件为该后续任务的所有前置任务均为完成状态。
如果任务的触发类型为关系触发,则前置任务是根据任务的输入和输出来确定的,例如T1的输入为A,输出为B,T2的输入为B,输出为C,T2的输入为T1的输出,所以T2的前置任务为T1。
403、调度服务器更新每个调度任务的静态优先级。
值得说明的是,上述步骤401中调度服务器从数据库中获取的调度任务的静态优先级为初始值,在确定调度任务的前置任务后,还需更新任务的静态优先级,以使得任务调度更加合理。
进一步的,根据步骤402确定的每个调度任务的前置任务,可将所有的调度任务组成多个任务路径。调度服务器确定每个任务路径的指定优先级,然后将各任务路径上的每个调度任务的静态优先级与各自对应的指定优先级进行比较,当调度任务的静态优先级小于指定优先级时,将调度任务的静态优先级设置为指定优先级。
如图6所示,T1的前置任务为T2、T3,T2的前置任务为T4,T3的前置任务为T5,T1、T2、T4组成的路径为路径1,T1、T3、T5组成的路径为路径2,路径1的指定优先级为10,路径2的指定优先级为12,则从T1开始,将每个任务的静态优先级与各自对应的指定优先级进行对比,例如,T1的优先级3,将T1的静态优先级与路径1的指定优先级比较,T1的静态优先级3小于路径1的指定优先级10,所以将T1的静态优先级更新为10,由于T1还属于路径2,所以还要将T1的静态优先级与路径2的指定优先级进行比较,最终T1的静态优先级更新为12。
404、调度服务器确定每个调度任务的任务类型。
其中,任务类型包括第一类型、第二类型、第三类型。
调度服务器获取每个调度任务在预设时间段内的运行总时长以及运行次数,进而通过每个调度任务在预设时间段内的运行总时长以及运行次数,确定每个调度任务的平均每次运行时长,将平均每次运行时长大于等于第一预设时长的调度任务分为第一类型;将平均每次运行时长小于第一预设时长大于第二预设时长的调度任务分为第二类型;将平均每次运行时长小于等于第二预设时长的调度任务分为第三类型。
值得说明的是,一般第一预设时长可设置为30分钟,第二预设时长可设置为5分钟,即将平均每次运行时长大于等于30分钟的调度任务分为第一类型;将平均每次运行时长在5分钟至30分钟之间的调度任务分为第二类型;将平均每次运行时长小于等于5分钟的调度任务分为第三类型。
值得说明的是,当调度任务信息以列表的形式存储时,需将上述步骤402至步骤404确定的每个调度任务的前置任务、静态优先级以及任务类型更新在任务列表中,以便于调度服务器根据任务列表启动任务的运行。
可以理解的是,执行完上述步骤401至404之后,调度服务器即可开始进行任务调度,每运行完一个任务都要执行上述步骤101至105。
本发明实施例提供的任务调度的方法,调度服务器从数据库中获取调度任务的任务标识、运行平台以及静态优先级,然后确定每个调度任务的前置任务、静态优先级以及任务类型,将这些信息配置完成后,调度服务器即可根据这些信息调度任务运行,无需人工配置,提高了调度效率,且调度服务器是通过查找数据库中各任务之间的数据关系确定各任务之间的关联,与现有技术中根据调度人员的经验确定任务之间的关联相比准确性更高,使得任务调度更加合理。
本发明还提供一种任务调度的方法,如图7所示,图7中的调度服务器具有任务管理、任务资源评估、任务优先级评估、任务派发功能。
任务管理是指从数据库中获取任务列表以及任务的输入输出信息,其中,从数据库中获取的任务列表是指只包括调度任务的任务标识、运行平台以及静态优先级的任务列表。
任务资源评估与上述步骤404相对应,是指通过每个调度任务在预设时间段内的运行总时长以及运行次数,确定每个调度任务的平均每次运行时长,并通过每个调度任务的平均每次运行时长,对调度任务进行分类。
任务优先级评估为上述步骤403中确定每个调度任务的静态优先级的过程。
任务派发为根据当前的资源情况以及任务状态、任务类型等信息,将满足触发条件的任务派发给各个运行平台,任务的触发类型不同触发条件也不同,例如,对于时间触发的任务,当到达某一时间后,就会将触发时间为该时间的任务派发给运行平台。且运行平台每运行完一个消息都会向调度服务器发送当前任务的完成消息,之后图7中的调度服务器还用于实现上述步骤101至105的方法流程。
图7中的agent为运行平台,每个运行平台用于运行不同的任务,且运行平台可以将任务的资源信息通知给资源管理,以便于管理任务调度系统的资源,资源管理再将这些资源信息发送给消息总线,图7示出了4个运行平台:运行平台A、运行平台B、运行平台C、运行平台D,这四个运行平台用于运行各自对应的任务。
消息总线可汇总从多个模块传来的消息,根据消息实现各模块的协同工作,且消息总线实时存放了各任务运行的最新情况。
图7中还有其他系统与消息总线通信,例如接口平台、质量管理系统等。消息总线确定某个任务运行完成之后,会调用质量管理系统对该任务的输出信息进行质量检测。
图7中的运维监控能够实时监控任务的运行情况,并根据任务运行情况进行任务告警与错误反馈,运维人员可通过运维监控对任务进行启动、暂停或者取消,且运维人员可以通过运维监控调整任务的优先级。
结合上述图1至图7,本发明还提供一种无线调度的系统,如图8所示,该系统包括:运行平台81、消息总线82、调度服务器83。
运行平台81,用于通过消息总线82向调度服务器83发送当前任务的任务完成消息,任务完成消息用于指示当前任务对应的运行平台已完成当前任务。
值得说明的是,该系统中包括多个运行平台81,不同的运行平台81用于运行不同的任务。
消息总线82,用于接收当前任务对应的运行平台81发送的任务完成消息,并将任务完成消息发送给调度服务器83。
调度服务器83,用于通过消息总线接收当前任务对应的运行平台发送的任务完成消息,通过任务完成消息更新当前任务的任务状态以及当前任务的后续任务的任务状态,当前任务的后续任务为规定运行完当前任务之后运行的任务,其中,任务的任务状态包括等待状态、就绪状态、运行中状态和完成状态;从数据库中获取就绪任务,按照任务类型对就绪任务进行分组,并对每组中的就绪任务按静态优先级排序,任务类型为根据各任务平均每次运行时长划分的类型;获取每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,最大并发数为调度系统允许并行运行每种任务类型的任务的最大数量;通过每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,调整每种任务类型的最大并发数,将每种任务类型的就绪任务分别按照各组内就绪任务的排列顺序派发给各任务对应的运行平台81运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数。
运行平台81,还用于运行调度服务器83派发的各自对应的就绪任务。
本发明实施例提供的任务调度的系统,调度服务器通过消息总线接收当前任务对应的运行平台发送的任务完成消息,调度服务器通过任务完成消息更新当前任务的任务状态以及当前任务的后续任务的任务状态,之后调度服务器从数据库中获取就绪任务,按照任务类型对就绪任务进行分组,并对每组中的就绪任务按照静态优先级排序,然后获取每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,通过每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,调整每种任务类型的最大并发数,将每种任务类型的就绪任务按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数。与现有技术中任务调度系统还有剩余资源的情况下,由于要严格按照人工配置的顺序运行任务,使得任务调度系统的剩余资源不够运行即将运行的任务,等待时间过长而导致任务调度的效率低相比,本发明中每运行完一个任务后都会根据当前实际情况调整当前每种任务类型的最大并发数,并将各任务类型的就绪任务按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,而不是严格按照事先配置的运行顺序运行,使得每种任务类型的运行中任务数量达到各自任务类型的最大并发数,充分利用任务调度系统的资源运行任务,减少了运行全部调度任务所需的时间,提高了任务调度的效率。
值得说明的是,任务类型包括第一类型、第二类型、第三类型,其中,第一类型为平均每次运行时长大于等于第一预设时长的任务,第二类型为平均每次运行时长小于第一预设时长大于第二预设时长的任务,第三类型为平均每次运行时长小于等于第二预设时长的任务。
调度服务器83,用于确定第一类型的运行中任务数量小于第一类型的最大并发数时,将第一类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台81运行,直至第一类型的运行中任务数量达到第一类型的最大并发数;当第一类型的就绪任务全部开始运行时,第一类型的运行中任务数量仍未达到第一类型的最大并发数,将第一类型的最大并发数中的剩余数量转换为第二类型的转换并发数,将第二类型的最大并发数更新为第二类型的原始最大并发数+第二类型的转换并发数。
运行平台81,还用于运行调度服务器83派发的各自对应的第一类型的就绪任务。
调度服务器83,还用于确定第二类型的运行中任务数量小于第二类型的最大并发数时,将第二类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台81运行,直至第二类型的运行中任务数量达到第二类型的最大并发数;当第二类型的就绪任务全部开始运行时,第二类型的运行中任务数量仍未达到第二类型的最大并发数,将第二类型的最大并发数中的剩余数量转换为第三类型的转换并发数,将第三类型的最大并发数更新为第三类型的原始并发数+第三类型的转换并发数。
运行平台81,还用于运行调度服务器83派发的各自对应的第二类型的就绪任务;
调度服务器83,还用于确定第三类型的运行中任务数量小于第三类型的最大并发数时,将第三类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至第三类型的运行中任务数量达到第三类型的最大并发数。
运行平台81,还用于运行调度服务器83派发的各自对应的第三类型的就绪任务。
进一步的,调度服务器83,还用于将当前任务的任务状态更新为完成状态;从数据库中查找当前任务的后续任务;当确定后续任务的前置任务都为完成状态时,将后续任务的任务状态更新为就绪状态,后续任务的前置任务为规定在运行后续任务之前需运行的任务。
调度服务器83,还用于从数据库中获取调度任务信息,调度任务信息包括调度任务的任务标识、调度任务的运行平台以及调度任务的静态优先级,调度任务包括任务调度系统需要运行的所有任务;通过查找调度任务间的数据关系,确定每个调度任务的前置任务;更新每个调度任务的静态优先级;确定每个调度任务的任务类型。
调度服务器83,还用于确定每条任务路径的指定优先级,任务路径用于表示调度任务之间的关联以及运行顺序;将各任务路径上的每个调度任务的静态优先级与各自对应的指定优先级进行比较,当调度任务的静态优先级小于指定优先级时,将调度任务的静态优先级更新为指定优先级。
调度服务器83,还用于获取每个调度任务在预设时间段内的运行总时长以及运行次数;通过每个调度任务在预设时间段内的运行总时长以及运行次数,确定每个调度任务每次运行时长的平均值;通过每个调度任务每次运行时长的平均值,对调度任务进行分类;将平均每次运行时长大于等于第一预设时长的调度任务分为第一类型;将平均每次运行时长小于第一预设时长大于第二预设时长的调度任务分为第二类型;将平均每次运行时长小于等于第二预设时长的调度任务分为第三类型。
本发明实施例提供的任务调度的系统,调度服务器通过消息总线接收当前任务对应的运行平台发送的任务完成消息,调度服务器通过任务完成消息更新当前任务的任务状态以及当前任务的后续任务的任务状态,之后调度服务器从数据库中获取就绪任务,按照任务类型对就绪任务进行分组,并对每组中的就绪任务按照静态优先级排序,然后获取每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,通过每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,调整每种任务类型的最大并发数,将每种任务类型的就绪任务按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,直至每种任务类型的运行中任务数量达到各自任务类型的最大并发数。与现有技术中任务调度系统还有剩余资源的情况下,由于要严格按照人工配置的顺序运行任务,使得任务调度系统的剩余资源不够运行即将运行的任务,等待时间过长而导致任务调度的效率低相比,本发明中每运行完一个任务后都会根据当前实际情况调整当前每种任务类型的最大并发数,并将各任务类型的就绪任务按照各组内就绪任务的排列顺序派发给各任务对应的运行平台运行,而不是严格按照事先配置的运行顺序运行,使得每种任务类型的运行中任务数量达到各自任务类型的最大并发数,充分利用任务调度系统的资源运行任务,减少了运行全部调度任务所需的时间,提高了任务调度的效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种任务调度的方法,其特征在于,所述方法应用于任务调度系统中,所述任务调度系统包括调度服务器、消息总线、用于运行不同任务的多个运行平台,所述方法包括:
所述调度服务器通过所述消息总线接收当前任务对应的运行平台发送的任务完成消息,所述任务完成消息用于指示所述当前任务对应的运行平台已完成所述当前任务;
所述调度服务器通过所述任务完成消息更新所述当前任务的任务状态以及所述当前任务的后续任务的任务状态,所述当前任务的后续任务为规定运行完所述当前任务之后运行的任务,其中,任务的任务状态包括等待状态、就绪状态、运行中状态和完成状态;
所述调度服务器从数据库中获取就绪任务,按照任务类型对所述就绪任务进行分组,并对每组中的就绪任务按静态优先级排序,所述任务类型为根据各任务平均每次运行时长划分的类型,所述任务类型包括第一类型和第二类型,所述第一类型为平均每次运行时长大于等于第一预设时长的任务,所述第二类型为平均每次运行时长小于所述第一预设时长大于第二预设时长的任务;
所述调度服务器获取每种任务类型的最大并发数、每种任务类型的就绪任务数量,以及每种任务类型的运行中任务数量,所述最大并发数为所述任务调度系统允许并行运行每种任务类型的任务的最大数量;
所述调度服务器确定第一类型的运行中任务数量小于第一类型的最大并发数时,将第一类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第一类型的运行中任务数量达到所述第一类型的最大并发数;
当所述第一类型的就绪任务全部开始运行时,所述第一类型的运行中任务数量仍未达到所述第一类型的最大并发数,将所述第一类型的最大并发数中的剩余数量转换为第二类型的转换并发数,将第二类型的最大并发数更新为第二类型的原始最大并发数+所述第二类型的转换并发数;
所述调度服务器确定所述第二类型的运行中任务数量小于所述第二类型的最大并发数时,将第二类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第二类型的运行中任务数量达到所述第二类型的最大并发数。
2.根据权利要求1所述的任务调度的方法,其特征在于,所述任务类型还包括第三类型,所述第三类型为平均每次运行时长小于等于所述第二预设时长的任务,所述方法还包括:
当所述第二类型的就绪任务全部开始运行时,所述第二类型的运行中任务数量仍未达到所述第二类型的最大并发数,将所述第二类型的最大并发数中的剩余数量转换为第三类型的转换并发数,将第三类型的最大并发数更新为第三类型的原始最大并发数+所述第三类型的转换并发数;
所述调度服务器确定所述第三类型的运行中任务数量小于所述第三类型的最大并发数时,将第三类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第三类型的运行中任务数量达到所述第三类型的最大并发数。
3.根据权利要求2所述的任务调度的方法,其特征在于,所述调度服务器通过所述任务完成消息更新所述当前任务的任务状态以及当前任务的后续任务的任务状态,包括:
所述调度服务器将所述当前任务的任务状态更新为完成状态;
所述调度服务器从所述数据库中查找所述当前任务的后续任务;
当确定所述后续任务的前置任务都为完成状态时,将所述后续任务的任务状态更新为就绪状态,所述后续任务的前置任务为规定在运行所述后续任务之前需运行的任务。
4.根据权利要求3所述的任务调度的方法,其特征在于,在所述调度服务器通过消息总线接收运行平台发送的任务完成消息之前,所述方法还包括:
所述调度服务器从所述数据库中获取调度任务信息,所述调度任务信息包括调度任务的任务标识、所述调度任务的运行平台以及所述调度任务的静态优先级,所述调度任务包括所述任务调度系统需要运行的所有任务;
所述调度服务器通过查找所述调度任务间的数据关系,确定每个调度任务的前置任务;
所述调度服务器更新每个调度任务的静态优先级;
所述调度服务器确定每个调度任务的任务类型。
5.根据权利要求4所述的任务调度的方法,其特征在于,所述调度服务器更新每个调度任务的静态优先级,包括:
所述调度服务器确定每条任务路径的指定优先级,所述任务路径用于表示所述调度任务之间的关联以及运行顺序;
所述调度服务器将各任务路径上的每个调度任务的静态优先级与各自对应的指定优先级进行比较,当调度任务的静态优先级小于指定优先级时,将调度任务的静态优先级更新为指定优先级。
6.根据权利要求5所述的任务调度的方法,其特征在于,所述确定调度任务的任务类型,包括:
所述调度服务器获取每个调度任务在预设时间段内的运行总时长以及运行次数;
所述调度服务器通过每个调度任务在预设时间段内的运行总时长以及运行次数,确定每个调度任务的平均每次运行时长;
所述调度服务器将平均每次运行时长大于等于所述第一预设时长的调度任务分为第一类型;
所述调度服务器将平均每次运行时长小于所述第一预设时长大于所述第二预设时长的调度任务分为第二类型;
所述调度服务器将平均每次运行时长小于等于所述第二预设时长的调度任务分为第三类型。
7.一种任务调度系统,其特征在于,包括:
运行平台,用于通过消息总线向调度服务器发送当前任务的任务完成消息,所述任务完成消息用于指示所述当前任务对应的运行平台已完成所述当前任务;
所述消息总线,用于接收所述当前任务对应的运行平台发送的所述任务完成消息,并将所述任务完成消息发送给调度服务器;
所述调度服务器,用于通过所述消息总线接收当前任务对应的运行平台发送的任务完成消息,通过所述任务完成消息更新所述当前任务的任务状态以及所述当前任务的后续任务的任务状态,所述当前任务的后续任务为规定运行完所述当前任务之后运行的任务,其中,任务的任务状态包括等待状态、就绪状态、运行中状态和完成状态;从数据库中获取就绪任务,按照任务类型对所述就绪任务进行分组,并对每组中的就绪任务按静态优先级排序,所述任务类型为根据各任务平均每次运行时长划分的类型,所述任务类型包括第一类型和第二类型,所述第一类型为平均每次运行时长大于等于第一预设时长的任务,所述第二类型为平均每次运行时长小于所述第一预设时长大于第二预设时长的任务;
所述调度服务器,用于确定第一类型的运行中任务数量小于第一类型的最大并发数时,将第一类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第一类型的运行中任务数量达到所述第一类型的最大并发数;当所述第一类型的就绪任务全部开始运行时,所述第一类型的运行中任务数量仍未达到所述第一类型的最大并发数,将所述第一类型的最大并发数中的剩余数量转换为第二类型的转换并发数,将第二类型的最大并发数更新为第二类型的原始最大并发数+所述第二类型的转换并发数;
所述运行平台,还用于运行所述调度服务器派发的各自对应的第一类型的就绪任务;
所述调度服务器,还用于确定所述第二类型的运行中任务数量小于所述第二类型的最大并发数时,将第二类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第二类型的运行中任务数量达到所述第二类型的最大并发数。
8.根据权利要求7所述的任务调度系统,其特征在于,所述任务类型还包括第三类型,所述第三类型为平均每次运行时长小于等于所述第二预设时长的任务;
所述调度服务器,还用于当所述第二类型的就绪任务全部开始运行时,所述第二类型的运行中任务数量仍未达到所述第二类型的最大并发数,将所述第二类型的最大并发数中的剩余数量转换为第三类型的转换并发数,将第三类型的最大并发数更新为第三类型的原始最大并发数+所述第三类型的转换并发数;
所述运行平台,还用于运行所述调度服务器派发的各自对应的第二类型的就绪任务;
所述调度服务器,还用于确定所述第三类型的运行中任务数量小于所述第三类型的最大并发数时,将第三类型的就绪任务按照静态优先级从高到低的顺序派发给各自对应的运行平台运行,直至所述第三类型的运行中任务数量达到所述第三类型的最大并发数;
所述运行平台,还用于运行所述调度服务器派发的各自对应的第三类型的就绪任务。
9.根据权利要求8所述的任务调度系统,其特征在于,
所述调度服务器,还用于将所述当前任务的任务状态更新为完成状态;从所述数据库中查找所述当前任务的后续任务;当确定所述后续任务的前置任务都为完成状态时,将所述后续任务的任务状态更新为就绪状态,所述后续任务的前置任务为规定在运行所述后续任务之前需运行的任务。
10.根据权利要求9所述的任务调度系统,其特征在于,
所述调度服务器,还用于从所述数据库中获取调度任务信息,所述调度任务信息包括调度任务的任务标识、所述调度任务的运行平台以及所述调度任务的静态优先级,所述调度任务包括所述任务调度系统需要运行的所有任务;通过查找所述调度任务间的数据关系,确定每个调度任务的前置任务;更新每个调度任务的静态优先级;确定每个调度任务的任务类型。
11.根据权利要求10所述的任务调度系统,其特征在于,
所述调度服务器,还用于确定每条任务路径的指定优先级,所述任务路径用于表示所述调度任务之间的关联以及运行顺序;将各任务路径上的每个调度任务的静态优先级与各自对应的指定优先级进行比较,当调度任务的静态优先级小于指定优先级时,将调度任务的静态优先级更新为指定优先级。
12.根据权利要求11所述的任务调度系统,其特征在于,
所述调度服务器,还用于获取每个调度任务在预设时间段内的运行总时长以及运行次数;通过每个调度任务在预设时间段内的运行总时长以及运行次数,确定每个调度任务每次运行时长的平均值;通过每个调度任务每次运行时长的平均值,对调度任务进行分类;将平均每次运行时长大于等于所述第一预设时长的调度任务分为第一类型;将平均每次运行时长小于所述第一预设时长大于所述第二预设时长的调度任务分为第二类型;将平均每次运行时长小于等于所述第二预设时长的调度任务分为第三类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510080579.1A CN104657212B (zh) | 2015-02-13 | 2015-02-13 | 一种任务调度的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510080579.1A CN104657212B (zh) | 2015-02-13 | 2015-02-13 | 一种任务调度的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657212A CN104657212A (zh) | 2015-05-27 |
CN104657212B true CN104657212B (zh) | 2018-02-16 |
Family
ID=53248385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510080579.1A Active CN104657212B (zh) | 2015-02-13 | 2015-02-13 | 一种任务调度的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104657212B (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708481B (zh) * | 2015-07-30 | 2021-06-29 | 北京京东尚科信息技术有限公司 | 一种控制任务执行的方法 |
CN105893122A (zh) * | 2015-08-25 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 数据处理作业调度方法、装置及系统 |
CN106557471A (zh) * | 2015-09-24 | 2017-04-05 | 上海汽车集团股份有限公司 | 任务调度方法及装置 |
CN105389207A (zh) * | 2015-11-06 | 2016-03-09 | 成都视达科信息技术有限公司 | 自适应数据请求处理方法、装置、任务调度器及系统 |
CN105320561B (zh) | 2015-11-09 | 2019-03-08 | 深圳市万普拉斯科技有限公司 | 任务管理方法和系统 |
CN105608531A (zh) * | 2015-12-18 | 2016-05-25 | 北京奇虎科技有限公司 | 一种任务调度的方法及装置 |
CN105786600B (zh) * | 2016-02-02 | 2019-05-03 | 北京京东尚科信息技术有限公司 | 任务调度方法和装置 |
CN107179896A (zh) * | 2016-03-09 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 任务处理方法和装置 |
CN108073580A (zh) * | 2016-11-08 | 2018-05-25 | 北京国双科技有限公司 | 一种基于页面并发请求的处理方法及装置 |
CN108229767B (zh) * | 2016-12-09 | 2022-06-28 | 阿里巴巴集团控股有限公司 | 一种拣货任务分配方法、装置及系统 |
CN107423918A (zh) * | 2017-08-16 | 2017-12-01 | 广州环球梦电子商务股份有限公司 | 一种借卖平台商品任务调度方法和系统 |
CN109582396B (zh) * | 2017-09-25 | 2022-02-18 | 北京国双科技有限公司 | 一种任务状态处理方法、装置、系统及存储介质 |
CN107908483B (zh) * | 2017-10-16 | 2020-06-16 | 福建天泉教育科技有限公司 | 一种消息管理方法及终端 |
CN107885589B (zh) * | 2017-11-22 | 2021-02-12 | 贝壳找房(北京)科技有限公司 | 一种作业调度方法及装置 |
CN107832134B (zh) * | 2017-11-24 | 2021-07-20 | 平安科技(深圳)有限公司 | 多任务处理方法、应用服务器及存储介质 |
CN108172268A (zh) * | 2017-12-27 | 2018-06-15 | 苏州麦迪斯顿医疗科技股份有限公司 | 一种批量数据处理方法、装置、终端和存储介质 |
CN108255595A (zh) * | 2018-01-16 | 2018-07-06 | 北京中关村科金技术有限公司 | 一种数据任务的调度方法、装置、设备及可读存储介质 |
CN108388230B (zh) * | 2018-02-11 | 2020-08-07 | 北京车和家信息技术有限公司 | 任务调度方法、任务调度系统、车辆电子控制单元及车辆 |
CN108804035A (zh) * | 2018-05-22 | 2018-11-13 | 深圳忆联信息系统有限公司 | 降低io延时的方法、装置、计算机设备及存储介质 |
CN109523184A (zh) * | 2018-11-28 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种资源调度的方法及装置 |
CN109858782A (zh) * | 2019-01-14 | 2019-06-07 | 北京三快在线科技有限公司 | 服务任务的调度方法、装置及电子设备 |
CN110336859B (zh) * | 2019-06-06 | 2020-04-07 | 广州市玄武无线科技股份有限公司 | 一种多租户环境下的任务调度系统 |
CN112231073A (zh) * | 2019-07-15 | 2021-01-15 | 上海哔哩哔哩科技有限公司 | 一种分布式任务调度方法及其装置 |
CN110704173A (zh) * | 2019-09-29 | 2020-01-17 | 深圳前海环融联易信息科技服务有限公司 | 任务调度方法、调度系统、电子设备及计算机存储介质 |
CN111104223B (zh) * | 2019-12-17 | 2023-06-09 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、计算机可读存储介质和计算机设备 |
CN113014612B (zh) * | 2019-12-20 | 2022-11-29 | 中国移动通信集团安徽有限公司 | 数据传送系统及方法 |
CN113127158B (zh) * | 2019-12-30 | 2023-07-14 | 百度在线网络技术(北京)有限公司 | 用于执行数据处理任务的方法及装置 |
CN111832894B (zh) * | 2020-06-08 | 2024-06-18 | 上海汽车集团股份有限公司 | 车辆调度方式生成方法、装置及计算机存储介质 |
CN112286664B (zh) * | 2020-10-30 | 2024-05-28 | 中国平安财产保险股份有限公司 | 任务调度方法、装置、计算机设备及可读存储介质 |
CN112001822B (zh) * | 2020-11-02 | 2021-02-02 | 点击律(上海)网络科技有限公司 | 一种应用于知识产权民事诉讼案件的证据智能调配方法 |
CN113553187B (zh) * | 2021-07-30 | 2024-07-16 | 咪咕文化科技有限公司 | devops并发构建方法、装置及计算设备 |
CN113886034A (zh) * | 2021-09-09 | 2022-01-04 | 深圳奥哲网络科技有限公司 | 任务调度方法、系统、电子设备及存储介质 |
CN113806049A (zh) * | 2021-09-17 | 2021-12-17 | 金蝶软件(中国)有限公司 | 任务排队方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996821B1 (en) * | 1999-03-25 | 2006-02-07 | International Business Machines Corporation | Data processing systems and method for batching tasks of the same type in an instruction cache |
CN101227500A (zh) * | 2008-02-21 | 2008-07-23 | 上海交通大学 | 基于光网格的任务调度方法 |
CN103279385A (zh) * | 2013-06-01 | 2013-09-04 | 北京华胜天成科技股份有限公司 | 一种云计算环境中集群任务调度方法及系统 |
CN103902379A (zh) * | 2012-12-25 | 2014-07-02 | 中国移动通信集团公司 | 一种任务调度方法、装置及服务器集群 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200407735A (en) * | 2002-11-08 | 2004-05-16 | Hon Hai Prec Ind Co Ltd | System and method for controlling task assignment and work schedule of projects |
US8893130B2 (en) * | 2007-03-26 | 2014-11-18 | Raytheon Company | Task scheduling method and system |
-
2015
- 2015-02-13 CN CN201510080579.1A patent/CN104657212B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996821B1 (en) * | 1999-03-25 | 2006-02-07 | International Business Machines Corporation | Data processing systems and method for batching tasks of the same type in an instruction cache |
CN101227500A (zh) * | 2008-02-21 | 2008-07-23 | 上海交通大学 | 基于光网格的任务调度方法 |
CN103902379A (zh) * | 2012-12-25 | 2014-07-02 | 中国移动通信集团公司 | 一种任务调度方法、装置及服务器集群 |
CN103279385A (zh) * | 2013-06-01 | 2013-09-04 | 北京华胜天成科技股份有限公司 | 一种云计算环境中集群任务调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104657212A (zh) | 2015-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104657212B (zh) | 一种任务调度的方法及系统 | |
CN108632365B (zh) | 服务资源调整方法、相关装置和设备 | |
CN109783214B (zh) | 任务调度控制系统 | |
CN102063336B (zh) | 一种分布式计算多应用功能异步并发调度方法 | |
CN106227596A (zh) | 用于任务调度服务器的任务监控方法和装置 | |
CN107016449B (zh) | 一种基于跨企业动态计划排程的智能制造方法 | |
CN103516690A (zh) | 一种业务处理状态信息查询方法及装置 | |
CN113051019A (zh) | 流程任务执行管控方法、装置以及设备 | |
CN106845678A (zh) | 一种电力通信备件资源全网一体化动态调配方法及装置 | |
CN104615486B (zh) | 用于搜索推广平台的多任务调度和执行方法、装置和系统 | |
CN107205248B (zh) | 一种资源分配方法及系统 | |
CN111338770A (zh) | 一种任务调度的方法、服务器和计算机可读存储介质 | |
CN111160873A (zh) | 基于分布式架构的跑批处理装置及方法 | |
CN108121599A (zh) | 一种资源管理方法、装置及系统 | |
CN116777182B (zh) | 半导体晶圆制造执行任务派工方法 | |
CN112817748A (zh) | 一种基于安卓虚拟机处理任务的方法、计算机设备 | |
CN104158860B (zh) | 一种作业调度方法及作业调度系统 | |
CN115658311A (zh) | 一种资源的调度方法、装置、设备和介质 | |
CN110287006A (zh) | 一种数据调度方法及系统 | |
CN114490371A (zh) | 基于人工智能的数据测试方法、装置、测试设备及介质 | |
CN102662655A (zh) | 版本的构建系统及方法 | |
CN111209333B (zh) | 数据更新方法、装置、终端及存储介质 | |
CN111950859B (zh) | 航空通信数据链动态适配方法、装置和存储介质 | |
CN111222810A (zh) | 一种实时分配格口的方法和装置 | |
CN110519317A (zh) | 一种数据传输方法以及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |