一种任务调度方法和装置、任务执行系统与流程

文档序号:26939713发布日期:2021-10-12 15:03阅读:83来源:国知局
一种任务调度方法和装置、任务执行系统与流程

1.本发明涉及计算机技术领域,尤其涉及一种任务调度方法和装置、任务执行系统。


背景技术:

2.现有的任务调度和执行只能满足单一的执行顺序和执行规则,这样基于一定场景下和规模而设计的任务调度平台,并不能灵活动态的保障和应对电商行业多变的业务场景需求。现有任务分配多采用静态任务分配方法,任务只能固定在某台机器上执行,可能会导致某些机器计算任务繁重,而有些机器一直空闲,硬件资源得不到合理利用。因为每个机器的执行性能和执行效率不一样,对于任务而言,每个任务的执行的计算复杂度不一样,导致执行时间的千差万别。这种静态任务分配方法做不到合理的分配,可能还会导致某些任务不能按时执行完成。
3.在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
4.只能满足单一的执行顺序和执行规则,任务只能固定在某台机器上执行,无法实现负载均衡,硬件资源得不到合理利用,无法实现任务总体执行时长最优,降低了处理效率,新增业务场景的任务接入成本高,并会对原有任务执行效率造成影响,无法动态适应业务场景多变需求。


技术实现要素:

