定时任务触发方法、装置、设备及可读存储介质与流程

文档序号:14135841阅读:145来源:国知局
定时任务触发方法、装置、设备及可读存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种定时任务触发方法、装置、设备及可读存储介质。



背景技术:

目前,在集群部署的服务器处理定时任务过程中,如若采用springquartz进行定时任务的处理或者通过配置文件进行定时任务的配置,会存在高并发或者重复触发定时任务的问题。高并发或者重复触发即是多个服务器处理同一定时任务的现象,这在一定程度上会造成资源的浪费,尽管现有技术中,可将定时任务绑定在一个服务器节点进行触发,但是单点定时任务风险高,可能造成定时任务未及时触发的技术问题。



技术实现要素:

本发明的主要目的在于提供一种定时任务触发方法、装置、设备及可读存储介质,旨在解决现有定时任务触发过程不可靠的技术问题。

为实现上述目的,本发明提供一种定时任务触发方法,所述定时任务触发方法包括:

当检测到业务定时任务的触发指令时,获取所述业务id号,并获取所述定时任务的id号;

基于所述业务id号与所述定时任务id号,在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值;

获取定时任务id号对应的定时任务触发规则,基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机。

可选地,所述在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值步骤包括:

在redis数据库查找目标键值,当所述目标键值不存在时,对所述目标键值进行初始化处理;

对所述初始化处理后的目标键值执行incr命令,以获取返回值。

可选地,所述基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机步骤之后包括:

基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表,该定时任务表中存储所述定时任务与该定时任务的目标处理服务器之间的绑定关系;

实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中,以供所述目标处理服务器创建执行定时任务指令,以执行定时任务。

可选地,所述定时任务触发方法应用于分布式集群部署系统中,所述实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中步骤之后包括:

若检测到所述目标处理服务器宕机时,则将所述定时任务发送给其它处理服务器,以供其它处理服务器处理对应的定时任务。

可选地,所述基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表步骤之后包括:

若检测到所述定时任务终止执行指令时,将所述redis数据库中对应定时任务表的任务状态更改为终止状态。

可选地,所述定时任务触发方法应用于分布式集群部署系统中,所述定时任务触发规则包括取模算法规则,所述基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机步骤包括:

获取分布式集群部署系统中配置的集群数目,对所述返回值与集群数目进行余计算处理,以获取模值;

当所述模值为预设值时,确认再次触发定时任务。

可选地,所述当所述模值为预设值时,确认再次触发定时任务步骤包括:

当所述模值为零时,确认再次触发定时任务。

此外,为实现上述目的,本发明还提供一种定时任务触发装置,所述定时任务触发装置包括:

第一获取模块,用于当检测到业务定时任务的触发指令时,获取所述业务id号,并获取所述定时任务的id号;

第二获取模块,用于基于所述业务id号与所述定时任务id号,在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值;

确认模块,用于获取定时任务id号对应的定时任务触发规则,基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机。

可选地,所述第二获取模块包括:

初始化子模块,用于在redis数据库查找目标键值,当所述目标键值不存在时,对所述目标键值进行初始化处理;

第一获取子模块,用于对所述初始化处理后的目标键值执行incr命令,以获取返回值。

可选地,所述定时任务触发装置还包括:

生成模块,用于基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表,该定时任务表中存储所述定时任务与该定时任务的目标处理服务器之间的绑定关系;

第一检测模块,用于实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中,以供所述目标处理服务器创建执行定时任务指令,以执行定时任务。

可选地,定时任务触发装置还包括:

第二检测模块,用于若检测到所述目标处理服务器宕机时,则将所述定时任务发送给其它处理服务器,以供其它处理服务器处理对应的定时任务。

可选地,所述定时任务触发装置还包括:

修改模块,用于若检测到所述定时任务终止执行指令时,将所述redis数据库中对应定时任务表的任务状态更改为终止状态。

可选地,所述定时任务触发方法应用于分布式集群部署系统中,所述定时任务触发规则包括取模算法规则,所述第二获取模块包括:

