分布式任务的均衡调度中心、方法、系统和装置与流程

文档序号:13625739阅读:195来源:国知局
分布式任务的均衡调度中心、方法、系统和装置与流程

本发明涉及数据传输技术领域,具体地说,涉及一种分布式任务的均衡调度中心、方法、系统和装置。



背景技术:

随着计算机、网络信息技术的发展,在一些企业级系统中,大量的任务分布在不同的任务主机完成。如何调度这些任务,合理地分配给相应的任务主机则成为了重要的技术问题。

目前,任务调度执行主要分为如下两种:

串行单节点任务调度,即单机完成任务的调度和执行。特点实是:实现简单,易于维护。缺点是:但当有大量任务需要调度和执行时,单机压力大,以至无法保证任务履约完成。

分布式任务调度,即多机并行调度和执行任务。特点是:充分利用多机硬件资源,可负载大量任务,当任务超过负载时方便横向扩展,有效的解决串行单节点任务调度的不足。

目前,企业级任务调度基本以分布式调度为主,并提供各种调度策略、任务同步等机制。例如:

采用quartz轻量级调度框架,主要针对时间周期和时间点的任务调度。或采用scheduledexecutor,其是java本身提供的周期性调度线程池,可以实现固定时间周期的任务执行。或者通过zookeeper框架对分布式任务执行同步任务,防止重复或无序执行。

例如,现有技术采用如下的技术方案实现分布式任务的调度:

定义一个或多个可执行的任务;

配置每个可执行任务的触发周期或执行时间点;

启动quartz、scheduledexecutor或其他调度框架,读取调度配置,等待触发任务执行;

调度框架触发任务执行,随即进入下一个任务调度周期。

可执行任务通过zookeeper进行同步控制,防止多机重复执行。

然而现有技术中的技术方案只使用调度框架,并不能对任务的执行情况进行监控,因而对分布式多机执行的支持不理想,并且容易造成某些主机任务的积压,负载不均衡。



技术实现要素:

本发明要解决的技术问题在于,根据现有技术的不足,提供一种分布式任务的均衡调度中心、方法、系统和装置,灵活配置、调整调度策略及任务下发参数,从而均衡各任务主机的任务量。

为了解决上述技术问题,本发明提供了一种分布式任务的均衡调度方法,包括:

按照功能或类型创建多个任务组,为每个任务组配置对应的调度策略;

为每个任务组定制多个调度计划,每个调度计划对应一个可执行任务集合;

监控每个任务组的当前任务执行量,根据配置参数,计算得到每个调度计划的任务调度量,并将与所述任务调度量对应数量的任务载入任务缓存中的任务队列;

根据每个任务组的当前任务执行量和配置参数,计算得到每个任务主机的任务下发量;

根据所述每个任务主机的下发量,从所述任务缓存中对应的任务队列取出可执行任务下发给相应的任务主机。

其中,所述调度策略至少包括任务主机的分组配置;所述调度计划至少包括调度周期和调度权重。

优选地,所述监控每个任务组的当前任务执行量的步骤包括:

接收任务主机的任务执行反馈信息,获得一个时间段的总任务执行量;

计算所述时间段内的平均任务执行量;

根据预设的微调系数,将平均任务执行量乘以所述微调系数得到每个任务组的当前任务执行量

其中,所述微调系数的取值为0.8-1.2。

优选地,所述计算得到每个调度计划的任务调度量的步骤包括:

根据缓存中当前的任务队列长度,计算出所述当前任务队列长度与最大任务队列长度的差值qe;

在保证不超过最大调度量和最大队列长度的情况下,和qe取最大值作为本次任务调度总量qt;

根据求和公式计算每个任务组的多个调度计划的权重总和wsum;

依据每个调度计划的权重wi和权重总和wsum的比值及本次任务调度总量qt,根据公式1-1计算每个调度计划的调度量qi,

qi=qt×(wi÷wsum)1-1。

优选地,如果所述任务组中的多个调度计划的权重互不相同,所述计算得到每个任务主机的任务下发量的步骤包括:

根据求和公式计算任务组中多个调度计划的权重总和wsum;

依据当前任务执行量、权重与权重总和,根据公式2-1计算出针对每个调度计划的下发量cai,

依据当前任务队列长度,算出每个任务主机平均需下发量

和cai中取最小的值作为任务主机下发量c;

如果所述任务组中的多个调度中计划中有相同的权重,所述计算得到每个任务主机的任务下发量c的步骤包括:

