掌桥专利:专业的专利平台
掌桥专利
首页

一种定时任务管理方法、装置、设备及可读存储介质

文献发布时间:2023-06-19 09:35:27


一种定时任务管理方法、装置、设备及可读存储介质

技术领域

本发明涉及软件技术领域,特别是涉及一种定时任务管理方法、装置、设备及可读存储介质。

背景技术

目前,定时调度任务是指基于给定时间点,给定时间间隔或者给定执行次数自动执行指定任务,为保障定时调度任务的按时执行,需要存储任务,以便在预设时间点执行该任务。

其中,对于定时调度任务的存储通常采用数据库存储或者内存存储的方式。

而在一个软件系统中,依赖外部系统越多,系统复杂度越高,相对的稳定性越差,而数据集中存储,需要依赖第三方数据库系统,在网络上至少增加一次远程网络IO,架构稳定性最低减半,若依赖多个第三方数据库系统时,机构稳定性更难以保障。

采用内存存储时,虽然数据内存存储性能较高,但大量定时任务存储在内存中,内存消耗较大,以1条规则需占用10kb内存计算,10w条配置就需要占用的内存为:10kb*100000=1gb,可见该种存储方式对于内存消耗量大,内存占用多时对于其他业务的正常运行也会产生影响;另外,内存存储不能持久化,一旦服务重启,会导致数据丢失,数据存储稳定性差。

综上所述,如何提升定时任务管理的稳定性、存储稳定性,同时减少内存占用,是目前本领域技术人员急需解决的技术问题。

发明内容

本发明的目的是提供一种定时任务管理方法、装置、设备及可读存储介质,以提升定时任务管理的稳定性、存储稳定性,同时减少内存占用。

为解决上述技术问题,本发明提供如下技术方案:

确定待管理的定时任务的配置信息;其中,所述配置信息包括任务规则以及执行时间;

将所述定时任务对应的所述配置信息存储至本地文件中;

根据所述执行时间,确定在当前时间下所述本地文件中待执行的定时任务;

将所述待执行的定时任务对应的配置信息写入缓存的定时任务队列中;

从所述定时任务队列获取待执行的定时任务,并执行相应的业务逻辑。

可选地,所述将所述定时任务对应的所述配置信息存储至本地文件中,包括:

确定所述执行时间对应的本地文件,作为归属文件;

将所述定时任务对应的所述配置信息存储至所述归属文件中;

则相应地,所述根据所述执行时间,确定在当前时间下所述本地文件中待执行的定时任务,包括:

根据各所述本地文件对应的执行时间范围,确定与当前时间匹配的本地文件;

将所述与当前时间匹配的本地文件中存储的各定时任务作为所述待执行的定时任务。

可选地,所述确定所述执行时间对应的本地文件,作为归属文件,包括:

确定与所述执行时间相邻且时间戳早于所述执行时间的本地文件,作为所述归属文件;其中,各相邻所述本地文件对应的时间戳的差值为本地文件读取时间间隔。

可选地,所述将所述定时任务对应的所述配置信息存储至所述归属文件中,包括:

确定所述执行时间与所述归属文件的时间戳间的时间差;

按照预设存储格式,将所述配置信息以及所述时间差存储至所述归属文件中;其中,所述预设存储格式中的信息项包括:所述时间差、所述任务规则对应的表达式以及执行状态;所述执行状态包括待执行以及已执行。

可选地,从所述定时任务队列获取待执行的定时任务,并执行相应的业务逻辑,包括:

确定各所述待执行的定时任务的所述时间差;

按照所述时间差由小到大的顺序为所述待执行的定时任务赋予由高到低的优先级;

在所述定时任务队列中按照所述优先级由高到低的顺序逐一执行各定时任务对应的业务逻辑。

可选地,在从所述定时任务队列获取待执行的定时任务,并执行相应的业务逻辑之后,还包括:

当所述定时任务执行完成后,对所述定时任务标记为已执行。

可选地,所述定时任务管理方法还包括:

若服务重启,执行所述根据所述执行时间,确定在当前时间下所述本地文件中待执行的定时任务的步骤。

