定时任务调度方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:32637689 阅读:25 留言:0更新日期:2022-03-12 18:13
本申请涉及一种定时任务调度方法、装置、计算机设备、存储介质以及计算机程序产品,其中,方法包括:获取定时任务的事件报文;根据所述事件报文携带的业务数据确定分层时间轮粒度,获取与所述分层时间轮粒度对应的延时队列,所述延时队列与死信交换器绑定;将所述事件报文对应的事件注册至所述延时队列,得到有效延时队列;基于有效延时队列以及绑定的死信交换器,采用分层时间轮策略消费所述事件;当满足事件触发条件时,将所述事件写入任务执行队列、以执行所述定时任务。整个过程中,基于延时队列以及死信交换器可以实现消息的延时消费,并且采用分层时间轮策略来实现消费调度,有效避免消息拥堵,实现高效的定时任务调度。实现高效的定时任务调度。实现高效的定时任务调度。

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


[0001]本申请涉及大数据资源调度
,特别是涉及一种定时任务调度方法、装置、计算机设备、存储介质以及计算机程序产品。

技术介绍

[0002]在实际应用开发中,定时任务调度是一项不可或缺的服务。定时任务调度是一种预设任务,周期性或一次性执行定时任务。
[0003]目前,Linux内置的crontab定时任务,可以在固定的时间间隔执行指定的系统指令或者shell脚本。JDK自带的Timer定时任务执行类,使用起来简单方便。
[0004]但每一个定时任务都启动一个timer,低效且耗时。并且当一个任务执行时间过长或者执行异常时都会影响到其他任务的执行。Spring的Schedule时间表定时任务通过轮询数据库实现定时任务,由于需要一直占用线程,同时需要保持数据库连接状态,轮询数据来确定是否执行定时任务,给数据库造成较大压力,且定时任务的时间误差较大。Quartz通过Trigger来设置调度策略,SimpleTrigger在特定时间间隔执行任务一次或多次,CronTrigger基于日历的任务调度,实现更复杂的调度安排。Rabbitmq使用消息TTL(Time To Live)和死信队列的特性来实现延迟任务,以达到定时执行的目的。但由于队列先进先出的特性,只有位于队首的过期消息,才会路由到死信队列,这就要求了每个任务的执行时间是一致的,大大限制了使用场景。或者保证相同延迟时间的消息进入同一个队列,对不同定时要求的业务绑定不同队列,大大浪费了队列资源,造成定时任务调度效率低下。

技术实现思路

