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

一种定时任务调度控制方法、装置、系统及介质

文献发布时间:2023-06-19 18:37:28


一种定时任务调度控制方法、装置、系统及介质

技术领域

本发明涉及计算机技术领域,尤其涉及一种定时任务调度控制方法、装置、系统及介质。

背景技术

随着业务发展日趋复杂快速,定时任务(批处理)模块成为了一个系统/平台不可或缺的功能,来辅助系统/平台来完成业务的完整性,形成业务闭环。

目前,若不采用专门的统一调度平台进行定时任务的调度,为了避免同一个定时任务重复调度,通常依靠平台自身避开该重复调度的问题,即只在一个虚拟机上启动定时任务,这种解决方案缺陷比较明显,危险系数也比较高,如服务不正常将影响整个定时任务模块(批处理)不可用,使得系统运行的稳定性降低。

发明内容

鉴于上述现有技术的不足,本发明的目的在于提供可应用于金融科技或其它相关领域的一种定时任务调度控制方法、装置、系统及介质,旨在实现可靠的定时任务调度控制,避免定时任务的重复执行,提高系统运行的稳定性。

本发明的技术方案如下:

一种定时任务调度控制方法,包括:

启动定时任务;

通过预设的AOP切面对所述定时任务进行拦截;

确认所述定时任务是否为定时任务类;

当为定时任务类时,确认所述定时任务是否取得分布式锁,所述分布式锁用于表征所述定时任务的执行状态;

当已取得所述分布式锁时,执行所述定时任务,当未取得所述分布式锁时,中断所述定时任务。

在一个实施例中,所述启动定时任务之前,所述方法还包括:

预先定义AOP切面和AOP切面的拦截切点,所述AOP切面包括定时任务抽象类和抽象方法,所述AOP切面的拦截切点包括定时任务的自定义注解。

在一个实施例中,所述确认所述定时任务是否为定时任务类,包括:

确认所述定时任务是否为所述AOP切面中定时任务抽象类的实现类;

若是,则确认为定时任务类,否则结束流程。

在一个实施例中,所述当为定时任务类时,确认所述定时任务是否取得分布式锁,包括:

当为定时任务类时,调用预设方法查询得到分布式锁的状态值;

根据所述状态值确认所述定时任务是否取得分布式锁。

在一个实施例中,所述根据所述状态值确认所述定时任务是否取得分布式锁,具体包括:

当所述状态值为true时,确认所述定时任务已取得分布式锁;

当所述状态值为false时,确认所述定时任务未取得分布式锁。

在一个实施例中,所述当已取得所述分布式锁时,执行所述定时任务之后,方法还包括:

在所述定时任务执行结束后,释放所述分布式锁。

在一个实施例中,所述当未取得所述分布式锁时,中断所述定时任务之后,方法还包括:

展示所述定时任务的重复执行提示。

一种定时任务调度控制装置,其特征在于,包括:

启动模块,用于启动定时任务;

拦截模块,用于通过预设的AOP切面对所述定时任务进行拦截;

任务确认模块,用于确认所述定时任务是否为定时任务类;

分布式锁确认模块,用于当为定时任务类时,确认所述定时任务是否取得分布式锁,所述分布式锁用于表征所述定时任务的执行状态;

执行控制模块,用于当已取得所述分布式锁时,执行所述定时任务,当未取得所述分布式锁时,中断所述定时任务。

一种定时任务调度控制系统,所述系统包括至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述定时任务调度控制方法。

一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的定时任务调度控制方法。

有益效果:本发明公开了一种定时任务调度控制方法、装置、系统及介质,相比于现有技术,本发明实施例通过在定时任务启动后进行拦截并判断分布式锁的取得状态,以分布式锁的取得状态表征同一个定时任务是否已执行,仅在当前定时任务取得分布式锁时才继续执行,有效避免对相同定时任务的重复执行,实现可靠的定时任务调度控制,避免定时任务的重复执行,提高系统运行的稳定性。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为本发明实施例提供的定时任务调度控制方法的一个流程图;

图2为本发明实施例提供的定时任务调度控制方法的另一个流程图;

图3为本发明实施例提供的定时任务调度控制方法中步骤S300的流程图;

图4为本发明实施例提供的定时任务调度控制方法中步骤S400的流程图;

图5为本发明实施例提供的定时任务调度控制装置的功能模块示意图;

图6为本发明实施例提供的定时任务调度控制系统的硬件结构示意图。

具体实施方式

为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下结合附图对本发明实施例进行介绍。

请参阅图1,图1为本发明提供的定时任务调度控制方法一个实施例的流程图。本实施例提供的定时任务调度控制方法应用于包括终端设备、网络和服务器构成的系统,其中网络为用于在终端设备和服务器之间提供通信链路的介质,其可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等;终端设备上的操作系统可以包括手持设备操作系统(iPhone operating system,iOS系统)、安卓系统或其他操作系统,终端设备通过网络连接到服务器以实现交互,从而进行接收或发送数据等操作,具体可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式服务器等等。如图1所示,该方法具体包括如下步骤:

S100、启动定时任务;