本发明还提供了一种定时任务管理装置,包括:

信息确定单元,用于确定待管理的定时任务的配置信息;其中,所述配置信息包括任务规则以及执行时间;

本地写入单元,用于将所述定时任务对应的所述配置信息存储至本地文件中;

任务确定单元,用于根据所述执行时间,确定在当前时间下所述本地文件中待执行的定时任务;

队列写入单元,用于将所述待执行的定时任务对应的配置信息写入缓存的定时任务队列中;

任务执行单元,用于从所述定时任务队列获取待执行的定时任务,并执行相应的业务逻辑。

本发明还提供了一种定时任务管理设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述定时任务管理方法的步骤。

本发明还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述定时任务管理方法的步骤。

应用本发明实施例所提供的方法,抛弃了对第三方数据库存储系统的依赖,将定时任务的存储转移至本地端,降低了系统复杂度,相应提升了系统稳定性;另外,该方法中通过本地文件存储定时任务,可以保障定时任务存储的稳定性,避免了掉电任务数据丢失的情况;而且在定时任务到达或即将到达执行时间,称为待执行的定时任务后,再将其投入至缓存的定时任务队列中,仅将待执行的任务投入至内存中,对于内存的占用少,因此该方法可以提升定时任务管理的稳定性、存储稳定性,同时减少内存占用。

相应地,本发明实施例还提供了与上述定时任务管理方法相对应的定时任务管理装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种定时任务管理方法的实施流程图;

图2为本发明实施例中一种定时任务执行示意图;

图3为本发明实施例中一种定时任务管理装置的结构示意图;

图4为本发明实施例中一种定时任务管理设备的结构示意图。

具体实施方式

本发明的核心是提供一种定时任务管理方法,以提升定时任务管理的稳定性、存储稳定性,同时减少内存占用。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例中一种定时任务管理方法的流程图,该方法包括以下步骤:

S101、确定待管理的定时任务的配置信息;其中,配置信息包括任务规则以及执行时间;

定时任务的配置信息主要包括任务规则以及执行时间两部分,其中,任务规则指示业务执行逻辑,比如将某数据写入某文件;执行时间指示任务的执行时间,这里可以是任意时间,本实施例中对于执行时间的可选范围不做限定。需要说明的是,除了任务规则以及执行时间两部分之外,还可以进一步配置其他信息项以便满足后续的任务管理以及任务执行的需要,比如配置信息中还可以进一步包括任务指定规定时间、任务执行难度等。本实施例中对于配置信息中具体包括的信息项不做限定,可以根据实际使用的需要进行相应的配置,在此不做限定。

S102、将定时任务对应的配置信息存储至本地文件中;

本地文件指设备本地端存储的文件,本实施例中将定时任务的配置信息存储至设备的本地端文件中,既可以避免对于内存的消耗,可以保障配置信息存储的稳定性,即避免掉电定时任务数据丢失的情况,相比数据库系统存储,又可以减少远程IO请求,降低外部系统依赖,降低实现复杂度,从而提升定时任务管理的稳定性。

本实施例中对于本地文件的数量不做限定,可以仅设置一个,也可以设置多个,为方便对于具有不同执行时间的定时任务的管理,可以设置多个本地文件,分别用于存储各预设范围内的定时任务。

定时任务对应的配置信息在本地文件中的具体存储方式可以根据实际任务执行的需要进行相应设定,比如将各定时任务对应的配置信息按照指定格式依次添加至各本地文件中。本实施例中对此不做限定。

S103、根据执行时间,确定在当前时间下本地文件中待执行的定时任务;

定时任务的执行时间有先有后,为保障定时任务按照预先设定的执行时间依次执行,需要在各时间节点下确定当前时间下的待执行的定时任务。确定待执行的定时任务的具体实现方式本实施例中不做限定,在定时任务随机存储预本地文件中时,可以遍历各定时任务,逐一确认执行时间是否到达或即将到达;在各定时任务按照执行时间的先后顺序存储于本地文件时,可以直接按照存储顺序逐一确定到达或即将到达执行时间的任务,在确定未到达或即将到达执行时间时,停止遍历;在本地文件存在对应的执行时间范围时,可以直接确定未到达或即将到达执行时间的本地文件对应的定时任务,作为待执行的定时任务等。本实施例中仅以上述三种实现方式为例进行介绍,其它待执行的任务的确定方式均可参照本实施例的介绍,在此不再赘述。

