任务调度方法技术

技术编号:39416864 阅读:7 留言:0更新日期:2023-11-19 16:07
本申请属于数据处理技术领域,涉及一种任务调度方法

【技术实现步骤摘要】
任务调度方法、装置、计算机存储介质及电子设备


[0001]本申请涉及云计算
,具体而言,涉及一种任务调度方法

任务调度装置

计算机存储介质及电子设备


技术介绍

[0002]随着操作系统的逐步发展,越来越多的任务调度系统应运而生,由于所遇到的场景基本都是分布式场景,因此需要一套在分布式环境下高性能

高可用

可扩展的分布式任务调度系统

[0003]目前经常使用的分布式任务调度系统有开源框架
Airflow
等等,
Airflow
是基于有向无环图的任务调度系统,支持流程定义
python
脚本执行,但是其只支持单点部署,并且不能灵活配置回滚函数,进而无法保证任务的原子性


技术实现思路

[0004]本申请的实施例提供了一种任务调度方法

任务调度装置

计算机存储介质及电子设备,进而至少在一定程度上可以灵活配置回滚函数,确保批量任务执行的原子性,并且还可以将无法处理的任务回滚后重新插入到任务队列中等待其它节点消费并执行,保证了任务的顺利执行,提高了分布式任务调度系统的可靠性

[0005]本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得

[0006]第一方面,本申请的实施例提供了一种任务调度方法,应用于分布式任务调度系统中的节点,所述分布式任务调度系统中注册有与所述节点对应的子任务版本号集;所述方法包括:从任务队列中获取任务,并顺序执行所述任务所包含的多级子任务,其中各级所述子任务具有不同的版本号;将所述子任务的版本号与所述子任务版本号集进行比对;当所述子任务版本号集中不包含目标子任务的版本号时,倒序回滚已执行子任务,并将回滚成功后的所述任务重新插入至所述任务队列中

[0007]第二方面,本申请的实施例提供了一种任务调度装置,配置于分布式任务调度系统中的节点,所述分布式任务调度系统中注册有与所述节点对应的子任务版本号集;所述装置包括:任务执行模块,用于从任务队列中获取任务,并顺序执行所述任务所包含的多级子任务,其中各级所述子任务具有不同的版本号;比对模块,用于将所述子任务的版本号与所述子任务版本号集进行比对;回滚模块,用于当所述子任务版本号集中不包含目标子任务的版本号时,倒序回滚已执行子任务,并将回滚成功后的所述任务重新插入至所述任务队列中

[0008]第三方面,本申请的实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得所述计算机执行如上述实施例所述的任务调度方法

[0009]第四方面,本申请的实施例提供了一种电子设备,包括处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器用于调用所述可执行指令来实现如上述
实施例所述的任务调度方法

[0010]第五方面,本申请的实施例提供了一种计算机程序产品,当所述指令在计算机上运行时,使得所述计算机执行如上述实施例所述的任务调度方法

[0011]本申请的实施例所提供的任务调度方法,分布式任务调度系统中的节点能够从任务队列中获取任务,并顺序执行任务中所包含的多级子任务,其中各级子任务具有不同的版本号,在执行任务时,可以将任务中子任务的版本号与节点对应的子任务版本号集进行比对,当子任务版本号集中不包含目标子任务的版本号时,对已执行子任务进行倒序回滚,并将回滚成功后的任务重新插入至任务队列中,这样一方面可以通过所配置的回滚函数保证批量任务执行的原子性,即保证了所有完成的任务都是被成功执行的,另一方面可以将无法执行的任务回滚至初始状态后重新插入至任务队列,保证了所有任务都可以被顺利执行,提高了分布式任务调度系统的可靠性

[0012]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请