5.有鉴于此,本发明实施例提供一种任务调度方法和装置、任务执行系统,能够灵活且合理地确定任务执行顺序和执行规则,对待执行任务进行非抢占式控制,可以根据硬件资源的忙碌和空闲状况调度任务,更好地做到负载均衡,保证硬件资源的合理利用,最优化任务总体执行时长,提高处理效率,新增业务场景的任务只需要进行一些普通的初始化工作即可,接入成本低,且对原有任务执行效率的影响小,动态适应业务场景多变需求。
6.为实现上述目的,根据本发明实施例的一个方面,提供了一种任务调度方法。
7.一种任务调度方法,包括:将不同业务线的同一子流程的任务分配到同一任务执行器,所述业务线配置有业务线权重;根据所述任务的优先级相对权重比、所述任务在其子流程中最近n次历史执行记录的最大执行时长、所述任务在其任务执行器中的预测执行时长、预设的第一调和因子,计算所述任务在其任务执行器中的动态优先级,n为正整数,所述任务的优先级相对权重比根据配置的各所述业务线权重计算得到;按照所述动态优先级调度每一所述任务执行器中的任务。
8.可选地,根据所述任务在其子流程的平均执行时长、所述任务本次执行的数据量、所述任务在其子流程中最近n次历史执行记录的平均数据量,计算所述任务在其任务执行器中的预测执行时长。
9.可选地,通过如下方式计算所述任务在其任务执行器中的预测执行时长:根据所述任务在其子流程的平均执行时长与所述任务在其子流程中最近n次历史执行记录的平均数据量的商,得到所述任务的单位数据量的平均时长;根据所述任务的单位数据量的平均
时长与所述任务本次执行的数据量的乘积,得到所述任务在其任务执行器中的预测执行时长。
10.可选地,通过如下方式计算所述任务在其子流程的平均执行时长:根据所述任务在其子流程中,最近n次历史执行记录的各次执行时长和各次影响权重,计算加权平均值,作为所述任务在其子流程的平均执行时长。
11.可选地,对于所述每次历史执行记录,根据当次历史执行记录的数据量大小、所述最近n次历史执行记录的平均数据量、所述当次历史执行记录开始时间距离当前的间隔天数、预设的第二调和因子,计算所述当次历史执行记录的影响权重。
12.可选地,所述任务的优先级相对权重比等于第一业务线权重与配置的各所述业务线权重的总和的比值,所述第一业务线权重为所述任务所属业务线的业务线权重。
13.可选地,所述预设的第一调和因子的取值大于0且小于1;通过如下方式计算所述任务在其任务执行器中的动态优先级:计算所述任务在其子流程中最近n次历史执行记录的最大执行时长与所述任务在其任务执行器中的预测执行时长的第一差值,将所述第一差值与所述任务在其子流程中最近n次历史执行记录的最大执行时长的比值,作为所述任务的预计空闲时间占比;以所述预设的第一调和因子作为所述任务的优先级相对权重比的加权系数,以1与所述预设的第一调和因子的第二差值作为所述任务的预计空闲时间占比的加权系数,计算所述任务的优先级相对权重比与所述任务的预计空闲时间占比的加权和,作为所述任务在其任务执行器中的动态优先级。
14.可选地,所述按照所述动态优先级调度每一所述任务执行器中的任务,包括:对于每一所述任务执行器,按照其中任务的所述动态优先级生成任务队列,并依序确定所述任务队列中每一任务对应的分组,所述分组与所述任务执行器中的计算机一一对应,按照所述分组将所述任务队列中的任务调度到相应的所述计算机以便执行,其中,在确定所述任务队列中的每一任务对应的分组时,统计各分组当前已有任务的所述预测执行时长的总和,并将该任务分到所述预测执行时长的总和最小的一个分组中。
15.根据本发明实施例的另一方面,提供了一种任务调度装置。
16.一种任务调度装置,包括:任务分配模块,用于将不同业务线的同一子流程的任务分配到同一任务执行器,所述业务线配置有业务线权重;动态优先级计算模块,用于根据所述任务的优先级相对权重比、所述任务在其子流程中最近n次历史执行记录的最大执行时长、所述任务在其任务执行器中的预测执行时长、预设的第一调和因子,计算所述任务在其任务执行器中的动态优先级,n为正整数,所述任务的优先级相对权重比根据配置的各所述业务线权重计算得到;任务调度模块,用于按照所述动态优先级调度每一所述任务执行器中的任务。
17.可选地,还包括预测执行时长计算模块,用于:根据所述任务在其子流程的平均执行时长、所述任务本次执行的数据量、所述任务在其子流程中最近n次历史执行记录的平均数据量,计算所述任务在其任务执行器中的预测执行时长。
18.可选地,所述预测执行时长计算模块还用于:根据所述任务在其子流程的平均执行时长与所述任务在其子流程中最近n次历史执行记录的平均数据量的商,得到所述任务的单位数据量的平均时长;根据所述任务的单位数据量的平均时长与所述任务本次执行的数据量的乘积,得到所述任务在其任务执行器中的预测执行时长。
19.可选地,还包括平均执行时长计算模块,用于:根据所述任务在其子流程中,最近n次历史执行记录的各次执行时长和各次影响权重,计算加权平均值,作为所述任务在其子流程的平均执行时长。
20.可选地,还包括影响权重计算模块,用于:对于所述每次历史执行记录,根据当次历史执行记录的数据量大小、所述最近n次历史执行记录的平均数据量、所述当次历史执行记录开始时间距离当前的间隔天数、预设的第二调和因子,计算所述当次历史执行记录的影响权重。
21.可选地,还包括优先级相对权重比计算模块,用于根据第一业务线权重与配置的各所述业务线权重的总和的比值,得到所述任务的优先级相对权重比,所述第一业务线权重为所述任务所属业务线的业务线权重。
22.可选地,所述预设的第一调和因子的取值大于0且小于1;动态优先级计算模块还用于通过如下方式计算所述任务在其任务执行器中的动态优先级:计算所述任务在其子流程中最近n次历史执行记录的最大执行时长与所述任务在其任务执行器中的预测执行时长的第一差值,将所述第一差值与所述任务在其子流程中最近n次历史执行记录的最大执行时长的比值,作为所述任务的预计空闲时间占比;以所述预设的第一调和因子作为所述任务的优先级相对权重比的加权系数,以1与所述预设的第一调和因子的第二差值作为所述任务的预计空闲时间占比的加权系数,计算所述任务的优先级相对权重比与所述任务的预计空闲时间占比的加权和,作为所述任务在其任务执行器中的动态优先级。
23.可选地,所述任务调度模块还用于:对于每一所述任务执行器,按照其中任务的所述动态优先级生成任务队列,并依序确定所述任务队列中每一任务对应的分组,所述分组与所述任务执行器中的计算机一一对应,按照所述分组将所述任务队列中的任务调度到相应的所述计算机以便执行,其中,在确定所述任务队列中的每一任务对应的分组时,统计各分组当前已有任务的所述预测执行时长的总和,并将该任务分到所述预测执行时长的总和最小的一个分组中。
24.根据本发明实施例的又一方面,提供了一种任务执行系统。
25.一种任务执行系统,包括:任务调度中心处理器以及一个或多个任务执行器,其中:所述任务调度中心处理器,用于将不同业务线的同一子流程的任务分配到同一任务执行器,所述业务线配置有业务线权重;根据所述任务的优先级相对权重比、所述任务在其子流程中最近n次历史执行记录的最大执行时长、所述任务在其任务执行器中的预测执行时长、预设的第一调和因子,计算所述任务在其任务执行器中的动态优先级,n为正整数,所述任务的优先级相对权重比根据配置的各所述业务线权重计算得到;按照所述动态优先级调度每一所述任务执行器中的任务;所述任务执行器用于:执行所述任务调度中心处理器调度的任务。
26.根据本发明实施例的又一方面,提供了一种电子设备。
27.一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明实施例所提供的任务调度方法。
28.根据本发明实施例的又一方面,提供了一种计算机可读介质。
29.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本
发明实施例所提供的任务调度方法。
30.上述发明中的一个实施例具有如下优点或有益效果:将不同业务线的同一子流程的任务分配到同一任务执行器,根据任务的优先级相对权重比、任务在其子流程中最近n次历史执行记录的最大执行时长、任务在其任务执行器中的预测执行时长、预设的第一调和因子,计算任务在其任务执行器中的动态优先级,对于每一任务执行器,按照其中任务的动态优先级生成任务队列并依序确定任务对应的分组,在确定任务对应的分组时,将任务分到预测执行时长的总和最小的一个分组,以由该分组对应的计算机执行。能够灵活且合理地确定任务执行顺序和执行规则,对待执行任务进行非抢占式控制,可以根据硬件资源的忙碌和空闲状况调度任务,更好地做到负载均衡,保证硬件资源的合理利用,最优化任务总体执行时长,提高处理效率,新增业务场景的任务只需要进行一些普通的初始化工作即可,接入成本低,且对原有任务执行效率的影响小,动态适应业务场景多变需求。
31.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
32.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
33.图1是根据本发明一个实施例的任务调度方法的主要步骤示意图;
34.图2是根据本发明一个实施例的任务执行原理示意图;
35.图3是根据本发明一个实施例的任务执行记录表的结构示意图;
36.图4(a)和图4(b)是根据本发明一个实施例的任务的历史执行记录示意图;
37.图5是根据本发明一个实施例的业务线配置表的示意图;
38.图6是根据本发明一个实施例的任务调度的应用示意图;
39.图7是根据本发明一个实施例的任务调度装置的主要模块示意图;
40.图8是本发明实施例可以应用于其中的示例性系统架构图;
41.图9是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
42.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
43.图1是根据本发明一个实施例的任务调度方法的主要步骤示意图。
44.如图1所示,本发明一个实施例的任务调度方法主要包括如下的步骤s101至步骤s103。
45.步骤s101:将不同业务线的同一子流程的任务分配到同一任务执行器,业务线配置有业务线权重。
46.步骤s102:根据任务的优先级相对权重比、任务在其子流程中最近n次历史执行记录的最大执行时长、任务在其任务执行器中的预测执行时长、预设的第一调和因子,计算任
务在其任务执行器中的动态优先级,任务的优先级相对权重比根据配置的各业务线权重计算得到;n为正整数。
47.步骤s103:按照动态优先级调度每一任务执行器中的任务。
48.业务线可以有多个子流程,多个子流程的任务分配到不同的任务执行器执行,不同业务线的同一子流程的任务分配到同一任务执行器,即,一个任务执行器中的任务是不同业务线的某个子流程的任务,一个任务执行器中的任务数量和业务线的数量相同。一个任务执行器中有多个计算机用于并发执行任务。计算机可以是物理机或虚拟机。
49.可以根据任务在其子流程的平均执行时长、任务本次执行的数据量、任务在其子流程中最近n次历史执行记录的平均数据量,计算任务在其任务执行器中的预测执行时长。
50.具体可以通过如下方式计算任务在其任务执行器中的预测执行时长:根据任务在其子流程的平均执行时长与任务在其子流程中最近n次历史执行记录的平均数据量的商,得到任务的单位数据量的平均时长;根据任务的单位数据量的平均时长与任务本次执行的数据量的乘积,得到任务在其任务执行器中的预测执行时长。
51.可以通过如下方式计算任务在其子流程的平均执行时长:根据任务在其子流程中,最近n次历史执行记录的各次执行时长和各次影响权重,计算加权平均值,作为任务在其子流程的平均执行时长。
52.对于每次历史执行记录,根据当次历史执行记录的数据量大小、最近n次历史执行记录的平均数据量、当次历史执行记录开始时间距离当前的间隔天数、预设的第二调和因子,计算当次历史执行记录的影响权重。
53.预设的第二调和因子的取值范围在(0,1)区间。计算当次历史执行记录的影响权重的具体方法将在下文详细介绍。
54.任务的优先级相对权重比等于第一业务线权重与配置的各业务线权重的总和的比值,其中,第一业务线权重为任务所属业务线的业务线权重。
55.预设的第一调和因子的取值大于0且小于1。
56.具体可以通过如下方式计算任务在其任务执行器中的动态优先级:计算任务在其子流程中最近n次历史执行记录的最大执行时长与任务在其任务执行器中的预测执行时长的第一差值,将该第一差值与任务在其子流程中最近n次历史执行记录的最大执行时长的比值,作为任务的预计空闲时间占比;以预设的第一调和因子作为任务的优先级相对权重比的加权系数,以1与预设的第一调和因子的第二差值作为任务的预计空闲时间占比的加权系数,计算任务的优先级相对权重比与任务的预计空闲时间占比的加权和,作为任务在其任务执行器中的动态优先级。
57.在一个实施例中,按照动态优先级调度每一任务执行器中的任务,包括:对于每一任务执行器,按照其中任务的动态优先级生成任务队列,并按照任务队列依序调度任务到该任务执行器的各计算机。
58.在另一个实施例中,按照动态优先级调度每一任务执行器中的任务,包括:对于每一任务执行器,按照其中任务的动态优先级生成任务队列,并依序确定任务队列中每一任务对应的分组,分组与任务执行器中的计算机一一对应,按照分组将任务队列中的任务调度到相应的计算机以便执行,其中,在确定任务队列中的每一任务对应的分组时,统计各分组当前已有任务的预测执行时长的总和,并将该任务分到预测执行时长的总和最小的一个
分组中。例如,假设有两台机器(即计算机):机器1、机器2,三个任务a、b、c,任务a执行30分钟,任务b执行20分钟,任务c执行10分钟,假设任务队列中各任务顺序为a、b、c,那么根据本发明实施例,将任务a分配在机器1,任务b分配在机器2,任务c也分配到机器2,两个机器任务从整体上统计任务执行耗时30分钟,从而实现根据硬件资源的忙碌和空闲状况调度任务,更好地做到负载均衡,保证硬件资源的合理利用,最优化任务总体执行时长,提高处理效率。
59.图2是根据本发明一个实施例的任务执行原理示意图。
60.如图2所示,本发明一个实施例设有任务调度中心处理器(简称任务调度中心),记作job_datacenter,以及若干多个任务执行器,记作:multi_job_performer
i
|i=1,2,......,n,其中n为子流程个数,每个子流程与一个任务执行器一一对应,每一任务执行器中有多个计算机(即图2中的物理机)并发执行任务,第i个任务执行器中并发执行的任务记作:multi_job_performer
i-sub_job
j
|j=1,2,......,m,其中m为第i个任务执行器中并发的线程数。任务调度中心对每个任务执行器维护了一个任务队列,第i个任务执行器的任务队列中的任务k记作:
61.multi_job_performer
i-task
k
|k=1,2,......,p,其中p为第i个任务执行器中任务数目。每个任务执行器的任务队列中的任务数目都应该一致,且都等于接入的业务线数目。
62.以电商场景为例,假设有多条业务线,每条业务线都需要执行自己业务场景下的用户和商品信息的计算任务。每条业务线有多个子流程,各子流程的任务类型不同,同一任务执行器中的任务是来自不同业务线的同一子流程的任务。例如,某业务线a的两个子流程的任务分别为销售数据计算任务、促销数据计算任务,对于该两个子流程的任务,如果当前有对应的任务执行器,即,当前已经有两个任务执行器分别用于执行各业务线的销售数据计算任务、促销数据计算任务,则该业务线a的销售数据计算任务、促销数据计算任务分别由对应的任务执行器执行。如果其中某个子流程的任务当前没有对应的任务执行器,则将该任务分配到空闲任务执行器(未执行任何子流程的任务的任务执行器)执行。
63.本发明实施例对于新增业务场景的任务,例如新增一条业务线的任务,只需要进行一些普通的初始化工作即可,接入成本低,且对原有任务执行效率的影响小,动态适应业务场景多变需求。
64.本发明实施例对于每个任务执行器i中的任务k:
65.multi_job_performer
i-task
k
|k=1,2,......,p,p为第i个任务执行器中任务数目,计算以下五元组信息:
66.multi_job_performer
i-task
k
[0067][0068]
五元组信息中:
[0069]
avg_time
ik
表示任务k在其子流程i(由于子流程与任务执行器一一对应,因此任务执行器i对应子流程i)的平均执行时长。该值可以利用任务k的执行记录表计算得到,具体计算方法将在下文详细介绍。
[0070]
表示任务k的优先级相对权重比,根据在业务线配置表中配置的各业务线
权重weight
i
(i∈[1,p])计算得到,p为第i个任务执行器中任务数目,由于一个任务执行器的任务是不同业务线的任务,因此一个任务执行器的任务数目也代表了其业务线数目,每个业务线配置有各自的业务线权重,因此p也表示配置的业务线权重的数目。
[0071]
data_size
k
表示任务k本次执行的数据量。该值在以下两种情况下会发生变更:一是第一次执行第一个任务执行器时;二是手动配置时。通常情况下,上述两种情况只会发生在第一个任务执行器子流程中,所以,第一个任务执行器中的子流程任务会在计算完成后将数据量大小和执行开始时间等信息写入到任务执行记录表中,在后续子流程中,或未发生配置变更时的第一个子流程中,都取自上一级子流程或者上次执行的末次子流程的数据量大小,不用再重复计算。例如,以某一业务线有两个子流程为例,在第一次执行第一个任务执行器时配置该任务执行器中任务的数据量,第二个任务执行器执行的是第一个任务执行器的子流程的下一级子流程的任务,在未进行手动配置数据量的情况下,数据量取自第一个任务执行器中子流程的任务的数据量。第二次执行第一个任务执行器中任务时,在未进行手动配置数据量的情况下,数据量取自上次执行的末次子流程的数据量大小,即第一次执行的第二个任务执行器中任务的数据量。如果手动修改了业务线配置表中的数据量配置,则取自手动配置的数据量。
[0072]
任务执行记录表在任务完成后记录下该任务的执行时长,为后续的动态优先级计算提供参考,图3为根据本发明一个实施例的任务执行记录表的结构示意图,其中记录了任务开始时间(work_start_tm)、任务结束时间(work_end_tm)、每次执行时任务的数据量data_size等,任务执行记录表还包括任务在其子流程中各次历史执行记录的执行时长work_cal_sec(图3未示出)。
[0073]
dyn_priority
ik
表示任务k在其任务执行器i中的动态优先级。
[0074]
forecast_time
ik
表示任务k在其任务执行器i中的预测执行时长。
[0075]
本发明实施例提出一种多任务并发执行的动态优先级算法,通过本发明实施例的动态优先级算法计算上述的avg_time
ik
、data_size
k
、forecast_time
ik
,并基于计算出的上述四项计算出任务k在其任务执行器i中的动态优先级dyn_priority
ik
,以按照动态优先级调度每一任务执行器中的任务,从而在任务执行器中执行任务。下面详细介绍本发明实施例的动态优先级算法。
[0076]
avg_time
ik
表示任务k在其子流程i的平均执行时长,由于本发明实施例任务调度是非抢占式的,所以任务k在其子流程i的执行时长只会和计算难度、计算资源和计算的数据量有关。由于本发明实施例任务的动态优先级比较只会存在同一个子流程中,同一个子流程中的所有业务线的任务计算难度都是一致,假设任务所在集群的计算资源每次任务执行时都保持不变,那么任务k在其子流程中的当前执行时长只与任务k本次执行的数据量data_size
k
有关。
[0077]
定义w_his
i
为任务在其子流程的最近n次历史执行记录中第i次历史执行记录的影响权重。由于越久远的执行记录越没有参考价值。w_his
i
的计算与数据量有关,但并不是数据量越大越具有参考价值,而是越靠近平均数据量的历史数据越有参考价值,w_his
i
计算公式可以表示为如下形式:
[0078][0079]
其中,i为对该最近n次历史执行记录排序的序号,i取值在[1,n]区间。data_size
i
为最近n次历史执行记录中第i次历史执行记录的数据量大小,为最近n次历史执行记录的平均数据量,dis_days
i
是最近n次历史执行记录中第i次历史执行记录开始时间距离当前的间隔天数,β为调和因子(即第二调和因子)。以n=10为例,即w_his
i
|i=1,2,......,10,
[0080]
假设任务在其子流程一共有u次历史执行记录,且历史执行记录是按照时间顺序排列的,则取最近10次历史执行记录即:取历史执行记录序号在r∈[u-9,u]这个区间内的10次历史执行记录。那么将w_his
i
中的i按照历史执行记录序号r表示,上式也可以表示为如下形式:
[0081][0082]
其中,w_his
r
为任务在其子流程的所有历史执行记录中的第r次历史执行记录的影响权重;data_size
r
为该第r次历史执行记录的数据量大小,即任务在其子流程中的第r次执行时的数据量,当没有数据量时该值=0;为第u-9次至第u次总计10次历史执行记录的平均数据量;dis_days
r
为该第r次历史执行记录开始时间距离当前的间隔天数;β与上式含义相同。
[0083]
β作为调和因子,0<β<1,用于调和数据量大小和历史执行记录距离当天天数对权重的影响,本发明实施例设置β=0.8,即数据量的偏移对权重影响更大,偏移越大(数据量的偏移是指本次任务数据量大小与本任务最近10次的数据量大小平均值的差距),权重应该越小,这条执行记录对总体的平均执行时长的计算影响更小。
[0084]
根据任务在其子流程中最近n次历史执行记录的各次执行时长,最近n次历史执行记录中各次历史执行记录的影响权重,计算出一个加权平均值,作为任务在其子流程的平均执行时长。例如,设置n=10,任务k在其子流程i的平均执行时长avg_time
ik
可以通过下式计算:
[0085][0086]
即根据任务k的最近10次执行历史执行记录的影响权重以及执行时长,计算得到的加权平均值,来作为任务k在子流程i的平均执行时长,其中,time
r
为任务k在子流程i的第r次历史执行记录的执行时长(单位:秒),w_his
r
为任务k在其子流程i的第r次历史执行记录的影响权重,u为任务k在子流程i的历史执行记录总次数。
[0087]
下面举例介绍任务k在其子流程i的平均执行时长avg_time
ik
。通过任务执行记录表还可以得到记录的任务id、子流程编号workflow_id、历史执行记录开始时间距离当前的间隔天数dis_days等。如图4(a)和图4(b)为任务的历史执行记录示意图,其中,图4(a)为任务id=1,子流程编号workflow_id=1的任务的最近4次历史执行记录,图4(b)为任务id=2,子流程编号workflow_id=1的任务的最近4次历史执行记录。图4(a)和图4(b)中,work_cal_sec表示任务在其子流程中各次历史执行记录的各次执行时长。
[0088]
按照任务在其子流程的最近n次历史执行记录中第i次历史执行记录的影响权重w_his
i
的计算公式,计算w_his1:
[0089][0090]
根据图4(a)所示,data_size1=12,最近四次历史执行记录的平均数据量dis_days1=2,设置β=0.8,分别代入w_his1的计算公式,得到:
[0091][0092][0093][0094][0095]
从而计算任务id为1的任务在其子流程(子流程编号为1)的平均执行时长:
[0096][0097]
同理,可以计算任务id为2的任务在其子流程(子流程编号为1)的平均执行时长:
[0098][0099]
从业务线配置表中读取预先配置的业务线权重weight
i
(i∈[1,p]),p为第i个任务执行器中任务数目,也是业务线权重的数目。可以通过如下公式计算任务k的优先级相对
权重比
[0100][0101]
优先级相对权重比的取值范围在(0,1)区间,优先级相对权重比越小,表示任务k的优先级越低。图5是根据本发明一个实施例的业务线配置表的示意图,如图5所示,两个业务线权重分别配置为9和1,根据上式可以分别计算出该两个业务线的任务的优先级相对权重比。
[0102]
从业务线配置表中读取配置的任务的数据量大小,通过配置的修改时间可以知道数据量距离上次是否有修改,例如图5中配置的业务线1的任务的数据量为20,业务线2的任务的数据量为8,配置时间create_time与修改时间modify_time相同,可知数据量都没有修改,那么任务本次执行的数据量分别为data_size1=20,data_size2=8。
[0103]
对于任务k,通过上述方法可以得到任务k在其子流程i的平均执行时长avg_time
ik
,优先级相对权重比本次执行的数据量data_size
k