S104、将待执行的定时任务对应的配置信息写入缓存的定时任务队列中;

由于在本地存储的本地文件无法直接被执行,因此在定时任务到达或即将到达后(即确定为待执行的任务后),再将其写入定时任务队列中,定时任务队列缓存于内存中,该方式既可以保障定时任务的有效执行,又可以避免对于内存的过多占用(仅将待执行的任务投入至内存中)。

需要说明的是,本实施例中对于定时任务写入定时任务队列中的具体写入方式不做限定,可以按照各定时任务的执行先后顺序写入定时任务队列中,也可以顺序随机的写入,或者根据重要级别由高到低的顺序写入等,可以根据实际的任务执行需要进行相应设定,在此不再赘述。

S105、从定时任务队列获取待执行的定时任务,并执行相应的业务逻辑。

具体的对于定时任务的业务逻辑的执行过程可以参照相关技术的介绍,在此不再赘述。

本实施例所提供的定时任务管理方法,抛弃了对第三方数据库存储系统的依赖,将定时任务的存储转移至本地端,减少外部系统依赖后降低了系统复杂度,相应提升了系统稳定性;另外,该方法中通过本地文件存储定时任务,可以保障定时任务存储的稳定性,避免了掉电任务数据丢失的情况;而且在定时任务到达或即将到达执行时间,称为待执行的定时任务后,再将其投入至缓存的定时任务队列中,仅将待执行的任务投入至内存中,对于内存的占用少,因此该方法可以提升定时任务管理的稳定性、存储稳定性,同时减少内存占用。

上述实施例中对于定时任务在本地文件中的存储形式不做限定,本实施例中主要针对定时任务在本地端的存储形式,介绍一种可行方案。

具体如下,将定时任务对应的配置信息存储至本地文件中具体可以包括如下步骤:

(1)确定执行时间对应的本地文件,作为归属文件;

每个归属文件对应一定的执行时间范围,则需要根据该任务的执行时间以及各文件设置的时间范围,确定当前任务归属的本地文件。

(2)将定时任务对应的配置信息存储至归属文件中;

将各定时任务对应的配置信息存储至对应的归属文件中,以便于后续根据配置信息进行任务的执行。

本实施例中对于定时任务的配置信息的存储形式不做限定,可以从方便查找以及方便比对等角度出发进行存储形式的配置。

则基于上述存储方式,上述实施例中步骤S103根据执行时间,确定在当前时间下本地文件中待执行的定时任务相应地可以包括以下执行步骤:

(1)根据各本地文件对应的执行时间范围,确定与当前时间匹配的本地文件;

(2)将与当前时间匹配的本地文件中存储的各定时任务作为待执行的定时任务。

其中,上述步骤确定执行时间对应的本地文件,作为归属文件的一种具体实现方式如下:确定与执行时间相邻且时间戳早于执行时间的本地文件,作为归属文件;其中,各相邻本地文件对应的时间戳的差值为本地文件读取时间间隔。

在设备的本地端设置若干本地文件,每个本地文件预先设置一个时间戳,该时间戳指示该文件的起始执行时间,通过该时间戳可以方便后续根据执行时间的顺序将任务投入定时任务队列,无需逐一遍历各任务的执行时间,简化任务执行时间的管理操作。

