一种任务的调度方法和调度系统与流程

文档序号:16627540发布日期:2019-01-16 06:15阅读:172来源:国知局
一种任务的调度方法和调度系统与流程

本发明属于电数据处理领域,尤其涉及一种任务的调度方法和调度系统。



背景技术:

在现代分布式应用服务架构体系中,任务队列是其中很重要的一个组件,现在技术的发展使得任务也具有了多样性,包括:监控预警、数据回传、发送邮件、数据分析、离线计算等,而不同类型的任务对系统资源需求及执行优先级存在着差异化,在有限的系统资源下,如何实现任务的调度策略是影响任务执行效率的关键因素。

目前常见的任务队列一般采用的fifo(firstinputfirstoutput,先进先出)队列调度方法,根据任务入队列时间,按照进入队列先后次序进行处理。由于fifo队列调度方法相对简单,通常采用多个不同的队列来区分任务优先级,对优先级的控制不够精细,无法限制任意时间段进出队列的任务流速,任意时间窗口内生产者和消费者的能力无法达到相对均衡,同时对于突发大量任务涌入,在系统资源不足的情况下会导致队列发生阻塞,而且低优先级的任务完全失去被调度的机会。



技术实现要素:

本发明实施例的目的在于提供一种任务的调度方法和调度系统,能保证在任意时间窗口内的任务处理频次可控,平衡任务生产者和消费者能力,避免队列拥塞,充分调节任务处理能力。

本发明公开了一种任务调度方法,应用于任务调度系统,所述调度方法包括:

设置队列所允许的任务流速及队列缓存长度,当待调度任务的流速不超过所允许的任务流速并且该任务队列的长度不超过所述队列缓存长度时,准许该任务进入队列,否则,禁止该任务进入,其中,所述任务流速为单位时间内任务调度的频次n,n为正整数。

进一步的,还设置有一时间桶,用于表示将单位时间划分为m个区间后得到的最小时间粒度,每个时间桶能容纳个任务,以时间桶为单位设置队列缓存长度为h,该队列的容量为个任务;当待调度的任务请求进入任务队列时,计算待调度的任务从头部向队尾顺序取m个时间桶累计的任务数目t以及待调度的任务可容纳的时间桶数目c,如果t<=n且c<=h,则准许该任务进入队列,否则,禁止该任务进入,m、h、t、c均为正整数。

进一步的,还对接收的待调度任务进行分类,并设置有与任务资源类型对应的二级队列,当有待调度的新任务请求进入队列时,该队列头部的任务出列后进入相应的二级队列。

进一步的,还设置有队列任务flush时间间隔,根据flush时间间隔将队列头部任务出列后放入二级队列。

进一步的,按预设时间评估二级队列中任务的流入和流出速率,当流入速率大于流出速率时,增加该队列任务执行单元的数目;当流入速率小于流出速率时,则减少或维持该队列任务执行单元的数目。

另一方面,本发明公开了一种任务调度系统,所述调度系统包括参数设置模块及判断模块,其中:

所述参数设置模块,用于设置队列所允许的任务流速及队列缓存长度;

所述判断模块,用于当判断出待调度任务的流速不超过所允许的任务流速并且该任务队列的长度不超过所述队列缓存长度时,准许该任务进入队列,否则,禁止该任务进入,其中,所述任务流速为单位时间内任务调度的频次n,n为正整数。

本发明相比于现有技术的有益效果在于,由于为任务进入队列设置了合理的准入机制,即设置队列所允许的任务流速及队列缓存长度,当待调度任务的流速不超过所允许的任务流速并且该任务队列的长度不超过所述队列缓存长度时,准许该任务进入队列,否则,禁止该任务进入。这种方式能保证在任意时间窗口内的任务处理频次可控,平衡任务生产者和消费者能力,避免队列拥塞,充分调节任务处理能力。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一示例性实施例示出的一种任务的调度方法的流程图。

图2为本发明一示例性实施例示出的一种任务的调度方法的流程图;

图3为本发明一示例性实施例示出的一种任务的调度系统的结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一

一种任务调度方法,应用于任务调度系统,包括以下步骤:

s101,设置队列所允许的任务流速及队列缓存长度,其中,所述任务流速为单位时间内任务调度的频次n,n为正整数。

为了保证在任意时间窗口内的任务处理频次可控,平衡任务生产者和消费者能力,避免队列拥塞,充分调节任务处理能力,可以根据实际情况设置队列所允许的任务流速及队列缓存长度。

任务调度系统还可以设置多个具有任务处理能力的队列,各种队列均设置有相应的所允许的任务流速及队列缓存长度,以满足不同待调度任务的需求,可以保证每个队列的任务都能根据对应的执行速率得到相关调度资源。

s102,判断待调度任务是否满足入队条件,若满足则通过,否则禁止进入。

具体的,入队条件包括:

(1)待调度任务的流速不超过所允许的任务流速;

(2)该任务队列的长度不超过所述队列缓存长度时。

只有这(1)、(2)同时满足才允许待调度任务入列,以此实现任务生产者和消费者能力的平衡,避免队列拥塞。

另外,为了保证任务在任意时间段内调度速度的平滑性,避免队列拥塞,在任务调度时可以使用一些滑动窗口限流算法。在本实施例中,通过设置时间桶来限制任务流速。时间桶用于表示将单位时间划分为m个区间后得到的最小时间粒度,每个时间桶能容纳个任务,以时间桶为单位设置队列缓存长度h,该队列的容量为个任务。