S200、通过预设的AOP切面对所述定时任务进行拦截。

本实施例中,启动定时任务后,通过AOP对定时任务进行拦截,AOP(AspectOriented Programming,面向切面编程)是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术,在不改变原来代码的基础上,实现功能的扩展,可通过预先定义的AOP切面对业务层的方法调用进行拦截处理,避免定时任务的重复执行。

在一个实施例中,请参阅图2,其为本发明实施例提供的定时任务调度控制方法的另一个流程图,如图2所示,步骤S100之前,方法还包括:

S600、预先定义AOP切面和AOP切面的拦截切点,所述AOP切面包括定时任务抽象类和抽象方法,所述AOP切面的拦截切点包括定时任务的自定义注解。

本实施例中,在进行定时任务的调度控制前,提前定义AOP切面以及AOP切面中的拦截切点,AOP切面中包括了定时任务抽象类和抽象方法,AOP中横切关注点为对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点,而切面则为对横切关注点的抽象,从而定义所有需拦截处理的定时任务类,拦截切点则为对连接点进行拦截的定义,即要对哪个功能方法进行扩展,比如说若需要对a()方法进行功能扩展,则把a()方法称为切点,本实施例通过提前定义定时任务的自定义注解,作为AOP切面的拦截切点,以实现对定时任务的拦截以便后续的调度处理。

S300、确认所述定时任务是否为定时任务类。

本实施例中,拦截后则确认定时任务是否为需要进行调度控制的定时任务类,仅针对定时任务类进行相应处理,提高调度控制效率。

在一个实施例中,请参阅图3,其为本发明实施例提供的定时任务调度控制方法中步骤S300的流程图,如图3所示,步骤S300包括:

S301、确认所述定时任务是否为所述AOP切面中定时任务抽象类的实现类;

S302、若是,则确认为定时任务类,否则结束流程。

本实施例中,由于预先定义的AOP切面中包含了所有需拦截处理的定时任务类,因此拦截后基于AOP切面的定义,判断拦截到的定时任务是否为AOP切面中定时任务抽象类的实现类,如果是,则判断为定时任务类,如果不是,则结束流程,无需进行后续的避免重复执行调度控制,节约调度资源。

S400、当为定时任务类时,确认所述定时任务是否取得分布式锁,所述分布式锁用于表征所述定时任务的执行状态;

S500、当已取得所述分布式锁时,执行所述定时任务,当未取得所述分布式锁时,中断所述定时任务。

本实施例中,在拦截的定时任务为需要避免重复执行的定时任务类时,通过判断其是否取得分布式锁来进行调度控制,该分布式锁用于表征定时任务的执行状态,若当前拦截的定时任务已取得锁,表示该任务没有已执行的,可以继续走流程执行该定时任务,若当前拦截的定时任务未取得锁,表示已有相同的任务在执行,此时则中断该定时任务的执行过程,避免重复执行。

分布式锁通常用于不同的系统或是同一个系统的不同主机之间共享了一个或一组资源时,确保访问这些资源时不同系统或主机之间的互斥,从而防止彼此之间的干扰,本实施例通过分布式锁的取得状态来表征同一个定时任务执行状态,确保同一定时任务执行的唯一性,保证同一时间同一个定时任务不会重复执行,

在一个实施例中,请参阅图4,其为本发明实施例提供的定时任务调度控制方法中步骤S400的流程图,如图4所示,步骤S400包括:

S401、当为定时任务类时,调用预设方法查询得到分布式锁的状态值;

S402、根据所述状态值确认所述定时任务是否取得分布式锁。

本实施例中,通过调用预设方法来查询分布式锁的状态值,作为定时任务是否取得分布式锁的准确判断依据,具体通过Redis(Remote Dictionary Server,即远程字典服务)中stringRedisTemplate的setIfAbsent方式,实现分布式锁功能,当方法返回的状态值为true时,确认定时任务已取得分布式锁,当方法返回的状态值为false时,确认定时任务未取得分布式锁,实现准确地分布式锁取得状态的判断,进而实现对定时任务的准确调度控制。

在一个实施例中,当已取得所述分布式锁时,执行所述定时任务之后,方法还包括:

在所述定时任务执行结束后,释放所述分布式锁。

本实施例中,在当前没有同一个定时任务已执行时,则在当前拦截的定时任务执行结束后释放其取得的分布式锁,以便后续的准确调度控制,避免因分布式锁的状态错误导致的调度错误。

在一个实施例中,当未取得所述分布式锁时,中断所述定时任务之后,方法还包括:

展示所述定时任务的重复执行提示。

本实施例中,在当前已有相同定时任务在执行时,在后台中断当前流程,阻止定时任务继续执行,并且在用户界面展示定时任务的重复执行提示,使得用户能直观获知当前存在重复的定时任务,便于用户及时进行任务调整,提高系统运行的稳定性。

本发明另一实施例提供一种定时任务调度控制装置,如图5所示,装置1包括:

启动模块11,用于启动定时任务;

拦截模块12,用于通过预设的AOP切面对所述定时任务进行拦截;

任务确认模块13,用于确认所述定时任务是否为定时任务类;

