一种跨地域分布数据中心任务调度方法及系统

文档序号:28353705发布日期:2022-01-05 12:01阅读:357来源:国知局
一种跨地域分布数据中心任务调度方法及系统

1.本发明涉及任务调度技术领域,尤其涉及一种跨地域分布数据中心任务调度方法及系统。


背景技术:

2.任务调度就是根据任务提交的先后顺序、优先级、所需计算资源等条件制定合理的策略安排任务的执行,将任务合理地下发至执行单元上执行,旨在高效、充分利用现有计算资源完成任务。任务调度是跨地域分布式系统的关键能力之一。
3.随着计算机应用范围日益扩大,大数据时代的到来,分布式系统的进一步发展,如何将跨地域的多个分布式系统集成起来统一调度和管理成为亟需解决的问题。近年来,国内外工业界和学术界对跨地域分布式任务调度方法开展了大量的研究工作。这些工作主要涉及作业的任务调度、集群间数据传输、多集群的资源管理以及跨域作业的任务调度。目前,现有的跨地域分布式调度系统在以下方面存在限制:
4.第一、在进行简单任务调度时,过于繁杂的调度算法将产生较大开销。
5.第二、集群的调度日志及调度信息等收集困难。
6.第三、跨地域传输大量数据,需要耗费大量的通信时间,进而影响整个系统的执行效率。


技术实现要素:

7.本发明的目的在于提供一种面向跨地域的分布式任务调度方法和系统,采用优先队列管理待执行任务,充分考虑各地域集群的可用资源及任务数据传输消耗等因素,提高任务执行效率和整个系统的资源利用率。采用消息中间件完成调度系统与各地域集群的通信,通过合理的任务调度方法,高效利用各集群的资源完成任务,并支持故障恢复功能,增强了系统的容错性。同时,设置日志管理模块,记录任务运行日志,并提供日志查询功能。该方法能够实现将跨地域的多个集群集成起来统一调度和管理,高效完成任务的调度与执行。
8.为达到以上目的,本发明采用的技术方案是:一种跨地域分布数据中心任务调度系统,包括:
9.1)资源管理模块,用于实时监控系统下集群的工作状态和资源可用情况;
10.2)任务调度模块,用于保存用户提交的任务,对任务进行校验,并根据集群的资源可用情况完成任务的调度下发,任务调度模块包括:任务保存模块、下发校验模块和任务下发模块;
11.3)任务运行管理模块,用于任务运行期间的运行状态管理和日志管理,其包括状态管理模块、日志管理模块和结果反馈模块;
12.4)任务执行模块,用于执行已下发任务;
13.5)故障恢复模块,用于应对调度系统故障问题。
14.根据本发明的另一方面,提出一种跨地域分布数据中心任务调度方法,包括如下步骤:
15.步骤1、资源管理模块实时监控系统下集群的工作状态和资源可用情况;
16.步骤2、待运行任务被提交至调度管理模块,该模块根据资源管理模块实时监控的资源可用情况决定任务是否下发和执行;如资源可用,则通过下发校验子模块对任务进行校验,并通过任务下发子模块完成任务的调度下发;
17.步骤3、任务执行模块执行已下发任务;
18.步骤4、任务执行过程中,通过任务运行管理模块记录运行状态、运行日志和运行结果;
19.步骤5、当执行发生故障时,故障恢复模块应对调度系统故障问题。
20.有益效果:
21.本发明的系统和方法采用优先队列管理待执行任务,充分考虑各地域集群的可用资源及任务数据传输消耗等因素,提高任务执行效率和整个系统的资源利用率。采用消息中间件完成调度系统与各地域集群的通信,通过合理的任务调度方法,高效利用各集群的资源完成任务,并支持故障恢复功能,增强了系统的容错性。同时,设置日志管理模块,记录任务运行日志,并提供日志查询功能。该方法能够实现将跨地域的多个集群集成起来统一调度和管理,高效完成任务的调度与执行。
附图说明
22.图1为本发明的系统框架图;
23.图2为本发明的系统结构图;
24.图3为本发明的方法中任务下发至可用集群的流程图;
25.图4为本发明的方法中任务提交至任务队列的流程图;
26.图5为本发明的方法中集群执行已下发任务的流程图;
27.图6为本发明的方法中任务执行流程优化的示例图;
28.图7为本发明的方法中任务执行流程优化的示例图;
29.图8为本发明的方法中任务出队示意图;
30.图9为本发明的方法中任务状态转移图。
具体实施方式
31.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅为本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域的普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。
32.本发明提出的一种跨域分布式数据中心调度系统,整体架构如图1所示,主要包括以下模块:
33.(1)资源管理模块
34.资源管理模块主要功能是:实时监控系统下集群的工作状态和资源可用情况,例如:集群的cpu负载、i/o速率、可用带宽、硬盘容量和内存消耗等情况。
35.集群工作状态,分为可用和不可用,通过心跳信号是否正常判断集群是否可用。
36.集群资源可用情况,基于消息中间件完成调度系统和各地域集群的通信,并采用资源可用情况表记录各地域集群的资源可用情况。
37.(2)任务调度模块
38.任务调度模块的主要功能是:保存用户提交的任务,对任务进行常规校验,并根据集群的资源可用情况完成任务的调度下发。该模块实现的主要功能包括:任务保存、下发校验和任务下发等。
39.任务保存:为了合理、全面的调度任务,避免某些任务因为优先级低等原因,而无法执行,根据本发明的一个实施例,提出了一种基于优先队列及自动定义执行优先值的任务保存方法。该方法包括以下步骤:
40.步骤2
‑1‑
1、计算任务的执行优先值v,v的值越大,执行顺序越靠前。v综合考虑任务优先级、任务等待时间及任务复杂度等因素,其计算公式如下。
41.v=pl+w0×
t
w
+w1×
k/tc
42.其中,pl表示任务优先级,pl∈{1,2,3,4,5};t
w
表示任务等待时间系数,w0、w1为权重参数且满足w0+w1=1;k为常量值,tc表示任务复杂度,根据如下公式计算,其中d表示任务所需数据量,r表示任务所需资源,a、b是常量值。
43.tc=a
×
d+b
×
r
44.步骤2
‑1‑
2、将任务提交到任务队列,任务队列采用优先队列存储任务,每当有新任务提交至优先队列时,都要进行一次上滤操作,保证优先值最高的任务位于队首。
45.支持对已提交任务的优先级进行修改,并进行相应的上滤操作即可。
46.支持对已提交任务的任务周期进行修改。其中任务周期类型包括单次运行和周期运行,这里采用定时任务框架管理任务,当周期任务时间周期触发时,自动提交任务到任务队列。
47.下发校验:负责在任务下发前对任务配置进行校验,重点对任务所需资源及数据进行校验,若校验不通过则放弃任务,更新任务状态为失败并将错误原因记录到日志文件。
48.任务下发:为了合理利用各地域集群资源,降低数据传输消耗,高效执行任务,根据本发明的一个实施例,提出一种基于集群资源、以下发任务为主的任务下发方法,该方法包含以下几个步骤:
49.步骤2
‑2‑
1、根据任务所需资源,结合各地域集群可用资源表,对各地域集群进行过滤,满足当前任务所需资源的集群放入候选集,进行第2
‑2‑
2步操作,若没有集群满足则等待一定的时间,再将该任务重新入队,保持其执行优先值不变。
50.步骤2
‑2‑
2、如果存在多个集群满足要求,则根据任务运行所需数据是否在当前集群存储,如有则候选集只保留存储该任务所需数据的集群。
51.步骤2
‑2‑
3、从候选集中选取任务执行集群,采用负载均衡的策略,根据集群的资源利用率确定集群,选择资源利用率低的作为任务执行集群。
52.步骤2
‑2‑
4、下发任务至执行集群,集群返回接收任务的确认信息。
53.(3)任务运行管理模块
54.任务运行管理模块主要实现任务的状态管理、日志管理和结果反馈等功能。
55.状态管理:负责记录任务运行状态、运行结果、运行进度等信息,并提供任务暂停、
恢复、停止等功能。
56.日志管理:负责记录任务运行日志,并提供日志查询功能。
57.结果反馈:负责将任务执行结果反馈到任务调度系统。
58.(4)任务执行模块
59.任务执行模块主要功能是高效完成已下发任务,并且支持多个任务并发执行。任务执行包括以下几个步骤:
60.步骤4

1、任务分解生成子任务拓扑图。根据任务模型,首先将任务分解成子任务集合,然后根据子任务之间的执行依赖关系,形成一个dag(有向无环图),即任务运行拓扑图。
61.步骤4