计算任务组中多个调度计划权重去重后的权重总和其中,所述m为去重后的权重个数,wi'为第i个权重;

依据当前任务执行量、去重权重与权重总和,根据公式2-2计算出每个权重的下发量c'w,

计算相同权重下的调度计划的周期总和其中,所述ii为第i个调度计划的调度周期;

根据公式2-3计算相同权重下的调度计划的周期反比ri,

ri=i'sum÷ii2-3;

根据公式2-4计算相同权重下的调度计划的周期反比之和,得到反比总和rsum,

根据公式2-5,依据相同权重下的调度计划的周期反比ri及反比总和rsum和所述权重的下发量cw得到该调度计划在该周期的任务下发量c'ai,

c'ai=c'w×(ri÷rsum)2-5;

依据当前任务队列长度,算出每个任务主机平均需下发数量

和c'ai中取最小的值作为任务主机下发量c。

优选地,所述的分布式任务的均衡调度方法还包括为所述待执行任务设置同步锁和在所述任务完成后移除所述同步锁的步骤。

优选地,任务主机在执行任务前,通过执行redis数据库中的setnx(key,value)命令为所述任务设置所述同步锁。

本发明还提供了一种分布式任务的均衡调度中心,其中,包括:

配置模块,用于按照功能或类型创建多个任务组,为每个任务组配置对应的调度策略;为每个任务组定制多个调度计划,根据所述调度计划将所述任务组划分为相应的可执行任务集合;

任务调度模块,根据任务执行反馈信息及调度计划的配置参数,计算得到每个调度计划的调度量,并将与所述任务调度量对应数量的任务载入任务缓存中的任务队列;

任务下发模块,根据任务执行反馈信息及任务组中调度计划的配置参数,计算得到每个任务主机的下发量,根据所述下发量,从所述任务缓存中对应的任务队列取出可执行任务下发给相应的任务主机;和

监控模块,用于接收任务主机反馈信息,获得设定时间段的任务执行量,并计算所述时间段内的每个任务组的任务执行量。

优选地,所述任务调度模块包括:

第一数据读取单元,用于读取调度策略和调度计划的设置参数及从所述监控模块得到的任务执行量;

第一计算单元,用于根据预设调度算法,依次从所述第一数据读取单元中取得相应的参数数据,根据相应的算法流程计算得到每个调度计划的调度量;和

任务载入单元,根据每个调度计划的调度量,将所述任务载入缓存中的任务队列。

优选地,所述任务调度模块还包括:

同步锁标识设置单元,用于为已调度好的可执行任务设置同步锁标识。

优选地,所述任务下发模块包括:

第二数据读取单元,用于读取所述监控模块得到的任务执行量及调度策略和调度计划的设置参数;

第二计算单元,用于根据预设的下发算法,依次从所述第二数据读取单元中取得相应的参数数据,根据相应的算法流程计算得到每个任务主机下发量;和

任务下发单元,根据每个任务主机下发量,从所述任务缓存中对应的任务队列取出可执行任务下发给相应的任务主机。

本发明还提供了一种分布式任务的均衡调度装置,其中,包括存储器和处理器,所述存储器用于存储数据和指令,所述处理器根据所述指令配置如下:

按照功能或类型创建多个任务组,为每个任务组配置对应的调度策略;

为每个任务组定制多个调度计划,每个调度计划对应一个可执行任务集合;

监控每个任务组的当前任务执行量,根据配置参数,计算得到每个调度计划的任务调度量,并将与所述任务调度量对应数量的任务载入任务缓存中的任务队列;

根据每个任务组的当前任务执行量和配置参数,计算得到每个任务主机的任务下发量;

根据所述每个任务主机的下发量,从所述任务缓存中对应的任务队列取出可执行任务下发给相应的任务主机。

本发明还提供了一种分布式任务的均衡调度系统,其中,包括:

如前述的调度中心,和

任务主机集群,用于接收所述调度中心下发的任务,执行所述任务,并向所述调度中心发送任务执行反馈信息。

优选地,所述任务主机包括:

任务获取单元,用于从调度中心获取相应数量的任务;

任务执行单元,用于执行获取的任务;

反馈单元,用于向调度中心发送任务执行反馈信息;和

同步锁设置单元,用于在执行任务之前,根据任务中的同步锁标识,对所述任务设置同步锁,在完成所述任务后,移除所述同步锁。