[0104]
下面计算任务k在其任务执行器i的预测执行时长forecast_time
ik
,forecast_time
ik
与该任务k在其子流程的平均执行时长和本次执行的数据量,以及最近n次历史执行记录数据量有关。以n=10为例,forecast_time
ik
具体可以通过下式计算:
[0105][0106]
其中,假设任务k在其子流程一共有u次历史执行记录,且历史执行记录是按照时间顺序排列的,则取最近n=10次历史执行记录即:取历史执行记录序号在r∈[u-9,u]这个区间内的10次历史执行记录。
[0107]
表示最近10次历史执行记录的平均数据量,任务k在其子流程的平均执行时长avg_time
ik
与该平均数据量的商为任务k的单位数据量的平均时长,再乘以本次执行的数据量data_size
k
,即得到任务k在其任务执行器i的预测执行时长forecast_time
ik

[0108]
基于上文计算出的任务1的avg_time
11
=2267.2,
[0109]
任务2的avg_time
12
=1605.8,两个任务的数据量假设分别为
[0110]
data_size1=20,data_size2=8,
[0111]
任务1对应的上述平均数据量任务2对应的上述平均数据量那么通过上述forecast_time
ik
的计算公式可以计算出forecast_time
11
=2267.2
×
20
÷
16=2834;forecast_time
12
=1605.8
×8÷
8=1605.8。
[0112]
根据任务k的优先级相对权重比任务k在其子流程i中最近n次历史执行记录的最大执行时长max(time
r=u-n-1
,u)、任务k在其任务执行器i中的预测执行时长forecast_time
ik
、调和因子计算任务在其任务执行器中的动态优先级dyn_priority
ik
,以n=10为例,dyn_priority
ik
的计算公式如下:
[0113][0114]
其中,max(time
r=u-9,u
)是任务k在其子流程i中最近10次历史执行记录的最大执行时长。max(time
r=u-9,u
)表示从time
r=u-9
开始一直到time
r=u
这10次执行时长中,选取最大的一次执行时长。
[0115]
可称为预计空闲时间占比,这个值范围在(0,1)区间,任务预计执行时间越短,空闲时间占比越大,则任务的优先级应该越高。其中为调和因子,的取值范围在(0,1)区间,本发明实施例优选时,通常时所有任务执行完成的耗时最早。
[0116]
图6是根据本发明一个实施例的任务调度的应用示意图。
[0117]
如图6所示,共有n个业务线,每一业务线有各自的商品子集,商品子集是根据各业务线的过滤条件对总商品池中的商品过滤得到的。业务线商品池实例化、业务线商品池标签集、业务线标签集推送到应用数据库对应业务线的各个子流程,并分别对应各个任务执行器。各子流程之间存在依赖关系,业务线商品池实例化子流程输出的任务执行结果,作为同一业务线的下一子流程即业务线商品池标签集子流程的输入,业务线商品池标签集子流程的任务执行结果再作为其下一流程,即业务线标签集推送到应用数据库子流程的输入。
[0118]
任务调度中心通过一个核心任务对各个执行状态的任务进行实时的监控和分组,按照任务对应的子流程为任务分配任务执行器,每个任务执行器中有多台计算机并发执行,这些计算机根据自己对应的分组,从所在的任务执行器的任务队列中选取对应自己的分组的任务并执行。在分组时,将任务分到预测执行时长的总和最小的一个分组中,使得每个任务都被分配到当前执行任务总体耗时最短的一个机器(计算机)上执行。
[0119]
由于基础数据的数量不同,即使同样的计算逻辑也会导致任务的执行时长不一样。任务调度中心负责管理需要执行的任务列表,它根据业务线任务执行记录表中任务的历史执行记录,对任务的执行时长进行预判,根据这些任务的执行时长进行分配。任务执行记录表中包括了基础数据大小、执行日期和当次执行时长。对于大多数计算任务而言,基础数据量对整个任务的执行时长的影响比较明显,基础数据量越大的任务,执行时间越长,本实施例通过任务调度算法,即动态优先级算法计算任务的动态优先级,动态优先级算法上文已详细介绍,不再赘述。任务调度中心根据待执行任务的执行性能、执行时长、动态优先级等进行任务的排列分组和调度,提高了处理效率,并更好地做到负载均衡。
[0120]
图7是根据本发明一个实施例的任务调度装置的主要模块示意图。
[0121]
如图7所示,本发明一个实施例的任务调度装置700主要包括任务分配模块701、动态优先级计算模块702、任务调度模块703。
[0122]
任务分配模块701,用于将不同业务线的同一子流程的任务分配到同一任务执行器,业务线配置有业务线权重。
[0123]
动态优先级计算模块702,用于根据任务的优先级相对权重比、任务在其子流程中最近n次历史执行记录的最大执行时长、任务在其任务执行器中的预测执行时长、预设的第一调和因子,计算任务在其任务执行器中的动态优先级,n为正整数,任务的优先级相对权重比根据配置的各业务线权重计算得到。
[0124]
任务调度模块703,用于按照动态优先级调度每一任务执行器中的任务。
[0125]
任务调度装置700还包括预测执行时长计算模块,用于:根据任务在其子流程的平均执行时长、任务本次执行的数据量、任务在其子流程中最近n次历史执行记录的平均数据量,计算任务在其任务执行器中的预测执行时长。
[0126]
预测执行时长计算模块具体可以用于:根据任务在其子流程的平均执行时长与任务在其子流程中最近n次历史执行记录的平均数据量的商,得到任务的单位数据量的平均时长;根据任务的单位数据量的平均时长与任务本次执行的数据量的乘积,得到任务在其任务执行器中的预测执行时长。
[0127]
任务调度装置700还可以包括平均执行时长计算模块,用于:根据任务在其子流程中,最近n次历史执行记录的各次执行时长和各次影响权重,计算加权平均值,作为任务在其子流程的平均执行时长。
[0128]
任务调度装置700还可以包括影响权重计算模块,用于:对于每次历史执行记录,根据当次历史执行记录的数据量大小、最近n次历史执行记录的平均数据量、当次历史执行记录开始时间距离当前的间隔天数、预设的第二调和因子,计算当次历史执行记录的影响权重。
[0129]
任务调度装置700还可以包括优先级相对权重比计算模块,用于根据第一业务线权重与配置的各业务线权重的总和的比值,得到任务的优先级相对权重比,第一业务线权重为任务所属业务线的业务线权重。
[0130]
预设的第一调和因子的取值大于0且小于1。
[0131]
动态优先级计算模块702具体用于通过如下方式计算任务在其任务执行器中的动态优先级:计算任务在其子流程中最近n次历史执行记录的最大执行时长与任务在其任务执行器中的预测执行时长的第一差值,将该第一差值与任务在其子流程中最近n次历史执行记录的最大执行时长的比值,作为任务的预计空闲时间占比;以预设的第一调和因子作为任务的优先级相对权重比的加权系数,以1与预设的第一调和因子的第二差值作为任务的预计空闲时间占比的加权系数,计算任务的优先级相对权重比与任务的预计空闲时间占比的加权和,作为任务在其任务执行器中的动态优先级。
[0132]
任务调度模块703具体可以用于:对于每一任务执行器,按照其中任务的动态优先级生成任务队列,并依序确定任务队列中每一任务对应的分组,分组与任务执行器中的计算机一一对应,按照分组将任务队列中的任务调度到相应的计算机以便执行,其中,在确定任务队列中的每一任务对应的分组时,统计各分组当前已有任务的预测执行时长的总和,并将该任务分到预测执行时长的总和最小的一个分组中。
[0133]
另外,在本发明实施例中任务调度装置的具体实施内容,在上面所述任务调度方法中已经详细说明了,故在此重复内容不再说明。
[0134]
此外,本发明实施例还提供一种任务执行系统,主要包括:任务调度中心处理器以及一个或多个任务执行器。其中:
[0135]
任务调度中心处理器简称任务调度中心,其实现上述任务调度装置700中的功能,具体地,任务调度中心处理器用于将不同业务线的同一子流程的任务分配到同一任务执行器,业务线配置有业务线权重;根据任务的优先级相对权重比、任务在其子流程中最近n次历史执行记录的最大执行时长、任务在其任务执行器中的预测执行时长、预设的第一调和因子,计算任务在其任务执行器中的动态优先级,n为正整数,任务的优先级相对权重比根据配置的各业务线权重计算得到;按照动态优先级调度每一任务执行器中的任务。
[0136]
任务执行器用于执行任务调度中心处理器调度的任务。
[0137]
本发明一个实施例的任务执行系统的任务执行原理,以及任务调度中心处理器、任务执行器具体还可以参照上文对图2实施例的详细介绍。
[0138]
图8示出了可以应用本发明实施例的任务调度方法或任务调度装置的示例性系统架构800。
[0139]
如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0140]
用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
[0141]
终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
[0142]
服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息
--
仅为示例)反馈给终端设备。
[0143]
需要说明的是,本发明实施例所提供的任务调度方法一般由服务器805执行,相应地,任务调度装置一般设置于服务器805中。
[0144]
应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0145]
下面参考图9,其示出了适于用来实现本技术实施例的终端设备或服务器的计算机系统900的结构示意图。图9示出的终端设备或服务器仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
[0146]
如图9所示,计算机系统900包括中央处理单元(cpu)901,其可以根据存储在只读存储器(rom)902中的程序或者从存储部分908加载到随机访问存储器(ram)903中的程序而执行各种适当的动作和处理。在ram 903中,还存储有系统900操作所需的各种程序和数据。cpu 901、rom 902以及ram 903通过总线904彼此相连。输入/输出(i/o)接口905也连接至总线904。
[0147]
以下部件连接至i/o接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;
以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至i/o接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
[0148]
特别地,根据本发明公开的实施例,上文参考主要步骤示意图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤示意图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(cpu)901执行时,执行本技术的系统中限定的上述功能。
[0149]
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0150]
附图中的主要步骤示意图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,主要步骤示意图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或主要步骤示意图中的每个方框、以及框图或主要步骤示意图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0151]
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括任务分配模块、动态优先级计算模块、任务调度模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,任务分配模块还可以被描述为“用于将不同业务线的同一子流程的任务分配到同一任务执行器的模块”。
[0152]
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:将不同业务线的同一子流程的任务分配到同一任务执行器,所述业务线配置有业务线权重;根据所述任务的优先级相对权重比、所述任务在其子流程中最近n次历史执行记录的最大执行时长、所述任务在其任务执行器中的预测执行时长、预设的第一调和因子,计算所述任务在其任务执行器中的动态优先级,所述任务的优先级相对权重比根据配置的各所述业务线权重计算得到;按照所述动态优先级调度每一所述任务执行器中的任务。
[0153]
根据本发明实施例的技术方案,将不同业务线的同一子流程的任务分配到同一任务执行器,根据任务的优先级相对权重比、任务在其子流程中最近n次历史执行记录的最大执行时长、任务在其任务执行器中的预测执行时长、预设的第一调和因子,计算任务在其任务执行器中的动态优先级,对于每一任务执行器,按照其中任务的动态优先级生成任务队列并依序确定任务对应的分组,在确定任务对应的分组时,将任务分到预测执行时长的总和最小的一个分组,以由该分组对应的计算机执行。能够灵活且合理地确定任务执行顺序和执行规则,对待执行任务进行非抢占式控制,可以根据硬件资源的忙碌和空闲状况调度任务,更好地做到负载均衡,保证硬件资源的合理利用,最优化任务总体执行时长,提高处理效率,新增业务场景的任务只需要进行一些普通的初始化工作即可,接入成本低,且对原有任务执行效率的影响小,动态适应业务场景多变需求。
[0154]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1