任务执行方法及装置、电子设备、计算机可读存储介质制造方法及图纸

技术编号:34728523 阅读:14 留言:0更新日期:2022-08-31 18:16
本公开关于一种任务执行方法及装置、电子设备、计算机可读存储介质。该任务执行方法包括:从任务队列中获取待执行任务;获取状态队列中距离当前时间未超过预定时间的心跳时间的数量,其中,状态队列中存储有已经开始执行的任务的心跳时间且心跳时间根据任务的执行情况周期性更新;在心跳时间的数量小于全局并行执行的最大任务数量的情况下,调用空闲的下游资源执行待执行任务。游资源执行待执行任务。游资源执行待执行任务。

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


[0001]本公开涉及计算机领域,尤其涉及一种任务执行方法及装置、电子设备、计算机可读存储介质。

技术介绍

[0002]在后端服务中,往往出现生产能力和消费能力不匹配的情况,比如平台要在视频上传完成之后进行视频转码,以便提供更流畅的播放体验,这时候上传就是生产者,而视频转码就是消费者。一般一个分钟级别的视频在秒级就可以上传完成,而视频上传之后的视频转码往往需要分钟甚至是小时级别的时间才能完成,这时候生产者和消费者的能力处于不同的级别,为了避免由于转码能力跟不上上传能力导致用户上传视频受限制,后端服务一般会使用任务队列来实现生产和消费的解耦,在这个场景下,作为生产者,会在视频上传完成之后会把视频转码的需求(即针对上传的视频的转码任务)放入任务队列中(如Kafka消息队列)。另外,再部署一个实现视频转码的消费服务(即消费者)来处理任务队列的内容,达到解耦的目的,解决能力不匹配问题。
[0003]目前部署多台用于处理任务的服务器(对应消费者角色)时,针对每个服务器设置相同的并发控制数并预先平均分配好下游资源。但是,这样一方面容易存在空闲的服务器,即存在不处理任务的服务器,该服务器分配到的下游资源则被空置了,使得下游资源无法被充分利用;另一方面,当某台服务器异常退出时,其他服务器器并不知晓,异常退出的服务器的下游资源得不到释放,同样导致下游资源无法被充分利用,从而导致任务排队时间增加,用户体验变差,成本增加。

技术实现思路