第二获取子模块,用于获取分布式集群部署系统中配置的集群数目,对所述返回值与集群数目进行余计算处理,以获取模值;

确认子模块,用于当所述模值为预设值时,确认再次触发定时任务。

可选地,所述确认子模块包括:

确认单元,用于当所述模值为零时,确认再次触发定时任务。

此外,为实现上述目的,本发明还提供一种定时任务触发设备,所述定时任务触发设备包括:存储器、处理器,通信总线以及存储在所述存储器上的定时任务触发程序,

所述通信总线用于实现处理器与存储器间的通信连接;

所述处理器用于执行所述定时任务触发程序,以实现以下步骤:

当检测到业务定时任务的触发指令时,获取所述业务id号,并获取所述定时任务的id号;

基于所述业务id号与所述定时任务id号,在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值;

获取定时任务id号对应的定时任务触发规则,基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机。

可选地,所述在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值步骤包括:

在redis数据库查找目标键值,当所述目标键值不存在时,对所述目标键值进行初始化处理;

对所述初始化处理后的目标键值执行incr命令,以获取返回值。

可选地,所述基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机步骤之后包括:

基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表,该定时任务表中存储所述定时任务与该定时任务的目标处理服务器之间的绑定关系;

实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中,以供所述目标处理服务器创建执行定时任务指令,以执行定时任务。

可选地,所述定时任务触发方法应用于分布式集群部署系统中,所述实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中步骤之后包括:

若检测到所述目标处理服务器宕机时,则将所述定时任务发送给其它处理服务器,以供其它处理服务器处理对应的定时任务。

可选地,所述基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表步骤之后包括:

若检测到所述定时任务终止执行指令时,将所述redis数据库中对应定时任务表的任务状态更改为终止状态。

可选地,所述定时任务触发方法应用于分布式集群部署系统中,所述定时任务触发规则包括取模算法规则,所述基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机步骤包括:

获取分布式集群部署系统中配置的集群数目,对所述返回值与集群数目进行余计算处理,以获取模值;

当所述模值为预设值时,确认再次触发定时任务。

可选地,所述当所述模值为预设值时,确认再次触发定时任务步骤包括:

当所述模值为零时,确认再次触发定时任务。

此外,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行以用于:

当检测到业务定时任务的触发指令时,获取所述业务id号,并获取所述定时任务的id号;

基于所述业务id号与所述定时任务id号,在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值;

获取定时任务id号对应的定时任务触发规则,基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机。

本发明通过当检测到业务定时任务的触发指令时,获取所述业务id号,并获取所述定时任务的id号;基于所述业务id号与所述定时任务id号,在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值;获取定时任务id号对应的定时任务触发规则,基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机。在本申请中,由于redis数据库服务具有单线程特性,且在使用redis数据库的incr命令进行计数后,能够对目标键值进行数值自加一处理,并将该数值自加一处理后的目标键值的计数作为定时任务触发的标记,而触发操作是基于目标键值进行的,因而能够准确确定再次触发定时任务的触发时机,因而可实现触发操作的原子化,防止重复触发,因而本申请解决了现有解决现有定时任务触发过程不可靠的技术问题,即本申请能够避免重复触发或者单点触发的现象。

附图说明

图1为本发明定时任务触发方法第一实施例的流程示意图;

图2是本发明定时任务触发方法中的场景示意图;

图3是本发明实施例方法涉及的硬件运行环境的设备结构示意图;

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种定时任务触发方法,在本发明定时任务触发方法的第一实施例中,参照图1,所述定时任务触发方法包括:

步骤s10,当检测到业务定时任务的触发指令时,获取所述业务id号,并获取所述定时任务的id号;

需要说明的是,定时任务是各个系统中不可或缺的,例如,订单系统中的接单超时、支付超时、计算系统中的定时结算、缓存数据的定时更新等。

本实施例定时任务触发方法应用于分布式集群部署的系统,目前,在分布式集群部署的系统的服务器处理定时任务过程中,一般通过采用springquartz进行定时任务的处理,即是通过配置文件进行定时任务的配置,这可能存在定时任务的高并发现象即是多个服务器触发同一定时任务的现象,这会造成资源的浪费,未从根本上解决定时任务单点任务故障的问题。