时间戳可以直接作为文件名,也可以以标注形式添加至文件中,在此对于时间戳的存储形式不做限定,在此以将时间戳作为文件名为例,比如文件名可以为:yyyyMMddHHmm,其中,yyyy为年份,MM为月份,dd为日,HH为时,mm为分,例如2020年11月16日15点整对应的本地文件名为202011161500,又例如2020年11月16日15点30对应的本地文件名为202011161530。各相邻本地文件间的时间戳的差值为本地文件的读取时间间隔,即每隔读取时间间隔执行上述实施例中步骤S103按照当前任务执行时间查找待执行的本地文件的步骤,比如每隔半小时执行一次读取本地文件时,各文件的mm(分)之间的间隔为30,例如202011161500和202011161530为两个相邻的本地文件。

本实施例提供的任务在本地文件的添加中,选取与任务的执行时间相邻且时间戳早于执行时间的本地文件,作为该任务的归属文件,比如某任务的执行时间为2020年11月16日15点02分,则选择时间戳在202011161502之前的,且最邻近的本地文件(比如时间戳为202011161500的本地文件),作为归属文件。选取时间戳早于执行时间的本地文件可以保障在每隔读取时间间隔获取本地文件添加至任务执行队列时,所有任务处于待执行的状态,同时任务执行的延时时间一般不会超过该读取时间间隔。

如图2所示为一种定时任务执行示意图,在对具有不同执行时间的定时任务进行管理时,本实施例中提出根据各任务的执行时间存储至具有不同执行时间的本地文件中,一个本地文件中存储若干定时任务,在后续定时任务执行过程中可以直接根据文件的时间戳进行任务的加载,既可以避免任务被延时很久未执行的情况,又可以简化管理流程,提升定时任务的管理效率。

其中,上述步骤将定时任务对应的配置信息存储至归属文件中的一种实现方式如下:

(2.1)确定执行时间与归属文件的时间戳间的时间差;

比如归属文件的时间戳为202011161500,该定时任务的执行时间为202011161515,即2020年11月16日15点15分,则执行时间与时间戳之间的时间差为15分钟。本实施例提供的任务存储方法中在每个本地文件中,简化了执行时间的存储(以时间差15替代202011161515),减少了对于本地端的存储空间的占用,也相应的简化了执行时间的比对(比较15与20的大小相对于比较202011161515与202011161520的大小比对效率更高),方便后续根据各任务执行时间的先后顺序高效的进行任务的执行,提高管理效率。

(2.2)按照预设存储格式,将配置信息以及时间差存储至归属文件中;其中,预设存储格式中的信息项包括:时间差、任务规则对应的表达式以及执行状态;执行状态包括待执行以及已执行。

本实施例中仅以包括上述信息项目为例进行介绍,可以根据实际使用需要添加其它信息项,比如任务执行难度等。本实施例中对于各任务具体的存储格式不做限定,为加深理解,介绍一种存储格式如下:时间差L+分隔符||+定时任务表达式+分隔符||+执行状态(N代表待执行,Y代表已执行),按照上述存储格式存储的一种定时任务为:05||定时任务表达式||N。本实施例中仅以上述存储格式为例进行介绍,其它存储格式均可参照上述介绍,本实施例中对此不再赘述。

基于上述存储形式,相应地,上述实施例中步骤S105从定时任务队列获取待执行的定时任务,并执行相应的业务逻辑的一种实现方式如下:

(1)确定各待执行的定时任务的时间差;

(2)按照时间差由小到大的顺序为待执行的定时任务赋予由高到低的优先级;

(3)在定时任务队列中按照优先级由高到低的顺序逐一执行各定时任务对应的业务逻辑。

根据时间差设置任务的优先级,将该文件中记录的所有定时任务按照优先级由高到低的顺序放入定时任务队列,优先级越高的定时任务越早执行,可以提升定时任务的平均响应速度,从而提升用户体验。

基于上述实施例,在从定时任务队列获取待执行的定时任务,并执行相应的业务逻辑之后,可以进一步执行以下步骤:当定时任务执行完成后,对定时任务标记为已执行。业务逻辑执行完成后,修改定时任务执行状态为已执行状态,既方便对于定时任务的执行进度的管理,又可以避免任务重复执行的情况,提升任务管理效率。

当然,也可以不执行上述步骤,本实施例中对此不做限定。