2、执行流程优化。根据不同情况进行执行运行流程优化,如果多个子任务之间没有依赖关系,并且前驱都已经执行完毕,则采用并行运行的模式,如图6所示,子任务a执行完毕后,子任务b和子任务c可以并行执行。如图7所示,子任务a执行完毕后,子任务b和子任务c串行执行(记为x),子任务d和子任务e串行执行(记为y),那么x和y并行执行,等到x和y均执行完毕再执行子任务f。
62.步骤4

3、执行任务,遍历子任务拓扑图,首先执行没有依赖的子任务,每当有子任务运行结束后,更新子任务运行状态,进一步更新任务运行拓扑图,将已完成子任务从图中删除,并更新其后继子任务的依赖项,直到所有子任务均执行完毕。
63.步骤4

4、记录任务状态和任务结果等信息。
64.(5)故障恢复模块
65.故障恢复模块提供一种基于备用调度节点的故障恢复方法,提高调度系统的容错性,为用户提供更好的使用体验。
66.根据本发明的又一实施例,提出一种跨地域分布数据中心任务调度方法,具体步骤如下:
67.步骤s0、资源管理模块,维护集群工作状态表和各地域集群资源可用表,其中集群工作状态表记录各地域是否可用,集群资源可用表记录集群可用资源以及资源总量。
68.本发明采用rabbitmq消息队列实现调度系统和各地域集群的通信,根据心跳信号来判断各地域集群是否可用,若心跳信号正常则集群可用,反之则不可用;集群资源可用信息采用主动推送的方式进行更新,每当各地域集群可用资源发生变化时,集群都会主动的向任务调度系统发送变更信息。其中资源包括:cpu资源、内存资源、硬盘资源和数据传输带宽资源等。
69.步骤s1、将用户提交的任务保存到任务队列,验证任务、根据调度方法下发至最优执行集群,包括以下步骤:
70.步骤s1.1将任务保存至任务保存模块的任务队列,该模块接收用户提交的任务,计算出任务的执行优先值,并根据任务的执行优先值插入队列,包括以下步骤:
71.步骤s1.1.1、计算任务的执行优先值。当有新任务提交到任务调度模块时,首先根据任务优先级pl,任务等待运行时间系数t
w
和任务的复杂度tc,计算出任务的执行优先值。这里w0和w1均取值0.5,pl∈{1,2,3,4,5},t
w
∈{0,1,2,3,4,5},其计算公式如下,t为任务提交后等待运行的时间,单位为分钟,k取值1。
72.v=pl+w0×
t
w
+w1×
k/tc
[0073][0074]
tc是任务复杂度,根据如下公式计算,其中d表示任务所需数据量,r表示任务所需资源,这里a、b均取值0.5,d是归一化后的数据量,r是归一化后的任务所需
[0075]
资源
[0076]
tc=a
×
d+b
×
r
[0077]
步骤s1.1.2、任务提交到任务队列。这里任务队列采用优先队列的数据结构,任务执行优先值最大的任务位于队首,包括任务入队和出队两种操作:
[0078]
任务入队,首先将任务插入队尾,然后根据任务的执行优先值进行上滤操作,直到满足优先队列的规则;
[0079]
任务出队,则将队首任务出队,从当前位置开始进行下滤操作,直到满足优先队列的规则,如图8所示,任务a出队,按照优先队列规则,那么任务c就会上升到a的位置,同理,此时g会上升到c的位置,以此类推,直到达到叶子结点。
[0080]
任务队列支持对已提交任务的优先级进行修改,修改任务优先级,那么任务的执行优先值就会发生改变,然后对整个任务队列进行构建优先队列的操作即可。
[0081]
任务队列同时支持对已提交任务的任务周期进行修改。其中任务周期类型包括单次运行和周期运行,本发明调度系统采用定时任务框架quartz管理任务,当周期任务时间周期触发时,自动将任务提交到任务队列。图3为本发明的方法中任务下发至可用集群的流程图;图4为本发明的方法中任务提交至任务队列的流程图;图5为本发明的方法中集群执行已下发任务的流程图;
[0082]
步骤s1.2、在任务下发前对任务配置进行校验,重点对任务所需资源及数据进行校验,若校验不通过则放弃任务,更新任务状态为失败并将错误原因记录到日志文件,比如:某任务task1所需资源超过集群所拥有的总资源,那么该任务的资源配置错误,采用任务运行管理模块的状态管理功能,标记上述任务状态为失败,并且将失败原因记录到日志文件,便于后续排查问题。
[0083]
步骤s1.3将任务队列中的任务下发至可用地域的集群上,从任务队列中取出执行优先值最高的任务,根据任务所需资源、各地域集群可用资源表、任务数据储存地域及各地域集群资源利用率,选择最优的集群负责执行任务,包括以下步骤:
[0084]
步骤1.3.1、根据任务所需资源,结合各地域集群可用资源表,对各地域集群进行过滤,满足当前任务所需资源的集群放入候选集,进行第2步操作,若没有集群满足则等待一定的时间,再将该任务重新入队,并保持其执行优先值不变。
[0085]
步骤1.3.2、如果存在多个集群满足要求,则根据任务运行所需数据是否在当前集群存储,如有则候选集只保留存储该任务所需数据的集群,反之,则不对候选集进行操作。
[0086]
步骤1.3.3、从候选集中选取任务下发集群,采用负载均衡的策略,根据集群的资源利用率选取最优集群,在同等条件下选择资源利用率最低的集群作为任务下发集群。
[0087]
步骤1.3.4、下发任务至执行集群,并且监听集群返回接收任务的确认信息,若等待时间超过t
h
则重新下发任务。
[0088][0089]
其中t
l
为设定的等待时间下限,t
i
为之前任务确认时间,这里t
l
设置为2分钟。
[0090]
步骤s2、执行模块执行已下发任务,将任务分解生成子任务拓扑图,进行执行流程优化,参考图5对集群执行已下发任务进行详细描述,分为以下几步:
[0091]
步骤s2.1、任务分解生成子任务拓扑图。根据任务模型,首先将任务分解成子任务集合,然后根据子任务之间的执行依赖关系,形成一个有向无环图,即任务运行拓扑图。
[0092]
步骤s2.2、执行流程优化。根据不同情况进行执行运行流程优化,如果多个子任务之间没有依赖关系,并且前驱都已经执行完毕,则采用并行运行的模式,如图6所示,子任务a执行完毕后,子任务b和子任务c可以并行执行。如图7所示,子任务a执行完毕后,子任务b和子任务c串行执行(记为x),子任务d和子任务e串行执行(记为y),那么x和y并行执行,等到x和y均执行完毕再执行子任务f。
[0093]
步骤s2.3、执行任务,遍历子任务拓扑图,首先执行没有依赖的子任务(即图中没有前驱节点的节点),每当有子任务运行结束后,更新子任务运行状态,进一步更新任务运行拓扑图,将已完成子任务从图中删除,并更新其后继子任务的依赖项。
[0094]
步骤s2.4、继续执行没有依赖的子任务,并依据步骤s2.3更新任务运行拓扑图,直到所有任务都执行完毕。
[0095]
步骤s2.5、通过任务运行管理模块记录任务的运行状态和运行结果等信息。
[0096]
其中,所述任务运行管理模块:包括状态管理模块、日志管理模块和结果反馈模块。
[0097]
所述的状态管理模块,用于记录任务运行状态、运行进度、任务起止时间等信息,其中任务状态包括:就绪态(waiting)、运行态(running)、暂停态(pause)、停止态(stop)、成功态(finish)、失败态(failure),其状态转换过程如图9所示:
[0098]
就绪态——>运行态:任务从任务队列里出队,下发至集群开始执行;
[0099]
运行态——>成功态:任务执行成功,释放所占资源;
[0100]
运行态——>失败态:任务执行失败,释放所占资源;
[0101]
运行态——>停止态:任务停止,释放所占资源;
[0102]
运行态——>暂停态:任务暂停,保存运行上下文信息,便于后续任务恢复;
[0103]
暂停态——>运行态:根据任务的运行上下文信息,恢复运行。
[0104]
日志管理模块:提供日志查询功能,支持根据时间、任务id单一条件查询和多条件相结合的方式进行查询。
[0105]
所述的故障恢复模块,提供了故障恢复机制,通过监听节点实时监控任务调度系统的心跳信号是否正常运行,若心跳信号异常,则判定调度系统故障,立刻采用备用节点作为任务调度系统,并把任务队列、任务状态等信息同步到上述节点。
[0106]
上述调度系统需要设定定时任务,将任务队列、运行状态等信息持久化到硬盘,方便后续故障恢复时的关键数据同步。
[0107]
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,且应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些
变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1