需要说明的是,在分布式集群部署的系统中,存在多台已部署的多个服务器,当检测到业务的定时任务时,是触发多个服务器中的一个目标处理服务器处理或者响应定时任务,由于响应时间长短不同,因而该目标处理服务器触发处理或者响应定时任务时,若响应时间超过预设时间时,该分布式集群部署的系统默认确定该目标处理服务器未及时处理该定时任务,因而会导致该目标处理服务器外其它服务器同时处理该定时任务,即是可能存在定时任务的高并发现象,造成资源的浪费,尽管etcd,zoomkeeper等集群配置管理工具可实现定时任务的不重复触发,但是redis数据库实现过程更加轻量,即是不再需要下载配置其它的配置管理工具。

需要说明的是,redis服务器即redis-server具有单线程特性,单线程特性即是在程序执行时,程序路径按照连续顺序排下来,前面的程序执行完成后,后续程序才会执行。

当检测到业务定时任务的触发指令时,获取所述业务id号,并获取所述定时任务的id号,其中,该定时任务的触发指令可是定时任务的首次触发也可是定时任务的再次触发,当该定时任务是首次触发时,判断该定时任务对应业务是否为新业务,当该业务为新业务时,对该新任务进行id号的生成处理,当该业务不是新业务时,对该业务务进行id号的获取处理,在获取所述业务id号后,若定时任务是首次触发时,对该定时任务进行id号的生成处理,当该定时任务是再次触发时,对该定时任务进行id号的获取处理。需要说明的是,业务id号、定时任务的id号的生成分别根据系统业务id号生成规则、定时任务id号生成规则确定。

步骤s20,基于所述业务id号与所述定时任务id号,在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值;

需要说明的是,基于所述业务id号与所述定时任务id号,在redis数据库中创建或者查找得到目标键值或者目标key值,当该定时任务是首次触发时,创建目标键值,当该定时任务是再次触发时,查找目标键值,其中,定时任务每执行一次,在redis数据库查找目标键值,并对该目标键值执行incr命令,其中,对该目标键值执行incr命令即是对该目标键值进行数值自加一处理,将该数值自加一处理后的目标键值作为返回值。

其中,步骤s20包括:

步骤s21,在redis数据库查找目标键值,当所述目标键值不存在时,对所述目标键值进行初始化处理;

需要说明的是,在本实施例中,在redis数据库查找目标键值,当所述目标键值不存在时,检测该目标键值是否创建处理,当检测到该目标键值创建处理时,对所述目标键值进行初始化处理,其中,初始化处理即是对目标键值的初始赋值处理。

步骤s22,对所述初始化处理后的目标键值执行incr命令,以获取返回值。

在对目标键值的初始赋值处理后,对所述初始化处理后的目标键值执行incr命令,以获取返回值,即是对初始化处理后的目标键值进行数值自加一处理。

步骤s30,获取定时任务id号对应的定时任务触发规则,基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机。

在本实施例中,获取定时任务id号对应的定时任务触发规则,在获取返回值后,基于于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机,其中,该定时任务触发规则由开发者进行确定,该定时任务触发规则可是当返回值为某一有序数值时,确认再次触发定时任务。需要说明的四,该定时任务可以终止。

本发明通过当检测到业务定时任务的触发指令时,获取所述业务id号,并获取所述定时任务的id号;基于所述业务id号与所述定时任务id号,在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值;获取定时任务id号对应的定时任务触发规则,基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机。在本申请中,由于redis数据库服务具有单线程特性,且在使用redis数据库的incr命令进行计数后,能够对目标键值进行数值自加一处理,并将该数值自加一处理后的目标键值的计数作为定时任务触发的标记,因而可实现触发操作的原子化,防止重复触发,因而本申请解决了现有解决现有定时任务触发过程不可靠的技术问题,即本申请能够避免重复触发或者单点触发的现象。

进一步地,本发明提供定时任务触发方法的第二实施例,在第二实施例中,所述基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机步骤之后包括:

步骤s40,基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表,该定时任务表中存储所述定时任务与该定时任务的目标处理服务器之间的绑定关系;

在本实施例中,redis数据库与分布式集群部署系统中的服务器进行通信,如图2所示,redis数据库接收触发定时任务的触发指令时,生成该触发指令对应的定时任务表,该定时任务表中存储所述定时任务与该定时任务的目标处理服务器之间的绑定关系,其中,该定时任务表中还存储定时任务的触发次数。

步骤s50,实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中,以供所述目标处理服务器创建执行定时任务指令,以执行定时任务。

实时检测定时任务表,当检测到定时任务再次触发时,将再次触发的定时任务加载至所述目标处理服务器中,当所述目标处理服务器加载完成定时任务时,所述目标处理服务器创建执行定时任务指令,以执行定时任务,其中,目标处理服务器执行定时任务属于现有技术,并不做具体说明。

在本实施例中,通过基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表,该定时任务表中存储所述定时任务与该定时任务的目标处理服务器之间的绑定关系;实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中,以供所述目标处理服务器创建执行定时任务指令,以执行定时任务。由于在本实施例中,在定时任务再次触发时,基于redis数据库能够将定时任务加载至目标处理服务器进行处理,因而避免定时任务处理不及时的现象。

进一步地,本发明提供定时任务触发方法的第三实施例,在第三实施例中,所述定时任务触发方法应用于分布式集群部署系统中,所述实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中步骤之后包括:

步骤s60,若检测到所述目标处理服务器宕机时,则将所述定时任务发送给其它处理服务器,以供其它处理服务器处理对应的定时任务。

在本实施例中,定时任务触发方法应用于分布式集群部署系统中,若检测到所述目标处理服务器宕机时,分布式集群部署系统将所述定时任务发送给其它处理服务器,其中,需要说明的是,在将定时任务发送给其它处理服务器过程中,定时任务只发送给唯一确定的处理服务器,以供该唯一确定的处理服务器进行定时任务的处理。

在本实施例中,通过若检测到所述目标处理服务器宕机时,则将所述定时任务发送给其它处理服务器,以供其它处理服务器处理对应的定时任务。因而能够有效降低定时任务单点风险等级。

进一步地,本发明提供定时任务触发方法的第四实施例,在第四实施例中,所述基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表步骤之后包括:

步骤s70,若检测到所述定时任务终止执行指令时,将所述redis数据库中对应定时任务表的任务状态更改为终止状态。

若检测到所述定时任务终止执行指令时,将所述redis数据库中对应定时任务表的任务状态更改为终止状态,具体地,将所述redis数据库中对应定时任务表的任务状态由执行状态更改为终止状态,其中,终止状态的定时任务不再执行,在定时任务终止一定时间后,将redis数据库中对应定时任务表进行删除处理,以清除内存。

在本实施例中,通过若检测到所述定时任务终止执行指令时,将所述redis数据库中对应定时任务表的任务状态更改为终止状态,避免因重复接收已终止执行的定时任务的触发指令而造成的资源浪费。

进一步地,本发明提供定时任务触发方法的第五实施例,在第五实施例中,所述定时任务触发方法应用于分布式集群部署系统中,所述定时任务触发规则包括取模算法规则,所述基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机步骤包括:

步骤s31,获取分布式集群部署系统中配置的集群数目,对所述返回值与集群数目进行余计算处理,以获取模值;

在本实施例中,将所述返回值作为c1,定时任务触发规则可是取模规则,取模规则即是:获取分布式集群部署系统配置的集群数量c2,对该返回值与集群数量进行余计算处理,余计算处理算法为c1%c2或者c1余c2,将余计算处理后得到的值为模值,基于模值判断是否触发定时任务。

步骤s32,当所述模值为预设值时,确认再次触发定时任务。

其中,所述步骤s32包括:

步骤s33,当所述模值为零时,确认再次触发定时任务。