优选地,所述分布式任务的均衡调度系统还包括redis数据库,所述任务主机的同步锁设置单元执行redis数据库中的setnx(key,value)命令为所述任务设置所述同步锁,在所述任务执行完之后,清除所述同步锁。

本发明通过任务调度和任务下发的算法,有效地提高了任务执行效率和任务主机的利用率,均衡了任务主机的负载。并且,通过redis数据库实现同步锁,避免网络抖动产生的锁冲突,提升任务执行的稳定性。本发明对任务按组管理,可灵活定制调度计划,而且,本发明支持任务执行反馈机制,可监控任务掉、任务下发和任务执行的健康情况,并依据反馈回的信息灵活调整下发的任务量,动态地维持任务主机的负载均衡。

附图说明

通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1为本发明所述分布式任务的均衡调度方法和系统的框架原理示意图;

图2为本发明调度策略结构原理示意图;

图3为本发明所述分布式任务的均衡调度系统的原理结构示意图;

图4为所述任务调度模块的原理结构示意图;

图5为本发明所述任务下发模块的原理结构示意图;

图6为本发明所述分布式任务的均衡调度方法的总体流程图;

图7为本发明所述分布式任务的均衡调度中任务调度的流程图;

图8为缓存中下发队列示意图;

图9为本发明所述分布式任务的均衡调度中任务下发的流程图;

图10为本发明所述任务主机的结构示意图;

图11为本发明所述任务主机执行任务时的流程图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。

附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。

为了均衡任务主机的负载,需要灵活配置调度策略及任务下发参数,本发明通过提供调度、下发、监控、统计机制,根据当前运行情况灵活调整任务下发参数,具体如图1所示,为本发明所述分布式任务的均衡调度方法和系统的原理框架示意图。

调度中心负责任务调度和任务下发,在任务调度时,将计算出来的一定数量的需要执行的任务载入任务缓存。任务下发时,通过任务下发算法计算出针对每一个任务主机的下发量,并从缓存中取出相应数量的任务下发至任务主机集群中的对应的主机。

在进行任务调度时,读取任务调度策略,按照调度算法进行调度。

在任务下发时,读取任务调度策略,获取计算参数,按照任务下发算法进行下发。

在需要使用任务同步时,通过redis数据库为可执行任务设置同步锁,只有设置成功的任务才能执行。

主机将任务执行结果、可执行任务队列状态、周期内任务执行数量等信息封装后反馈给调度中心。调度中心依赖反馈信息动态调整调度和下发的任务数量,即调度量和下发量。

如图2所示,为以上所述的调度策略的结构原理示意图。

按照功能或类型创建不同的任务组,如图2所示,共有4个任务组,分别为任务组1至任务组4,为每个任务组配置各自的调度策略,即调度策略1至调度策略4。调度策略至少包括任务执行节点分组配置信息。

其中,由于在进行任务调度和任务下发时,可以采用多种方法,本发明提供的方法是其中一种。在图2所示的调度策略中,除了本发明所述的方法,也可以采用其他的方法,因而,在调度策略中还包括了调度算法类型这一参数,用以区分在对该任务组进行调度和下发任务时,采用的是哪一种方法。

通过任务执行节点分组配置信息来配置哪些节点(即任务主机)可以执行哪个任务组。另外,还有其他的一些配置,例如超时策略,目的是设置一些处理方法,用于调度、下发超时的情况。同理,还可以有其他的一些配置,由于与本发明关系并不紧密,因而在本发明中不再赘述。

对于每个任务组,定制有多个调度计划,每个调度计划对应一系列可执行任务集合,调度计划主要包括任务类型、调度周期、调度权重和调度脚本等。

调度中心通过调度算法,计算出每个调度计划的调度量,分别将对应该调度计划的任务载入缓存中的相应任务队列。根据下发算法计算出每个主机的下发量,将所述下发量的任务从对应的任务队列中取出,下发到相应的任务主机。

根据前述的原理及调度策略架构,本发明提供了一种所述分布式任务的均衡调度系统,其一实施例的原理结构示意图如图3所示。

所述分布式任务的均衡调度系统包括调度中心1和任务主机集群2,其中,所述调度中心1包括:

配置模块11,用于按照功能或类型创建多个任务组,为每个任务组配置对应的调度策略;为每个任务组定制多个调度计划,根据所述调度计划将所述任务组划分为相应的可执行任务集合;