进一步地,在上述实施例的基础上,可以进一步执行以下步骤:若服务重启,执行根据执行时间,确定在当前时间下本地文件中待执行的定时任务的步骤。

为了解决服务重启(比如服务异常重启或首次启动)导致的定时任务队列数据丢失问题,重启后执行一次定时任务加载逻辑,服务启动重新查找数据进行加载的技术,本地端完整存储有任务数据,从本地端读取待执行的任务数据执行后续流程将避免任务执行断流的情况,保障任务的顺利执行。

相应于上面的方法实施例,本发明实施例还提供了一种定时任务管理装置,下文描述的定时任务管理装置与上文描述的定时任务管理方法可相互对应参照。

参见图3所示,该装置包括以下模块:

信息确定单元110主要用于确定待管理的定时任务的配置信息;其中,配置信息包括任务规则以及执行时间;

本地写入单元120主要用于将定时任务对应的配置信息存储至本地文件中;

任务确定单元130主要用于根据执行时间,确定在当前时间下本地文件中待执行的定时任务;

队列写入单元140主要用于将待执行的定时任务对应的配置信息写入缓存的定时任务队列中;

任务执行单元150主要用于从定时任务队列获取待执行的定时任务,并执行相应的业务逻辑。

在本发明的一种具体实施方式中,本地写入单元120具体可以包括:

归属确定子单元,用于确定执行时间对应的本地文件,作为归属文件;

信息存储子单元,用于将定时任务对应的配置信息存储至归属文件中;

则相应地,与本地写入单元120连接的任务确定单元130具体可以包括:

文件确定子单元,用于根据各本地文件对应的执行时间范围,确定与当前时间匹配的本地文件;

匹配确定子单元,用于将与当前时间匹配的本地文件中存储的各定时任务作为待执行的定时任务。

在本发明的一种具体实施方式中,归属确定子单元具体可以为第一确定子单元,第一确定子单元用于:确定与执行时间相邻且时间戳早于执行时间的本地文件,作为归属文件;其中,各相邻本地文件对应的时间戳的差值为本地文件读取时间间隔。

在本发明的一种具体实施方式中,信息存储子单元具体可以包括:

时间差确定子单元,用于确定执行时间与归属文件的时间戳间的时间差;

格式存储子单元,用于按照预设存储格式,将配置信息以及时间差存储至归属文件中;其中,预设存储格式中的信息项包括:时间差、任务规则对应的表达式以及执行状态;执行状态包括待执行以及已执行。

在本发明的一种具体实施方式中,与上述信息存储子单元连接任务执行单元150具体可以包括:

差值确定子单元,用于确定各待执行的定时任务的时间差;

优先级设定子单元,用于按照时间差由小到大的顺序为待执行的定时任务赋予由高到低的优先级;

顺序执行子单元,用于在定时任务队列中按照优先级由高到低的顺序逐一执行各定时任务对应的业务逻辑。

在本发明的一种具体实施方式中,还包括标记单元,用于在从定时任务队列获取待执行的定时任务,并执行相应的业务逻辑之后,当定时任务执行完成后,对定时任务标记为已执行。

在本发明的一种具体实施方式中,还包括:重启单元,用于若服务重启,执行根据执行时间,确定在当前时间下本地文件中待执行的定时任务的步骤。

相应于上面的方法实施例,本发明实施例还提供了一种定时任务管理设备,下文描述的一种定时任务管理设备与上文描述的一种定时任务管理方法可相互对应参照。

该定时任务管理设备包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现上述方法实施例的定时任务管理方法的步骤。

具体的,请参考图4,为本实施例提供的一种定时任务管理设备的具体结构示意图,该定时任务管理设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在定时任务管理设备301上执行存储器332中的一系列指令操作。

定时任务管理设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。

上文所描述的定时任务管理方法中的步骤可以由定时任务管理设备的结构实现。

相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种定时任务管理方法可相互对应参照。

一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的定时任务管理方法的步骤。

该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

相关技术
  • 一种定时任务管理方法、装置、设备及可读存储介质
  • 定时任务的管理方法、计算机可读存储介质和终端设备
技术分类

06120112227063