下面示出以时间桶为单位判断待调度任务是否满足入队条件的办法:

当待调度的任务请求进入任务队列时,计算待调度的任务从头部向队尾顺序取m个时间桶累计的任务数目t以及待调度的任务可容纳的时间桶数目c,如果t<=n且c<=h,则准许该任务进入队列,否则,禁止该任务进入,m、h、t、c均为正整数。

实施例二

如图2所示为本发明另一示例性实施例示出的任务调度方法的流程图,所述调度方法包括:

s201,设置配置参数,所述配置参数包括设置队列所允许的任务流速、队列缓存长度、队列任务flush时间间隔,二级队列的执行单元数目、定时扫描时间间隔。

调度系统还对接收的待调度任务进行分类,并设置有与任务资源类型对应的二级队列,当有待调度的新任务请求进入队列时,该队列头部的任务出列后进入相应的二级队列,以完成任务的执行。当然,如果待调度任务是进程资源,则只需要一个二级队列即可。

为二级队列设置执行单元数目有利于保证执行资源的合理分配,避免资源浪费。为二级队列设置定时扫描时间间隔可以更好的评估二级队列次中任务的流入和流出速率。

调度系统还设置有队列任务flush时间间隔,根据flush时间间隔将队列头部任务出列后放入二级队列。保证在没有新任务进来时,队列中的任务仍能够持续流转到二级队列被执行。

s202,队列开始接收从生产者产生的任务并根据任务进行分类。

s203,判断新来任务是否满足入队条件,入队条件包括:

(1)待调度任务的流速不超过所允许的任务流速;

(2)该任务队列的长度不超过所述队列缓存长度时。

如果同时满足条件,则进入步骤s204;否则返回步骤s202,继续接收新任务;

s204,将满足条件的任务放入队列队尾,并将队列头部的任务取出放入对应二级队列;同时根据设定的队列任务flush时间间隔,每隔一段时间将队首任务出列,并放入二级队列,处理好后,然后重新回到步骤s202,同时也进入步骤s205和s206,s205和s206并行执行。

s205,根据设定的定时扫描时间,计算当前二级队列的任务流入速率和流出速率,转到步骤s207进行判断。

s206,从二级任务次中,依次取出待执行的任务,分配执行单元执行该任务,然后进入s210。

s207,判断流入速率是否大于流出速率,如果大于进入步骤s208,否则进入步骤s209;

s208,增加该任务类型对应的执行单元,直到二级队列的任务流入速率和流出速率达到一定平衡。

s209,减小该任务类型对应的执行单元,直到二级队列的任务流入速率和流出速率达到一定平衡。这样做能将资源让出给其他的任务队列,保证调度资源的合理分配,避免资源浪费。

s210,整个任务队列调度流程结束。

实施例三

如图3所示为本发明一示例性实施例示出的任务调度系统的结构图,所述调度系统包括参数设置模块10及判断模块20,其中:

参数设置模块10,用于设置队列所允许的任务流速及队列缓存长度;

判断模块20,用于当判断出待调度任务的流速不超过所允许的任务流速并且该任务队列的长度不超过所述队列缓存长度时,准许该任务进入队列,否则,禁止该任务进入,其中,所述任务流速为单位时间内任务调度的频次n,n为正整数。

由于为任务进入队列设置了合理的准入机制,因此能保证在任意时间窗口内的任务处理频次可控,平衡任务生产者和消费者能力,避免队列拥塞,充分调节任务处理能力。

另外,所述调度系统还包括分类模块30、二级队列池40(包含若干二级队列)、调整模块50。所述分类模块30用于还对接收的待调度任务进行分类,二级队列的数量与任务资源类型对应,当有待调度的新任务请求进入队列时,该队列头部的任务出列后进入相应的二级队列。所述调度系统还设置有调整模块50,用于根据预设时间评估二级队列中任务的流入和流出速率,当流入速率大于流出速率时,增加该队列任务执行单元的数目;当流入速率小于流出速率时,则减少或维持该队列任务执行单元的数目。这样做能将资源让出给其他的任务队列,保证调度资源的合理分配,避免资源浪费。

优选的,参数设置模块10还用于设置flush时间间隔,根据flush时间间隔将队列头部任务出列后放入二级队列。保证在没有新任务进来时,队列中的任务仍能够持续流转到二级队列被执行。

优选的,参数设置模块10还用于设置时间桶,该时间桶用于表示将单位时间划分为m个区间后得到的最小时间粒度,每个时间桶能容纳个任务,以时间桶为单位设置队列缓存长度为h,该队列的容量为个任务。当待调度的任务请求进入任务队列时,所述判断模块20计算待调度的任务从头部向队尾顺序取m个时间桶累计的任务数目t以及待调度的任务可容纳的时间桶数目c,如果t<=n且c<=h,则准许该任务进入队列,否则,禁止该任务进入,m、h、t、c均为正整数。这样做有利于保证任务在任意时间段内调度速度的平滑性,避免队列拥塞。

本领域普通技术人员可以理解为上述实施例所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

本领域普通技术人员还可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,包括rom/ram、磁盘、光盘等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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