任务调度模块12,根据任务执行反馈信息及调度计划的配置参数,计算得到每个调度计划的调度量,并将需要执行的任务载入任务缓存14中的相应任务队列;

任务下发模块13,根据任务执行反馈信息及任务组中调度计划的配置参数,计算得到每个任务主机的下发量,根据所述下发量,从所述任务缓存14中的任务队列取出所述可执行任务,下发给相应的任务主机;

任务缓存14,用于存储需要执行的任务,其中包括多个任务队列;和

监控模块15,用于接收任务主机反馈信息,获得设定时间段的任务执行量,并计算所述时间段内的每个任务组的平均任务执行量。

其中,所述调度策略如前所述,至少包括任务执行主机分组配置,除此之外,还可以包括任务调度算法类型、超时策略等;所述调度计划包括任务类型、调度周期、调度权重和调度脚本等。

所述任务调度模块如图4所示,包括第一数据读取单元121、第一计算单元122和任务载入单元123。其中,第一数据读取单元121用于读取所述监控模块15得到的任务组平均任务执行量及调度策略和调度计划中的设置参数;第一计算单元122用于根据预设调度算法,依次从所述第一数据读取单元121中取得相应的参数数据,根据相应的算法流程计算得到每个调度计划的调度量;任务载入单元123根据每个调度计划的调度量,将所述任务载入缓存中的相应任务队列。

所述任务调度模块12还包括同步锁标识设置单元124,用于在将任务载入缓存之前,为所述任务设置同步锁标识,当任务主机在执行所述任务时,当读取到所述同步锁标识时,对所述任务设置同步锁。

如图5所示,为本发明所述任务下发模块的原理结构示意图,所述任务下发模块13包括第二数据读取单元131、第二计算单元132和任务下发单元133。其中,所述第二数据读取单元131读取所述监控模块15得到的任务组平均任务执行量及调度策略和调度计划中的相关参数,如当前的任务队列长度、调度计划的权重、调度计划的调度周期和任务主机数量等;所述第二计算单元132根据预设的下发算法,即不同的公式及顺序,依次从所述第二数据读取单元131中取得相应的参数数据,计算得到每个任务主机下发量;所述任务下发单元133根据每个任务主机下发量,从任务缓存中相应任务队列取出该数量的任务发送给所述任务主机。

如图6所示,为本发明所述的分布式任务的均衡调度方法的总体流程图,具体包括:

步骤s1,按照功能或类型创建多个任务组,为每个任务组配置对应的调度策略;

步骤s2,为每个任务组定制多个调度计划,每个调度计划对应一个可执行任务集合;

步骤s3,监控每个任务组的任务执行量,根据调度策略,计算得到每个调度计划的调度量q,并将需要执行的任务载入缓存中的任务队列;

步骤s4,根据每个任务组的任务执行量,根据调度策略,计算得到每个任务主机的下发量c;

步骤s5,根据所述每个任务主机的下发量,从所述缓存中取出所述可执行任务下发给相应的任务主机。

具体地,在步骤3中,计算得到每个调度计划的任务调度量q的流程如图7所示,具体如下:

步骤s31,从调度策略中读取相应的参数,如该任务组中的最大调度量qmax和下发队列长度最大值qb,以此作为计算时的门限阀值;

步骤s32,从前述调度中心的监控模块接收任务主机的反馈信息中获得一个时间段的任务执行量;计算一段时间内,如5分钟,任务组中任务执行量的平均值,然后根据预设的微调系数,将平均任务执行量乘以所述微调得到每个任务组的当前任务执行量其中,所述微调系数为一个大于0的浮点系数,这个浮点系数可以人工设定,主要用于计算结果的人工微调,取值通常位于但不限于0.8-1.2之间。

步骤s33,依据当前下发队列长度qa,采用公式qe=qb-qa计算出当前下发队列长度qa与下发队列长度最大值qb的差值qe。

步骤s34,在保证不超过最大调度量qmax和最大队列长度的qb情况下,和qe取最大值作为本次调度总量qt。

步骤s35,计算调度计划权重总和wsum,其中,wi为第i个调度计划的权重,i为自然数1,2,3……。

步骤s36,依据每个调度计划的权重和权重总和的比值及本次调度总量,根据公式qi=qt×(wi÷wsum),计算每个调度计划的调度量qi。

