一种任务执行方法、装置以及设备制造方法及图纸

技术编号:37983397 阅读:8 留言:0更新日期:2023-06-30 09:58
本说明书实施例公开了一种任务执行方法、装置以及设备,属于分布式技术领域,应用于集群中的节点。方案包括:确定维护任务状态和任务子步骤状态的数据库,任务状态表示任务的执行相关状态,任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;从数据库中获取任务状态;当任务状态为执行中时,判断任务的当前执行节点是否可用,当前执行节点属于集群;若当前执行节点不可用时,将自己更新为任务的当前执行节点,并保持任务状态为执行中;获取任务的下一个子步骤;将下一个子步骤的状态更新为执行中,并执行下一个子步骤。能够解决长任务的执行会随着平台的重启操作而丢失任务状态的问题,能够更为可靠和高效地执行任务。行任务。行任务。

【技术实现步骤摘要】
一种任务执行方法、装置以及设备


[0001]本说明书涉及分布式
,尤其涉及一种任务执行方法、装置以及设备。

技术介绍

[0002]随着互联网技术和计算能力的迅速发展,应用为用户服务的智能型和高效性也极大提升,而背后的服务平台也面临着较大的任务执行压力,尤其是一些计算量大很耗时的任务,将这类任务称为长任务。
[0003]在实际应用中,长任务的执行会随着平台的重启操作而丢失任务状态,由此导致长任务难以顺利按时执行完成,会额外浪费大量计算资源重新执行长任务。
[0004]基于此,需要更为可靠和高效的任务执行方案。

技术实现思路