[0005]基于此,有必要针对上述技术问题,提供一种高效的定时任务调度方法、装置、计算机设备和存储介质。
[0006]一种定时任务调度方法,所述方法包括:
[0007]获取定时任务的事件报文;
[0008]根据所述事件报文携带的业务数据确定分层时间轮粒度,获取与所述分层时间轮粒度对应的延时队列,所述延时队列与死信交换器绑定;
[0009]将所述事件报文对应的事件注册至所述延时队列,得到有效延时队列;
[0010]基于有效延时队列以及绑定的死信交换器,采用分层时间轮策略消费所述事件;
[0011]当满足事件触发条件时,将所述事件写入任务执行队列、以执行所述定时任务。
[0012]在其中一个实施例中,所述基于有效延时队列以及绑定的死信交换器,采用分层时间轮策略消费所述事件包括:
[0013]监听所有时间粒度的有效延时队列中事件在死信交换器处循环消费情况,并采用分层时间轮策略对循环消费进行级联调度。
[0014]在其中一个实施例中,所述监听所有时间粒度的有效延时队列中事件在死信交换器处循环消费情况,并采用分层时间轮策略对循环消费进行级联调度包括:
[0015]将所有时间粒度的有效延时队列绑定至相同死信交换器;
[0016]将单个有效延时队列中事件在所述相同死信交换器处进行循环消费,采用分层时间轮策略对循环消费进行级联调度。
[0017]在其中一个实施例中,所述将单个有效延时队列中事件在所述相同死信交换器处进行循环消费,采用分层时间轮策略对循环消费进行级联调度包括:
[0018]确定时间粒度最高的有效延时队列,得到目标有效延时队列;
[0019]当所述目标有效延时队列以对应时间粒度流转一次时,所述事件进入一次所述相同死信交换器消费;
[0020]当循环消费次数达到所述定时任务对应的当前时间粒度的数值时,选取下一时间粒度的有效延时队列作为目标有效延时队列,返回所述当所述目标有效延时队列以对应时间粒度流转一次时,所述事件进入一次所述相同死信交换器消费的步骤,直至循环完所有时间粒度的有效延时队列。
[0021]在其中一个实施例中,所述获取定时任务的事件报文包括:
[0022]获取定时任务;
[0023]将所述定时任务的业务数据封装成事件报文。
[0024]在其中一个实施例中,所述根据所述事件报文携带的业务数据确定分层时间轮粒度包括:
[0025]根据所述业务数据识别任务执行周期;
[0026]识别所述任务执行周期中最小时间单位和最大时间单位;
[0027]根据所述最小时间单位确定分层时间轮最低粒度、并根据所述最大时间单位确定分层时间轮最高粒度。
[0028]在其中一个实施例中,所述当满足事件触发条件时,将所述事件写入任务执行队列、以执行所述定时任务包括:
[0029]当满足事件触发条件时,将所述事件写入任务执行队列,得到有效任务执行队列;
[0030]调用预设任务回调函数执行所述有效任务执行队列,所述预设任务回调函数与所述定时任务对应。
[0031]一种定时任务调度装置,所述装置包括:
[0032]任务获取模块,用于获取定时任务的事件报文;
[0033]队列获取模块,用于根据所述事件报文携带的业务数据确定分层时间轮粒度,获取与所述分层时间轮粒度对应的延时队列,所述延时队列与死信交换器绑定;
[0034]注册模块,用于将所述事件报文对应的事件注册至所述延时队列,得到有效延时队列;
[0035]循环消费模块,用于基于有效延时队列以及绑定的死信交换器,采用分层时间轮策略消费所述事件;
[0036]执行模块,用于当满足事件触发条件时,将所述事件写入任务执行队列、以执行所述定时任务。
[0037]在其中一个实施例中,循环消费模块还用于监听所有时间粒度的有效延时队列中事件在死信交换器处循环消费情况,并采用分层时间轮策略对循环消费进行级联调度。
[0038]在其中一个实施例中,循环消费模块还用于将所有时间粒度的有效延时队列绑定
至相同死信交换器;将单个有效延时队列中事件在所述相同死信交换器处进行循环消费,采用分层时间轮策略对循环消费进行级联调度。
[0039]在其中一个实施例中,循环消费模块还用于确定时间粒度最高的有效延时队列,得到目标有效延时队列;当所述目标有效延时队列以对应时间粒度流转一次时,所述事件进入一次所述相同死信交换器消费;当循环消费次数达到所述定时任务对应的当前时间粒度的数值时,选取下一时间粒度的有效延时队列作为目标有效延时队列,返回所述当所述目标有效延时队列以对应时间粒度流转一次时,所述事件进入一次所述相同死信交换器消费的步骤,直至循环完所有时间粒度的有效延时队列。
[0040]在其中一个实施例中,任务获取模块还用于获取定时任务;将所述定时任务的业务数据封装成事件报文。
[0041]在其中一个实施例中,队列获取模块还用于根据所述业务数据识别任务执行周期;识别所述任务执行周期中最小时间单位和最大时间单位;根据所述最小时间单位确定分层时间轮最低粒度、并根据所述最大时间单位确定分层时间轮最高粒度。
[0042]在其中一个实施例中,执行模块还用于当满足事件触发条件时,将所述事件写入任务执行队列,得到有效任务执本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种定时任务调度方法,其特征在于,所述方法包括:获取定时任务的事件报文;根据所述事件报文携带的业务数据确定分层时间轮粒度,获取与所述分层时间轮粒度对应的延时队列,所述延时队列与死信交换器绑定;将所述事件报文对应的事件注册至所述延时队列,得到有效延时队列;基于有效延时队列以及绑定的死信交换器,采用分层时间轮策略消费所述事件;当满足事件触发条件时,将所述事件写入任务执行队列、以执行所述定时任务。2.根据权利要求1所述的方法,其特征在于,所述基于有效延时队列以及绑定的死信交换器,采用分层时间轮策略消费所述事件包括:监听所有时间粒度的有效延时队列中事件在死信交换器处循环消费情况,并采用分层时间轮策略对循环消费进行级联调度。3.根据权利要求2所述的方法,其特征在于,所述监听所有时间粒度的有效延时队列中事件在死信交换器处循环消费情况,并采用分层时间轮策略对循环消费进行级联调度包括:将所有时间粒度的有效延时队列绑定至相同死信交换器;将单个有效延时队列中事件在所述相同死信交换器处进行循环消费,采用分层时间轮策略对循环消费进行级联调度。4.根据权利要求3所述的方法,其特征在于,所述将单个有效延时队列中事件在所述相同死信交换器处进行循环消费,采用分层时间轮策略对循环消费进行级联调度包括:确定时间粒度最高的有效延时队列,得到目标有效延时队列;当所述目标有效延时队列以对应时间粒度流转一次时,所述事件进入一次所述相同死信交换器消费;当循环消费次数达到所述定时任务对应的当前时间粒度的数值时,选取下一时间粒度的有效延时队列作为目标有效延时队列,返回所述当所述目标有效延时队列以对应时间粒度流转一次时,所述事件进入一次所述相同死信交换器消费的步骤,直至循环完所有时间粒度的有效延时队列。5.根据权利要求1所述的方法,其特征在于,所述获取定时任务的事件报文包括:获取定时任务;将所述定时任务的业务数据封装成事件报文。6.根据权利要求1所述的方法,其特征在于,所述根据所述事件报文携带的业务数据确定分层时间轮粒度包括:根据所述业务数据识别任务执行周期;识别所述任务执行周期中最小时间单位和最大时间单位;根据所述最小时间单位确定分层时间轮最低粒度、并根据所述最大时间单位确定分层时间轮最高粒度。7.根据权利要求1所述的方法,其特征在于,所述当满足事件触发条件时,将所述事件写入任务执行队列、以执行所述定时任务包括:当满足事件触发条件时,将所述事件写入任务执行队列,得到有效任务执行队列;调用预设任务回调函数执行所述有效任务执行队列,所述预设任务回调函数与所述定
时任务对应。8.一种定时任务调度装置,其特征在于,所述装置包括:任务获取模块,用于获取定时任务...

【专利技术属性】
技术研发人员:王冰黄显龙
申请(专利权)人:中国建设银行股份有限公司
类型:发明
国别省市:

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

1