分布式锁确认模块14,用于当为定时任务类时,确认所述定时任务是否取得分布式锁,所述分布式锁用于表征所述定时任务的执行状态;

执行控制模块15,用于当已取得所述分布式锁时,执行所述定时任务,当未取得所述分布式锁时,中断所述定时任务。

本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述定时任务调度控制的执行过程,各模块的具体实施方式请参考上述对应的方法实施例,此处不再赘述。

在一个实施例中,所述装置1,还包括:

定义模块,用于预先定义AOP切面和AOP切面的拦截切点,所述AOP切面包括定时任务抽象类和抽象方法,所述AOP切面的拦截切点包括定时任务的自定义注解。

在一个实施例中,所述任务确认模块13,包括:

任务确认单元,用于确认所述定时任务是否为所述AOP切面中定时任务抽象类的实现类;

结果输出单元,用于若是,则确认为定时任务类,否则结束流程。

在一个实施例中,所述分布式锁确认模块14,包括:

方法调用单元,用于当为定时任务类时,调用预设方法查询得到分布式锁的状态值;

状态确认单元,用于根据所述状态值确认所述定时任务是否取得分布式锁。

在一个实施例中,所述状态确认单元,具体用于:

当所述状态值为true时,确认所述定时任务已取得分布式锁;

当所述状态值为false时,确认所述定时任务未取得分布式锁。

在一个实施例中,所述装置1,还包括:

释放模块,用于在所述定时任务执行结束后,释放所述分布式锁。

在一个实施例中,所述装置1,还包括:

展示模块,用于展示所述定时任务的重复执行提示。

本发明另一实施例提供一种定时任务调度控制系统,如图6所示,系统10包括:

一个或多个处理器110以及存储器120,图6中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图6中以通过总线连接为例。

处理器110用于完成系统10的各种控制逻辑,其可以为通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、单片机、ARM(Acorn RISCMachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。

存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的定时任务调度控制方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行系统10的各种功能应用以及数据处理,即实现上述方法实施例中的定时任务调度控制方法。

存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据系统10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至系统10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,实现以下步骤:

启动定时任务;

通过预设的AOP切面对所述定时任务进行拦截;

确认所述定时任务是否为定时任务类;

当为定时任务类时,确认所述定时任务是否取得分布式锁,所述分布式锁用于表征所述定时任务的执行状态;

当已取得所述分布式锁时,执行所述定时任务,当未取得所述分布式锁时,中断所述定时任务。

在一个实施例中,所述启动定时任务之前,所述方法还包括:

预先定义AOP切面和AOP切面的拦截切点,所述AOP切面包括定时任务抽象类和抽象方法,所述AOP切面的拦截切点包括定时任务的自定义注解。

在一个实施例中,所述确认所述定时任务是否为定时任务类,包括:

确认所述定时任务是否为所述AOP切面中定时任务抽象类的实现类;

若是,则确认为定时任务类,否则结束流程。

在一个实施例中,所述当为定时任务类时,确认所述定时任务是否取得分布式锁,包括:

当为定时任务类时,调用预设方法查询得到分布式锁的状态值;

根据所述状态值确认所述定时任务是否取得分布式锁。

在一个实施例中,所述根据所述状态值确认所述定时任务是否取得分布式锁,具体包括:

当所述状态值为true时,确认所述定时任务已取得分布式锁;

当所述状态值为false时,确认所述定时任务未取得分布式锁。

在一个实施例中,所述当已取得所述分布式锁时,执行所述定时任务之后,方法还包括:

在所述定时任务执行结束后,释放所述分布式锁。

在一个实施例中,所述当未取得所述分布式锁时,中断所述定时任务之后,方法还包括:

展示所述定时任务的重复执行提示。

本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤S100至步骤S500。

作为示例,非易失性存储介质能够包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦ROM(EEPROM)或闪速存储器。易失性存储器能够包括作为外部高速缓存存储器的随机存取存储器(RAM)。通过说明而非限制,RAM可以以诸如同步RAM(SRAM)、动态RAM、(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)以及直接Rambus(兰巴斯)RAM(DRRAM)之类的许多形式得到。本文中所描述的操作环境的所公开的存储器组件或存储器旨在包括这些和/或任何其他适合类型的存储器中的一个或多个。

综上,本发明公开的一种定时任务调度控制方法、装置、系统及介质中,方法通过启动定时任务;通过预设的AOP切面对所述定时任务进行拦截;确认所述定时任务是否为定时任务类;当为定时任务类时,确认所述定时任务是否取得分布式锁;当已取得所述分布式锁时,执行所述定时任务,当未取得所述分布式锁时,中断所述定时任务。通过在定时任务启动后进行拦截并判断分布式锁的取得状态,以分布式锁的取得状态表征同一个定时任务是否已执行,仅在当前定时任务取得分布式锁时才继续执行,有效避免对相同定时任务的重复执行,实现可靠的定时任务调度控制,避免定时任务的重复执行,提高系统运行的稳定性。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的计算机程序可存储于一非易失性计算机可读取的存储介质中,该计算机程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、软盘、闪存、光存储器等。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

技术分类

06120115637303