[0005]本说明书一个或多个实施例提供一种任务执行方法、装置、设备以及存储介质,用以解决如下技术问题:需要更为可靠和高效的任务执行方案。
[0006]为解决上述技术问题,本说明书一个或多个实施例是这样实现的:本说明书一个或多个实施例提供的一种任务执行方法,应用于集群中的节点,所述方法包括:确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;从所述数据库中获取所述任务状态;当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;获取所述任务的下一个子步骤;将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
[0007]本说明书一个或多个实施例提供的一种任务执行装置,应用于集群中的节点,所述装置包括:状态数据库确定模块,确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;任务状态获取模块,从所述数据库中获取所述任务状态;节点可用性判断模块,当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;任务接续执行模块,若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
[0008]本说明书一个或多个实施例提供的一种任务执行设备,应用于集群中的节点,所述设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;从所述数据库中获取所述任务状态;当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;获取所述任务的下一个子步骤;将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
[0009]本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;从所述数据库中获取所述任务状态;当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;获取所述任务的下一个子步骤;将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
[0010]本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:将任务拆分为了多个子步骤,并将任务的任务状态和任务子步骤的子步骤状态存入数据库,并响应于各任务执行节点的任务执行情况,进行更新维护,从而,即使平台发生重启导致当前的一些任务执行节点任务执行中断,其他尚可用的节点仍然能够根据数据库中的任务状态和子步骤状态,及时追踪到任务中断的具体的子步骤,并从断点继续地将该子步骤继续执行完成,并且继续执行后面的子步骤,以尝试将整个任务执行完毕,从而有助于更可靠更高效地执行任务,尤其是执行长任务更能体现出优势。
附图说明
[0011]为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是
本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0012]图1为本说明书一个或多个实施例提供的一种任务执行方法的流程示意图;图2为本说明书一个或多个实施例提供的一种实际应用场景下,图1的方法的一种具体实施方案的流程示意图;图3为本说明书一个或多个实施例提供的在图平台的场景下,基于拓扑匹配的一种图数据长任务的执行方案的示意图;图4为本说明书一个或多个实施例提供的一种任务执行装置的结构示意图;图5为本说明书一个或多个实施例提供的一种任务执行设备的结构示意图。
具体实施方式
[0013]本说明书实施例提供一种任务执行方法、装置、设备以及存储介质。
[0014]为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0015]
技术介绍
中提到了实际应用中,平台执行长任务所遇到的问题。更直观地,以基于图数据(由图节点和图边及相应属性等数据构成)的图平台场景为例具体说明,在该场景下,任务执行需求频繁且对性能要求较高。
[0016]对于具有大规模用户群体的应用而言,其所使用到的图数据库的数据量一般有几十甚至上百T的规模,针对这样的图数据库的诸如点边统计、大点统计,或大规模图数据压缩等任务就会很耗时,任务完成时间往往是小时级别的,从而,对图平台而言成为了比较有代表性的长任务。其中:点边统计一般指,全图遍历,统计图里面,每个点、边类型拥有的数据量;大点统计一般指,全图遍历,统计图里面,每个点的出度,入度数量做排序,可以定义大于设定阈值(比如,1亿)出入度为大点;大规模图数据压缩,一般指全图遍历,对图数据做压缩处理,优化空间。
[0017]在申请人之前的方案中,图平台在发起一个长任务比如点边统计任务后,然后要一直轮训,直到该点边统计任务执行完成。这个过程都是放在线程中操作的,如果在轮训的过程中,图平台做了重启操作,则线程持有的任务状态会丢失,该任务无本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种任务执行方法,应用于集群中的节点,所述方法包括:确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;从所述数据库中获取所述任务状态;当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;获取所述任务的下一个子步骤;将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。2.如权利要求1所述的方法,所述从所述数据库中获取所述任务状态之后,所述方法还包括:当所述任务状态为等待执行时,将自己更新为所述任务的当前执行节点,并更新所述任务状态为执行中;获取所述任务的下一个子步骤;将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。3.如权利要求1所述的方法,还包括:若所述子步骤执行失败,则更新所述子步骤状态为失败;若所述子步骤执行成功,则更新所述子步骤状态为成功;在所述子步骤为所述任务的最后一个子步骤的情况下,更新所述任务的任务状态为成功;在所述子步骤不为所述任务的最后一个子步骤的情况下,继续获取所述任务的下一个子步骤进行处理。4.如权利要求1或2所述的方法,所述将自己更新为所述任务的当前执行节点之后,所述方法还包括:从所述数据库中,按照所述任务的子步骤之间的顺序,依次查找对应的子步骤状态;若当前查找到的所述子步骤状态为失败,则更新所述任务的任务状态为失败;若当前查找到的所述子步骤状态为成功,则继续追踪下一个子步骤;若当前查找到的所述子步骤状态为执行中,则追踪结束,继续执行该子步骤状态对应的子步骤。5.如权利要求2所述的方法,所述将自己更新为所述任务的当前执行节点,并更新所述任务状态为执行中之后,所述方法还包括:在自己仍为所述任务的当前执行节点的期间,定时上报心跳信号,以使所述心跳信号的上报时间被记录于数据库中;所述若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点之前,所述方法还包括:通过所述数据库确定所述任务状态对应的任务的当前执行节点,及其最近一次上报心跳信号的上报时间;判断所述最近一次上报心跳信号的上报时间距离当前时间是否已经超时;若是,则确定所述当前执行节点不可用。
6.如权利要求2所述的方法,还包括:定时扫描自己的线程池空闲的线程数量;若有空闲的线程,则通过所述空闲的线程扫描所述数据库中的所述任务状态,以确定状态为等待执行或执行中的任务。7.如权利要求1所述的方法,所述任务和所述子步骤也保存于所述数据库中,与对应的执行相关状态关联,以便执行;所述将自己更新为所述任务的当前执行节点,具体包括:在所述数据库中,将自己的标识与所述任务或所述子步骤相关联,以表示自己为所述任务的当前执行节点。8.如权利要求1~3任一项所述的方法,所述任务为图平台针对图数据库的长任务;所述长任务包括以下至少一种:点边统计、大点统计、大规模图数据压缩。9.如权利要求1所述的方法,所述任务为图平台针对图数据库的任务;所述将自己更新为所述任务的当前执行节点之前,所述方法还包括:获取通过将所述集群的节点拓扑图与所述任务在所述图数据库中涉及的图数据的拓扑图进行匹配得到的相似区域分布图;判断自己是否处于所述相似区域分布图中,且得到所述判断的结果为是。10.如权利要求9所述的方法,所述任务拆分出的多个子步骤中,包含针对所述涉及的图数据的指定局部区域进行处理的区域性子步骤;所述执行所述下一个子步骤,具体包括:执行所述子步骤状态为执行中,且在所述相似区域分布图中与自己匹配的所述区域性子步骤。11.一种任务执行装置,应用于集群中的节点,所述装置包括:状态数据库确定模块,确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;任务状态获取模块,从所述数据库中获取所述任务状态;节点可用性判断模块,当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;任务接续执行模块,若所述当前执行节点不可用时,将...

【专利技术属性】
技术研发人员:袁小花周猛王牧群
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:

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

1