[0004]本公开提供一种任务执行方法及装置、电子设备、计算机可读存储介质,以至少解决相关技术导致下游资源无法被充分利用的问题。
[0005]根据本公开实施例的第一方面,提供一种任务执行方法,包括:从任务队列中获取待执行任务;获取状态队列中距离当前时间未超过预定时间的心跳时间的数量,其中,状态队列中存储有已经开始执行的任务的心跳时间且心跳时间根据任务的执行情况周期性更新;在心跳时间的数量小于全局并行执行的最大任务数量的情况下,调用空闲的下游资源执行待执行任务。
[0006]可选地,在心跳时间的数量等于最大任务数量的情况下,继续获取状态队列中距离当前时间未超过预定时间的心跳时间的数量,直到心跳时间的数量小于最大任务数量,调用空闲的下游资源执行待执行任务。
[0007]可选地,在获取状态队列中距离当前时间未超过预定时间的心跳时间的数量之前,还包括:周期性的查询已经开始执行的任务的执行情况;如果已经开始执行的任务处于正在执行的情况,则更新已经开始执行的任务在状态队列中的心跳时间;如果已经开始执行的任务不处于正在执行的情况,则停止更新已经开始执行的任务在状态队列中的心跳时
间。
[0008]可选地,在调用空闲的下游资源执行待执行任务之后,还包括:
[0009]将下游资源开始执行待执行任务的时间作为待执行任务的心跳时间加入状态队列。
[0010]可选地,在调用空闲的下游资源执行待执行任务之后,还包括:在待执行任务执行结束后,删除状态队列中待执行任务的心跳时间。
[0011]可选地,在从任务队列中获取待执行任务之前,还包括:基于上传的数据,确定数据对应的待执行任务;将数据对应的待执行任务发送到任务队列中。
[0012]根据本公开实施例的第二方面,提供一种任务执行装置,包括:任务获取单元,被配置为从任务队列中获取待执行任务;任务数量获取单元,被配置为获取状态队列中距离当前时间未超过预定时间的心跳时间的数量,其中,状态队列中存储有已经开始执行的任务的心跳时间且心跳时间根据任务的执行情况周期性更新;执行单元,被配置为在心跳时间的数量小于全局并行执行的最大任务数量的情况下,调用空闲的下游资源执行待执行任务。
[0013]可选地,执行单元,还被配置为在心跳时间的数量等于最大任务数量的情况下,继续获取状态队列中距离当前时间未超过预定时间的心跳时间的数量,直到心跳时间的数量小于最大任务数量,调用空闲的下游资源执行待执行任务。
[0014]可选地,任务数量获取单元,还被配置为在获取状态队列中距离当前时间未超过预定时间的心跳时间的数量之前,周期性地查询已经开始执行的任务的执行情况;如果已经开始执行的任务处于正在执行的情况,则更新已经开始执行的任务在状态队列中的心跳时间;如果已经开始执行的任务不处于正在执行的情况,则停止更新已经开始执行的任务在状态队列中的心跳时间。
[0015]可选地,执行单元,还被配置为在调用空闲的下游资源执行待执行任务之后,将下游资源开始执行待执行任务的时间作为待执行任务的心跳时间,加入状态队列。
[0016]可选地,执行单元,还被配置为在调用空闲的下游资源执行待执行任务之后,在待执行任务执行结束后,删除状态队列中待执行任务的心跳时间。
[0017]可选地,任务获取单元,被配置为在从任务队列中获取待执行任务之前,基于上传的数据,确定数据对应的待执行任务;将数据对应的待执行任务发送到任务队列中。
[0018]根据本公开实施例的第三方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现根据本公开的任务执行方法。
[0019]根据本公开实施例的第四方面,提供了一种计算机可读存储介质,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行如上根据本公开的任务执行方法。
[0020]根据本公开实施例的第五方面,提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行时实现根据本公开的任务执行方法。
[0021]本公开的实施例提供的技术方案至少带来以下有益效果:
[0022]根据本公开的任务执行方法及装置、电子设备、计算机可读存储介质,增设状态队列来存储已经开始执行的任务的心跳时间,且心跳时间根据任务的执行情况周期性更新,
从而可以从状态队列中获取全局正在执行的有效任务数,基于该有效任务数和全局并行处理的最大任务数量来确定是否有空闲的下游资源可用来执行待执行任务,使得可以充分利用下游资源,提高下游资源利用率,减少任务排队时间,降低用户等待时间,提升了用户体验度。因此,本公开解决了相关技术导致下游资源无法被充分利用的问题。
[0023]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
[0024]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
[0025]图1是示出根据本公开的示例性实施例的任务执行方法的实施场景示意图;
[0026]图2是根据一示例性实施例示出的一种任务执行方法的流程图;
[0027]图3是根据一示例性实施例示出的一种任务执行方法的整体流程示意图;
[0028]图4是根据一示例性实施例示出的一种任务执行装置的框图;
[0029]图5本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种任务执行方法,其特征在于,包括:从任务队列中获取待执行任务;获取状态队列中距离当前时间未超过预定时间的心跳时间的数量,其中,所述状态队列中存储有已经开始执行的任务的心跳时间且所述心跳时间根据任务的执行情况周期性更新;在所述心跳时间的数量小于全局并行执行的最大任务数量的情况下,调用空闲的下游资源执行所述待执行任务。2.如权利要求1所述的任务执行方法,其特征在于,还包括:在所述心跳时间的数量等于所述最大任务数量的情况下,继续获取状态队列中距离当前时间未超过所述预定时间的心跳时间的数量,直到所述心跳时间的数量小于所述最大任务数量,调用空闲的下游资源执行所述待执行任务。3.如权利要求1或2所述的任务执行方法,其特征在于,在获取状态队列中距离当前时间未超过预定时间的心跳时间的数量之前,还包括:周期性地查询已经开始执行的任务的执行情况;如果所述已经开始执行的任务处于正在执行的情况,则更新所述已经开始执行的任务在状态队列中的心跳时间;如果所述已经开始执行的任务不处于正在执行的情况,则停止更新所述已经开始执行的任务在状态队列中的心跳时间。4.如权利要求1或2所述的任务执行方法,其特征在于,在调用空闲的下游资源执行所述待执行任务之后,还包括:将所述下游资源开始执行所述待执行任务的时间作为所述待执行任务的心跳时间,加入所述状态队列。5.如权利要求4所述的任务执行方法,其特征在于,...

【专利技术属性】
技术研发人员:黄智勇
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:

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

1