如图8所示,为本发明缓存中一个任务组实施例的下发队列的示意图。其中,所述任务组共有7个调度计划,通过上算法述流程分别得到7个调度计划的调度量qp1-qp7。

在任务下发时,针对多个调度计划的权重是否相同,其下发算法略有不同。如图9所示,为所述任务组中的多个调度计划的权重互不相同时,所述计算得到每个任务主机的任务下发量c的步骤:

步骤s41a,计算任务组中多个调度计划的权重总和

步骤s42a,依据当前任务执行量、权重与权重总和,根据公式2-1计算出针对每个调度计划的下发量,

步骤s43a,依据当前任务队列长度,算出每个任务主机平均需下发数量

步骤s44a,在和cai中取最小的值作为任务主机下发量c。

如果所述任务组中的多个调度中计划中有相同的权重,所述计算得到每个任务主机的任务下发量的步骤包括:

步骤s41b,计算任务组中多个调度计划权重去重后的权重总和其中,所述m为去重后的权重个数,wi'为第i个权重。

步骤s42b,依据当前任务执行量、去重权重与权重总和,根据公式2-2计算出每个权重的下发量c'w,

步骤s43b,计算相同权重下的调度计划的周期总和其中,所述ii为第i个调度计划的调度周期。

步骤s44b,根据公式2-3计算相同权重下的调度计划的周期反比ri;

ri=i'sum÷ii2-3;

步骤s45b,根据公式2-4计算相同权重下的调度计划的周期反比之和,得到反比总和rsum;

步骤s46b,根据公式2-5,依据相同权重下的调度计划的周期反比ri及反比总和rsum和所述权重的下发量cw得到该调度计划在该周期的任务下发量c'ai;

c'ai=c'w×(ri÷rsum)2-5;

步骤s47b,依据当前任务队列长度,算出每个任务主机平均需下发数量

步骤s48b,在和c'ai中取最小的值作为任务主机下发量c。

根据上述流程得到了每个任务主机的下发量,从缓存中按此下发量取出任务下发给相应的任务主机。

在本发明中,所述任务主机的结构原理如图10所示,所述任务主机包括任务获取单元21、任务执行单元22、反馈单元23和同步锁设置单元24,其中,所述任务获取单元21从调度中心获取相应数量(即为调度中心计算得到下发量)的任务;所述任务执行单元22执行获取的任务;所述反馈单元23向调度中心发送任务执行反馈信息;同步锁设置单元24用于在执行任务之前,根据任务中的同步锁标识,对所述任务设置同步锁,在完成所述任务后,移除所述同步锁。

其中,所述任务主机执行任务的过程如图11所示。

步骤s1a,从所述调度中心获取数量为下发量的任务,具体地,所述任务主机在完成其任务之后,向所述调度中心请求任务,调度中心根据下发算法,计算出对应该任务主机的下发量,将所述下发量的任务发送给所述任务主机。

步骤s2a,获得了这些任务之后,根据该任务中的同步锁标识,执行redis数据库中的setnx(key,value)命令为所述任务设置所述同步锁。

步骤s3a,依次执行所述任务。

步骤s4a,判断是否有任务完成,如果有任务完成,则执行步骤s5a;如果没有完成,则继续步骤s3a,执行所述任务。

步骤s5a,移除所述的同步锁。

步骤s6a,判断是否到达反馈周期,如果到了,则执行步骤s7a,如果没到,则继续执行任务。

步骤s7a,将任务执行情况打包反馈给调度任务中心。

步骤s8a,判断是否完成所有的任务,如果没完成,则继续执行任务;如果都完成了,所述结束本次任务的执行过程,开始新的任务获取、执行过程。

默认情况下,一个任务同一时刻只能由一个主机领取并执行,若周期内未执行完,下一个周期又调度和下发了该任务,就会出现同一个任务同一时刻多个主机执行的情况,故主机在执行任务前都会先设置锁,只有设置成功的才可以执行;设置不成功的就等待超时后直接返回。

本发明通过任务调度和任务下发的算法,有效地提高了任务执行效率和任务主机的利用率,均衡了任务主机的负载。并且,通过redis数据库实现同步锁,避免网络抖动产生的锁冲突,提升任务执行的稳定性。本发明对任务按组管理,可灵活定制调度计划,而且,本发明支持任务执行反馈机制,可监控任务掉、任务下发和任务执行的健康情况,并依据反馈回的信息灵活调整下发的任务量,动态地维持任务主机的负载均衡。

以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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