附图说明
[0013]图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图;
[0014]图2示意性地示出了一个实施例中的任务调度方法的流程示意图;
[0015]图3示意性地示出了一个实施例中的分布式任务调度系统的架构示意图;
[0016]图4示意性地示出了一个实施例中的分布式任务调度系统中进行任务调度的交互流程图;
[0017]图5示意性地示出了一个实施例中的任务的组成结构示意图;
[0018]图6示意性地示出了一个实施例中的节点版本升级后如何执行任务的流程示意图;
[0019]图7示意性地示出了一个实施例中的接替与宕机的节点对应的任务的流程示意图;
[0020]图8示意性地示出了一个实施例中的通过更新节点接管与所有宕机的节点对应的任务的流程示意图;
[0021]图9示意性地示出了一个实施例中的通过更新节点读取宕机的节点所对应的任务的流程示意图;
[0022]图
10
示意性地示出了一个实施例中的任务调度装置的框图;
[0023]图
11
示意性地示出了一个实施例中的电子设备的计算机系统的结构示意图

具体实施方式
[0024]现在将参考附图更全面地描述示例实施方式

然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员

[0025]此外,所描述的特征

结构或特性可以以任何合适的方式结合在一个或更多实施例中

在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解

然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,
或者可以采用其它的方法

组元

装置

步骤等

在其它情况下,不详细示出或描述公知方法

装置

实现或者操作以避免模糊本申请的各方面

[0026]附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应

即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和
/
或处理器装置和
/
或微控制器装置中实现这些功能实体

[0027]附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作
/
步骤,也不是必须按所描述的顺序执行

例如,有的操作
/
步骤还可以分解,而有的操作
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种任务调度方法,应用于分布式任务调度系统中的节点,所述分布式任务调度系统中注册有与所述节点对应的子任务版本号集;其特征在于,所述方法包括:从任务队列中获取任务,并顺序执行所述任务所包含的多级子任务,其中各级所述子任务具有不同的版本号;将所述子任务的版本号与所述子任务版本号集进行比对;当所述子任务版本号集中不包含目标子任务的版本号时,倒序回滚已执行子任务,并将回滚成功后的所述任务重新插入至所述任务队列中
。2.
根据权利要求1所述的方法,其特征在于,所述任务包含
N
级子任务;所述顺序执行所述任务所包含的多级子任务,包括:调用与第一级子任务对应的任务执行函数以执行所述第一级子任务,在所述第一级子任务执行成功后,调用与第二级子任务对应的任务执行函数以执行所述第二级子任务;在所述第二级子任务执行成功后,重复上述流程,直至第
N
级子任务执行成功,其中,
N
为大于1的正整数
。3.
根据权利要求1所述的方法,其特征在于,所述目标子任务为所述任务中的第
n
级子任务,其中,
n<N

N
为所述任务包含子任务的总量,并且
n、N
均为正整数;所述倒序回滚已执行子任务,包括:调用与第
(n

i)
级子任务对应的回滚函数以将所述第
(n

i)
级子任务回滚至初始状态;重复上述流程,直至第一级子任务回滚至初始状态,其中
i

1,2,3


(n

1)。4.
根据权利要求1所述的方法,其特征在于,各级所述子任务对应的版本号随所述子任务等级的增加而增加
。5.
根据权利要求1所述的方法,其特征在于,所述将所述子任务的版本号与所述子任务版本号集进行比对,包括:当执行所述目标子任务时,获取与所述目标子任务对应的版本号;将所述目标子任务的版本号与所述子任务版本号集中的版本号进行对比;或者获取所有所述子任务的版本号,并将所述子任务的版本号分别与所述子任务版本号集中的版本号进行对比
。6.
根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述子任务版本号集中不包含所述目标子任务的版本号时,倒序回滚已执行子任务,并基于远程过程调用协议将回滚成功后的所述任务推送至目标节点;其中,所述目标节点对应的子任务版本号集包含所述任务中各子任务的版本号
。7.
根据权利要求1所述的方法,其特征在于,在将回滚成功后的所述任务重新插入至所述任务队列中时,所述方法还包括:记录所述目标任务的流转次数,并将所述流转次数与预设阈值进行对比;当所述流转次数等于所述预设阈值时,丢弃所述目标任务并告警
。8.
根据权利要求1所述的方法,其...

【专利技术属性】
技术研发人员:刘国旭
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1