用以具体实施例进行说明,若集群数量c1为4,则c2的值为4的倍数如8时,c1余c2的值为0,若所述模值为零时,确认再次触发定时任务,若c2的值不是4的倍数如9时,获取的模值为非零,不触发定时任务。需要说明的是,定时任务触发规则还可由开发者根据定时任务的开发需求进行设置或者确定。

在本实施例中,通过获取分布式集群部署系统中配置的集群数目,对所述返回值与集群数目进行余计算处理,以获取模值;当所述模值为预设值时,确认再次触发定时任务。本实施例定时任务触发规则可为取模规则,满足用户定通过模值进行定时任务设置的任务需求。

参照图3,图3是本发明实施例方案涉及的硬件运行环境的设备结构示意图。

本发明实施例定时任务触发设备可以是pc,也可以是智能手机、平板电脑、电子书阅读器、mp3(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面3)播放器、便携计算机等终端设备。

如图3所示,该定时任务触发设备可以包括:处理器1001,例如cpu,存储器1005,通信总线1002。其中,通信总线1002用于实现处理器1001和存储器1005之间的连接通信。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。

可选地,该定时任务触发设备还可以包括用户接口、网络接口、摄像头、rf(radiofrequency,射频)电路,传感器、音频电路、wifi模块等等。用户接口可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口还可以包括标准的有线接口、无线接口。网络接口可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。

本领域技术人员可以理解,图3中示出的定时任务触发设备结构并不构成对定时任务触发设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图3所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块以及定时任务触发程序。操作系统是管理和控制定时任务触发设备硬件和软件资源的程序,支持定时任务触发程序以及其它软件和/或程序的运行。网络通信模块用于实现存储器1005内部各组件之间的通信,以及与定时任务触发设备中其它硬件和软件之间通信。

在图3所示的定时任务触发设备中,处理器1001用于执行存储器1005中存储的定时任务触发程序,实现以下步骤:

当检测到业务定时任务的触发指令时,获取所述业务id号,并获取所述定时任务的id号;

基于所述业务id号与所述定时任务id号,在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值;

获取定时任务id号对应的定时任务触发规则,基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机。

进一步地,所述在redis数据库查找目标键值,并对该目标键值执行incr命令,以获取返回值步骤包括:

在redis数据库查找目标键值,当所述目标键值不存在时,对所述目标键值进行初始化处理;

对所述初始化处理后的目标键值执行incr命令,以获取返回值。

进一步地,所述基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机步骤之后包括:

基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表,该定时任务表中存储所述定时任务与该定时任务的目标处理服务器之间的绑定关系;

实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中,以供所述目标处理服务器创建执行定时任务指令,以执行定时任务。

进一步地,所述定时任务触发方法应用于分布式集群部署系统中,所述实时检测所述定时任务表,以将再次触发的定时任务加载至所述目标处理服务器中步骤之后包括:

若检测到所述目标处理服务器宕机时,则将所述定时任务发送给其它处理服务器,以供其它处理服务器处理对应的定时任务。

进一步地,所述基于所述业务id号与所述定时任务id号,在redis数据库中对应生成定时任务表步骤之后包括:

若检测到所述定时任务终止执行指令时,将所述redis数据库中对应定时任务表的任务状态更改为终止状态。

进一步地,所述定时任务触发方法应用于分布式集群部署系统中,所述定时任务触发规则包括取模算法规则,所述基于所述返回值与定时任务触发规则,确认再次触发定时任务的触发时机步骤包括:

获取分布式集群部署系统中配置的集群数目,对所述返回值与集群数目进行余计算处理,以获取模值;

当所述模值为预设值时,确认再次触发定时任务。

进一步地,所述当所述模值为预设值时,确认再次触发定时任务步骤包括:

当所述模值为零时,确认再次触发定时任务。

本发明定时任务触发设备具体实施方式与上述定时任务触发方法各实施例基本相同,在此不再赘述。

本发明提供了一种可读存储介质,所述可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序还可被一个或者一个以上的处理器执行以用于实现如上述所述的定时任务触发方法的步骤。

本发明可读存储介质具体实施方式与上述定时任务触发方法各实施例基本相同,在此不再赘述。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利处理范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1