CN111309372A - 定时任务执行方法、装置、计算机设备和存储介质 - Google Patents
定时任务执行方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111309372A CN111309372A CN202010041356.5A CN202010041356A CN111309372A CN 111309372 A CN111309372 A CN 111309372A CN 202010041356 A CN202010041356 A CN 202010041356A CN 111309372 A CN111309372 A CN 111309372A
- Authority
- CN
- China
- Prior art keywords
- task
- target timing
- timing task
- execution
- subtask
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及运维领域,具体是一种定时任务执行方法、装置、计算机设备和存储介质。所述方法包括:周期性地从主数据库读取定时任务的配置信息,并根据所述配置信息检测各个定时任务的下次调度时间点是否与当前时间点匹配;若检测到下次调度时间点与当前时间点匹配的目标定时任务,则判断所述目标定时任务是否存在关联的子任务,所述关联的子任务是将所述目标定时任务进行划分得到的多个子任务;当所述目标定时任务存在关联的子任务时,则获取到关联的子任务;执行所述子任务得到子任务执行结果,并根据所述子任务执行结果得到目标执行结果。采用本方法能够提高服务器性能。
Description
技术领域
本申请涉及运维管理技术领域,特别是涉及一种定时任务执行方法、装置、计算机设备和存储介质。
背景技术
在运维平台的搭建过程中,需要开发人员针对运维平台的运维功能及运维管理业务进行脚本开发,在此过程中开发人员也需要在开发出来的运维平台上通过于不同的时间点定时地运行至少一个任务的方式,来测试该运维平台的平台功能或实现该运维平台的某些业务需求。目前业内的任务调度系统一般是以QUARTZ框架为代表的JAVA定时任务执行框架。该框架通常结合SPRING框架,使用QUARTZ规定的调度频率表达式,可以较为灵活的进行任务调度。
但是这种情况下,当某个定时任务所涉及的数据量较大时,该任务的执行若出现错误,则需要回滚的数据量也较大,从而导致占用大量的磁盘空间,影响服务器的性能。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高服务器性能的定时任务执行方法、装置、计算机设备和存储介质。
一种定时任务执行方法,所述方法包括:
周期性地从主数据库读取定时任务的配置信息,并根据所述配置信息检测各个定时任务的下次调度时间点是否与当前时间点匹配;
若检测到下次调度时间点与当前时间点匹配的目标定时任务,则判断所述目标定时任务是否存在关联的子任务,所述关联的子任务是将所述目标定时任务进行划分得到的多个子任务;
当所述目标定时任务存在关联的子任务时,则获取到关联的子任务;
执行所述子任务得到子任务执行结果,并根据所述子任务执行结果得到目标执行结果。
在其中一个实施例中,所述方法还包括:
接收针对所述配置信息的修改请求,所述修改请求携带有任务的调度逻辑类型;
获取并显示与所述调度逻辑类型对应的代码段;
接收针对所述代码段的修改指令,并根据修改指令对所述调度逻辑类型进行修改,根据修改后的调度逻辑类型生成新的配置信息。
在其中一个实施例中,所述判断所述目标定时任务是否存在关联的子任务,包括:
从所述配置信息中读取所述目标定时任务的优先级,并根据所述优先级对所述目标定时任务进行排序;
获取分配线程,并在所述分配线程中依次添加排序后的所述目标定时任务;
修改添加到所述分配线程中的所述目标定时任务的状态修改为执行中;
在所述分配线程中判断所述目标定时任务是否存在关联的子任务。
在其中一个实施例中,所述在所述分配线程中依次添加排序后的所述目标定时任务,包括:
根据所述配置信息判断所述目标定时任务是否支持并发执行;
如果所述目标定时任务支持并发执行,则从线程池中获取空闲线程,并将支持并发执行的所述目标定时任务添加到所述空闲线程中;
如果所述目标定时任务不支持并发执行,则在所述分配线程中依次添加排序后的所述目标定时任务。
在其中一个实施例中,所述方法还包括:
判断在任务执行过程中是否存在异常;
如果存在异常,则判断重新执行次数是否超过预设次数;
如果没有超过预设次数,则继续判断所述目标定时任务是否存在关联的子任务;
如果超过预设次数,则将所述目标定时任务的状态修改为异常,并对状态为异常的目标定时任务对应的数据进行回滚。
一种定时任务执行装置,所述装置包括:
检测模块,用于周期性地从主数据库读取定时任务的配置信息,并根据所述配置信息检测各个定时任务的下次调度时间点是否与当前时间点匹配;
判断模块,用于若检测到下次调度时间点与当前时间点匹配的目标定时任务,则判断所述目标定时任务是否存在关联的子任务,所述关联的子任务是将所述目标定时任务进行划分得到的多个子任务;
子任务获取模块,用于当所述目标定时任务存在关联的子任务时,则获取到关联的子任务;
执行模块,用于执行所述子任务得到子任务执行结果,并根据所述子任务执行结果得到目标执行结果。
在其中一个实施例中,所述装置还包括:
接收模块,用于接收针对所述配置信息的修改请求,所述修改请求携带有任务的调度逻辑类型;
代码段获取模块,用于获取并显示与所述调度逻辑类型对应的代码段;
修改模块,用于接收针对所述代码段的修改指令,并根据修改指令对所述调度逻辑类型进行修改,根据修改后的调度逻辑类型生成新的配置信息。
在其中一个实施例中,所述判断模块包括:
排序单元,用于从所述配置信息中读取所述目标定时任务的优先级,并根据所述优先级对所述目标定时任务进行排序;
分配单元,用于获取分配线程,并在所述分配线程中依次添加排序后的所述目标定时任务;
状态修改单元,用于修改添加到所述分配线程中的所述目标定时任务的状态修改为执行中;
判断单元,用于在所述分配线程中判断所述目标定时任务是否存在关联的子任务。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
上述定时任务执行方法、装置、计算机设备和存储介质,定时查询主数据库中的配置文件,并根据配置文件判断定时任务是否要被执行,且在定时任务需要被执行时,则判断定时任务是否存在子任务,如果存在子任务,则获取到该些子任务进行执行,该些子任务是将定时任务划分的多个关联的任务,这样在定时任务执行出错,即其中一个子任务执行出错时,则只需要回滚该一个子任务对应的数据即可,不需要将整个定时任务的数据均进行回滚,不会占用大量的磁盘空间,从而也不会降低服务器的性能。
附图说明
图1为一个实施例中定时任务执行方法的应用场景图;
图2为一个实施例中定时任务执行方法的流程示意图;
图3为另一个实施例中定时任务执行方法的流程示意图;
图4为一个实施例中定时任务执行装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的定时任务执行方法,可以应用于如图1所示的应用环境中。其中,服务器102通过网络与主数据库104通过网络进行通信。其中服务器102可以从主数据库读取定时任务的配置信息,并根据配置信息确定待执行的目标定时任务,从而可以确定目标定时任务是否存在关联的子任务,该关联的子任务是将定时任务进行划分得到的多个子任务,从而可以执行子任务以得到子任务执行结果,并根据子任务执行结果得到目标执行结果,这样在定时任务执行出错,即其中一个子任务执行出错时,则只需要回滚该一个子任务对应的数据即可,不需要将整个定时任务的数据均进行回滚,不会占用大量的磁盘空间,从而也不会降低服务器的性能。其中,服务器102可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种定时任务执行方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
S202:周期性地从主数据库读取定时任务的配置信息,并根据配置信息检测各个定时任务的下次调度时间点是否与当前时间点匹配。
具体地,主数据库中存储有各个定时任务的配置信息,该主数据库可以为ORACLE数据库,ORACLE数据库允许动态修改配置信息,该配置信息可以包括定时任务的以下属性:定时任务的定时时间及频率字段、数据输入源所在数据库、数据输出目标所在数据库、最近一次调度时间、下次调度时间、任务执行状态、主键、调度任务类型以及调度任务逻辑等。其中,定时任务的定时时间及频率字段是指CRON时间表达式。类似“0*17**?”格式的CRON定时时间及频率表达式,其中各数字依次的含义是秒分时日月周年。该表达式有足够的表达能力,可以表示多久重复一次,或是在指定时间执行这种定时任务需求。数据输入源所在数据库是指数据所存储的地方,且如数据源不在主数据库,那么该字段可以指定数据源所在数据库,以便兼容多数据库的情况。数据输出目标所在数据库是指定时任务执行完成后所得到的数据的存储的方式,且如果输出的数据不存储在主数据库,那么应指定输出的数据所在数据库,以便兼容多数据库的情况。下次调度时间是由上次执行完成时更新。如当前时间大于本字段时,任务才会被调度。任务执行状态包括:W:等待执行R:执行中或执行中断E:执行报错T:执行完成。任务类型编码,唯一的英文编码,主键,如该任务存在子任务,那么关联子任务时会用到。调度任务类型可以分为JAVA类型或ORACLE的PACKAGE类型。调度任务逻辑可以包括JAVA类型和PACKAGE类型,如类型为JAVA,该字段给出的是BEAN名+方法名。如类型为PACKAGE,则该字段给出的是PACKAGE名+PROCEDURE名。上述各个定时任务的配置信息可以存储在一张列表中,该列表的每一行表示一个定时任务,每一列则对应表示上述的配置信息。
其中,用户可以根据需要对该配置信息进行动态更改,这样服务器周期性地从主数据库中读取定时任务的配置信息,可以根据该配置信息来执行对应的定时任务,而没有必要重启服务器,以造成客户的操作信息的丢失等。
服务器周期性地从主数据库读取配置信息,并根据配置信息判断下次调度时间点与当前时间点匹配的目标定时任务,从而可以选取到要执行的目标定时任务并进行执行。
S204:若检测到下次调度时间点与当前时间点匹配的目标定时任务,则判断目标定时任务是否存在关联的子任务,关联的子任务是将目标定时任务进行划分得到的多个子任务。
S206:当目标定时任务存在关联的子任务时,则获取到关联的子任务。
具体地,关联子任务是将定时任务进行划分得到的多个任务。主键中给出了任务类型编码,其是唯一的英文编码。根据该主键可以判断是否存在子任务。在生成任务的时候可以提交任务并给出主键,服务器接收到终端等发送的新生成的任务后,可以判断主键是否表示存在关联子任务,如果是则对任务进行拆分,例如按照任务所涉及到的处理器进行拆分,按照任务所涉及到的处理器进行拆分是指首先获取到任务的每一个步骤对应的处理器,然后确定主处理器以及调用处理器,将涉及到主处理器的步骤作为一个子任务,然后涉及到调用处理器的步骤作为其他子任务。例如,假设一个任务涉及到处理器A、处理器B、处理器C以及处理器D,其中涉及步骤最多的是处理器A,因此处理器A是主处理器,然后处理器B、处理器C以及处理器D为调用处理器,因此将涉及处理器A的步骤作为一个子任务A,然后涉及到处理器B的步骤作为另一个子任务B、处理器C的步骤作为另一个子任务C以及处理器D的步骤作为另一个子任务D。
当服务器通过配置信息判断出要执行的目标定时任务,则继续对筛选出的目标定时任务进行判断,例如可以通过查询配置信息判断是否存在关联的子任务,即查询配置信息中的任务类型编码,如果该任务类型编码中的主键表示存在关联子任务,则可以获取到关联子任务。例如获取到上述子任务A、子任务B、子任务C以及子任务D,从而服务器可以分别执行上述子任务。当目标定时任务存在子任务时,则可以根据目标定时任务的主键查询关联的子任务,例如,根据主键标识去查询对应的子任务表。
S208:执行子任务得到子任务执行结果,并根据子任务执行结果得到目标执行结果。
具体地,服务器将所查询到的子任务依次执行,子任务的存在是为了避免某些任务的回滚段过长,对与可分批量提交的任务,进一步划分子任务,逐个执行,如某个出错单独回滚而不影响下个子任务的执行。在各个子任务执行完成后,则按照子任务执行顺序依次将所得到的子任务执行结果进行组合得到目标定时任务执行结果,这样将目标定时任务进行划分为各个独立的子任务,这样执行该些独立的子任务即可以实现目标定时任务的执行,且当执行出错时,则只需要回滚其中出错的子任务的数据即可,不需要回滚整个目标定时任务的数据,不会占用大量的磁盘空间,从而也不会降低服务器的性能。
例如,上述子任务A、子任务B、子任务C以及子任务D,如果其执行是存在顺序的,则按照顺序进行执行得到执行结果,然后,将所得到的执行结果进行组合得到目标执行结果,其中组合可以包括将子任务A、子任务B、子任务C以及子任务D进行拼接得到,也可以是在顺序执行时,下一个子任务的执行结果依赖于上一个子任务的执行结果时,获取到最后执行的一个子任务的执行结果。
从而在任务执行的时候,如果其中一个子任务执行出现错误,则直接回滚该一个子任务对应的数据,而没有必要将所有的定时任务的数据均进行回滚。且如果下一个子任务的执行结果依赖于上一个子任务的执行结果时,则需要回滚出现错误的子任务以及后续依赖该子任务的子任务的数据即可,也没有必要回滚所有的子任务对应的数据。
上述定时任务执行方法,定时查询主数据库中的配置文件,并根据配置文件判断定时任务是否要被执行,且在定时任务需要被执行时,则判断定时任务是否存在子任务,如果存在子任务,则获取到该些子任务进行执行,该些子任务是将定时任务划分的多个关联的任务,这样在定时任务执行出错,即其中一个子任务执行出错时,则只需要回滚该一个子任务对应的数据即可,不需要将整个定时任务的数据均进行回滚,不会占用大量的磁盘空间,从而也不会降低服务器的性能。
在其中一个实施例中,上述定时任务执行方法还可以包括:接收针对配置信息的修改请求,修改请求携带有任务的调度逻辑类型;获取并显示与调度逻辑类型对应的代码段;接收针对代码段的修改指令,并根据修改指令对调度逻辑类型进行修改,根据修改后的调度逻辑类型生成新的配置信息。
具体地,如上文配置信息中包括调度任务逻辑。如类型为JAVA,该字段给出的是BEAN名+方法名。如类型为PACKAGE,则该字段给出的是PACKAGE名+PROCEDURE名。在其中一个实施例中,服务器可以接收到用户输入的配置信息更改请求,该配置信息更改请求携带有调度任务逻辑的类型;服务器根据该调度任务逻辑的类型显示对应的代码段,以供用户进行修改。例如当选为ORACLE数据库的PACKAGE类型时,可以通过随时修改该字段来改变具体调用的PACKAGE,或是直接修改该PACKAGE的代码来微调逻辑,这是因为ORACLE数据库允许随时修改PACKAGE就像执行一条普通SQL的DDL一样,从而并不会造成数据库的重启。在执行上述子任务或者是目标定时任务的时候,不同的类型采用不同的调用方式。如采用PACKAGE类型,那么此时任务的逻辑可随时更改,并与下次扫描生效,不受应用部署的限制。
上述实施例中,用户可以根据需要随时更改主数据库中的配置信息,而不需要重启服务器,这样可以避免用户数据的丢失,不必过多的考虑应用版本发布频繁而导致的数据丢失。同时,客户也可以根据业务需要随时提出新的任务处理逻辑,由于新增任务调度只需执行SQL,那么灵活的需求也能从容应对。此外还可以方便修复BUG,上述定时任务执行方法中,如果任务出现了BUG,只需自测通过后,将SQL发送给运维执行即可。最大程度地降低了BUG的修改对系统其他功能的影响。
在其中一个实施例中,判断目标定时任务是否存在关联的子任务,包括:从配置信息中读取目标定时任务的优先级,并根据优先级对目标定时任务进行排序;获取分配线程,并在分配线程中依次添加排序后的目标定时任务;修改添加到分配线程中的目标定时任务的状态修改为执行中;在分配线程中判断目标定时任务是否存在关联的子任务。
其中,配置信息中还包括定时任务的优先级,其仅对非并发任务有效。服务器会对所有设定了优先级的任务进行排序,并存入队列。使用当前线程逐一处理已到达执行时间的任务。针对不支持并发执行的任务,对这些任务按优先级进行排序,有当前线程依次调度这些任务。需注意的是,服务器还捕获所有任务中的异常,以防某个任务出错而影响其他任务。
在其中一个实施例中,在分配线程中依次添加排序后的目标定时任务,包括:根据配置信息判断目标定时任务是否支持并发执行;如果目标定时任务支持并发执行,则从线程池中获取空闲线程,并将支持并发执行的目标定时任务添加到空闲线程中;如果目标定时任务不支持并发执行,则在分配线程中依次添加排序后的目标定时任务。
其中,根据目标定时任务的配置信息判断目标定时任务是否支持并发执行,如果支持并发执行,则从已准备好的线程池中为每个目标定时任务任务分配新的线程来调度。且可选地,当线程池已无空闲的线程时,使用等待队列方式即可,即等待线程池中出现空闲的线程,再为每个目标定时任务任务分配新的线程来调度。当目标定时任务不支持并发,则按照优先级通过当前线程依次调度这些目标定时任务。
具体地,配置信息中还包括定时任务是否允许并发执行。如允许并发执行,那么在调度的时候将由应用在当前线程池中另选一线程执行调度任务。如不允许,服务器则根据所设计的优先级,由当前线程执行。针对支持并发执行的任务,可直接使用已准备好的线程池来为每个任务分配新的线程来调度。当线程池已无空闲时,使用等待队列方式即可。
在其中一个实施例中,上述定时任务执行方法还可以包括:判断在任务执行过程中是否存在异常;如果存在异常,则判断重新执行次数是否超过预设次数;如果没有超过预设次数,则继续判断目标定时任务是否存在关联的子任务;如果超过预设次数,则将目标定时任务的状态修改为异常,并对状态为异常的目标定时任务对应的数据进行回滚。
具体地,如果服务器判断任务执行过程中存在异常,则判断重试次数是否超过预设次数,例如3次,如果没有超过预设次数,则继续判断目标定时任务是否存在关联的子任务的步骤,如果超过了预设次数,则直接将目标定时任务的状态修改为异常,并对定时任务对应的数据进行回滚。
请参阅图3,图3为另一个实施例中的定时任务执行方法的流程图,在该实施例中,服务器在调度进行中周期性地或定时扫描主数据库中的配置信息以获得下次调度时间点与当前时间点对应的目标定时任务,然后根据配置信息中的任务优先级对所扫描到的目标定时任务进行排序,在排序完成后,则服务器按照排序数据依次读取每一个目标定时任务的配置信息以判断目标定时任务是否支持并发,即是否为多线程任务,如果支持并发,则从线程池中获取到多个空闲线程,其中所获取到的空闲线程的数量与目标定时任务的并发数相等,然后将目标定时任务和每个并发的目标定时任务添加到对应的空闲线程中,以使得每一个可以并发执行的目标定时任务分配一个空闲线程。且如果不支持并发,则在为目标定时任务分配一个分配线程,在分配线程中按照优先级依次执行上述目标定时任务,并在分配完线程后,将目标定时任务的状态修改为执行中。
为了清楚,以目标定时任务M、目标定时任务N、目标定时任务X、目标定时任务Y以及目标定时任务Z为例进行说明,其中目标定时任务M、目标定时任务N、目标定时任务X可以并发执行,而目标定时任务Y以及目标定时任务Z不支持并发执行,因此可以获取到三个空闲线程,每个空闲线程对应执行一个目标定时任务,其空闲线程中存在一个分配线程,例如分配线程1、空闲线程2以及空闲线程3,则分配线程1执行目标定时任务M,空闲线程2执行目标定时任务N,空闲线程3执行目标定时任务X。在分配线程1执行完目标定时任务M后,按照优先级继续执行目标定时任务Y以及目标定时任务Z,这里需要注意目标定时任务M的优先级是高于目标定时任务Y以及目标定时任务Z的优先级的。
服务器获取到状态为执行中的目标定时任务,并判断目标定时任务是否存在关联的子任务,如果不存在关联的子任务,则执行业务逻辑得到任务执行结果即可,如果存在关联的子任务,则获取到关联的子任务,并依次执行关联的子任务得到子任务执行结果,从而服务器可以根据子任务执行结果得到目标执行结果。
且优选地,服务器在整个任务执行的过程中,还需要判断任务执行是否存在异常,如果不存在异常,则更新对应的目标定时任务的状态为已完成,否则判断重试次数是否超过预设次数,如果超过预设次数,则将目标定时任务的状态修改为异常,并对状态为异常的目标定时任务对应的数据进行回滚。
上述实施例中,上述定时任务执行方法,定时查询主数据库中的配置文件,并根据配置文件判断定时任务是否要被执行,且在定时任务需要被执行时,则判断定时任务是否存在子任务,如果存在子任务,则获取到该些子任务进行执行,该些子任务是将定时任务划分的多个关联的任务,这样在定时任务执行出错,即其中一个子任务执行出错时,则只需要回滚该一个子任务对应的数据即可,不需要将整个定时任务的数据均进行回滚,不会占用大量的磁盘空间,从而也不会降低服务器的性能。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种定时任务执行装置,包括:检测模块100、判断模块200、子任务获取模块300和执行模块400,其中:
检测模块100,用于周期性地从主数据库读取定时任务的配置信息,并根据配置信息检测各个定时任务的下次调度时间点是否与当前时间点匹配。
判断模块200,用于若检测到下次调度时间点与当前时间点匹配的目标定时任务,则判断目标定时任务是否存在关联的子任务,关联的子任务是将目标定时任务进行划分得到的多个子任务。
子任务获取模块300,用于当目标定时任务存在关联的子任务时,则获取到关联的子任务。
执行模块400,用于执行子任务得到子任务执行结果,并根据子任务执行结果得到目标执行结果。
在其中一个实施例中,上述定时任务执行装置还包括:
接收模块,用于接收针对配置信息的修改请求,修改请求携带有任务的调度逻辑类型。
代码段获取模块,用于获取并显示与调度逻辑类型对应的代码段。
修改模块,用于接收针对代码段的修改指令,并根据修改指令对调度逻辑类型进行修改,根据修改后的调度逻辑类型生成新的配置信息。
在其中一个实施例中,上述判断模块200包括:
排序单元,用于从配置信息中读取目标定时任务的优先级,并根据优先级对目标定时任务进行排序。
分配单元,用于获取分配线程,并在分配线程中依次添加排序后的目标定时任务。
状态修改单元,用于修改添加到分配线程中的目标定时任务的状态修改为执行中。
判断单元,用于在分配线程中判断目标定时任务是否存在关联的子任务。
在其中一个实施例中,上述分配单元包括:
并发判断单元,用于根据配置信息判断目标定时任务是否支持并发执行。
添加单元,用于如果目标定时任务支持并发执行,则从线程池中获取空闲线程,并将支持并发执行的目标定时任务添加到空闲线程中。
处理单元,用于如果目标定时任务不支持并发执行,则在分配线程中依次添加排序后的目标定时任务。
在其中一个实施例中,上述定时任务执行装置还包括:
异常判断模块,用于判断在任务执行过程中是否存在异常。
执行次数判断模块,用于如果存在异常,则判断重新执行次数是否超过预设次数。
继续执行模块,用于如果没有超过预设次数,则继续判断目标定时任务是否存在关联的子任务。
回滚模块,用于如果超过预设次数,则将目标定时任务的状态修改为异常,并对状态为异常的目标定时任务对应的数据进行回滚。
关于定时任务执行装置的具体限定可以参见上文中对于定时任务执行方法的限定,在此不再赘述。上述定时任务执行装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储任务数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种定时任务执行方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:周期性地从主数据库读取定时任务的配置信息,并根据配置信息检测各个定时任务的下次调度时间点是否与当前时间点匹配;若检测到下次调度时间点与当前时间点匹配的目标定时任务,则判断目标定时任务是否存在关联的子任务,关联的子任务是将目标定时任务进行划分得到的多个子任务;当目标定时任务存在关联的子任务时,则获取到关联的子任务;执行子任务得到子任务执行结果,并根据子任务执行结果得到目标执行结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收针对配置信息的修改请求,修改请求携带有任务的调度逻辑类型;获取并显示与调度逻辑类型对应的代码段;接收针对代码段的修改指令,并根据修改指令对调度逻辑类型进行修改,根据修改后的调度逻辑类型生成新的配置信息。
在一个实施例中,处理器执行计算机程序时所实现的判断目标定时任务是否存在关联的子任务,包括:从配置信息中读取目标定时任务的优先级,并根据优先级对目标定时任务进行排序;获取分配线程,并在分配线程中依次添加排序后的目标定时任务;修改添加到分配线程中的目标定时任务的状态修改为执行中;在分配线程中判断目标定时任务是否存在关联的子任务。
在一个实施例中,处理器执行计算机程序时所实现的在分配线程中依次添加排序后的目标定时任务,包括:根据配置信息判断目标定时任务是否支持并发执行;如果目标定时任务支持并发执行,则从线程池中获取空闲线程,并将支持并发执行的目标定时任务添加到空闲线程中;如果目标定时任务不支持并发执行,则在分配线程中依次添加排序后的目标定时任务。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:判断在任务执行过程中是否存在异常;如果存在异常,则判断重新执行次数是否超过预设次数;如果没有超过预设次数,则继续判断目标定时任务是否存在关联的子任务;如果超过预设次数,则将目标定时任务的状态修改为异常,并对状态为异常的目标定时任务对应的数据进行回滚。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:周期性地从主数据库读取定时任务的配置信息,并根据配置信息检测各个定时任务的下次调度时间点是否与当前时间点匹配;若检测到下次调度时间点与当前时间点匹配的目标定时任务,则判断目标定时任务是否存在关联的子任务,关联的子任务是将目标定时任务进行划分得到的多个子任务;当目标定时任务存在关联的子任务时,则获取到关联的子任务;执行子任务得到子任务执行结果,并根据子任务执行结果得到目标执行结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收针对配置信息的修改请求,修改请求携带有任务的调度逻辑类型;获取并显示与调度逻辑类型对应的代码段;接收针对代码段的修改指令,并根据修改指令对调度逻辑类型进行修改,根据修改后的调度逻辑类型生成新的配置信息。
在一个实施例中,计算机程序被处理器执行时所实现的判断目标定时任务是否存在关联的子任务,包括:从配置信息中读取目标定时任务的优先级,并根据优先级对目标定时任务进行排序;获取分配线程,并在分配线程中依次添加排序后的目标定时任务;修改添加到分配线程中的目标定时任务的状态修改为执行中;在分配线程中判断目标定时任务是否存在关联的子任务。
在一个实施例中,计算机程序被处理器执行时所实现的在分配线程中依次添加排序后的目标定时任务,包括:根据配置信息判断目标定时任务是否支持并发执行;如果目标定时任务支持并发执行,则从线程池中获取空闲线程,并将支持并发执行的目标定时任务添加到空闲线程中;如果目标定时任务不支持并发执行,则在分配线程中依次添加排序后的目标定时任务。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:判断在任务执行过程中是否存在异常;如果存在异常,则判断重新执行次数是否超过预设次数;如果没有超过预设次数,则继续判断目标定时任务是否存在关联的子任务;如果超过预设次数,则将目标定时任务的状态修改为异常,并对状态为异常的目标定时任务对应的数据进行回滚。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种定时任务执行方法,所述方法包括:
周期性地从主数据库读取定时任务的配置信息,并根据所述配置信息检测各个定时任务的下次调度时间点是否与当前时间点匹配;
若检测到下次调度时间点与当前时间点匹配的目标定时任务,则判断所述目标定时任务是否存在关联的子任务,所述关联的子任务是将所述目标定时任务进行划分得到的多个子任务;
当所述目标定时任务存在关联的子任务时,则获取到关联的子任务;
执行所述子任务得到子任务执行结果,并根据所述子任务执行结果得到目标执行结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收针对所述配置信息的修改请求,所述修改请求携带有任务的调度逻辑类型;
获取并显示与所述调度逻辑类型对应的代码段;
接收针对所述代码段的修改指令,并根据修改指令对所述调度逻辑类型进行修改,根据修改后的调度逻辑类型生成新的配置信息。
3.根据权利要求1所述的方法,其特征在于,所述判断所述目标定时任务是否存在关联的子任务,包括:
从所述配置信息中读取所述目标定时任务的优先级,并根据所述优先级对所述目标定时任务进行排序;
获取分配线程,并在所述分配线程中依次添加排序后的所述目标定时任务;
修改添加到所述分配线程中的所述目标定时任务的状态修改为执行中;
在所述分配线程中判断所述目标定时任务是否存在关联的子任务。
4.根据权利要求3所述的方法,其特征在于,所述在所述分配线程中依次添加排序后的所述目标定时任务,包括:
根据所述配置信息判断所述目标定时任务是否支持并发执行;
如果所述目标定时任务支持并发执行,则从线程池中获取空闲线程,并将支持并发执行的所述目标定时任务添加到所述空闲线程中;
如果所述目标定时任务不支持并发执行,则在所述分配线程中依次添加排序后的所述目标定时任务。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包括:
判断在任务执行过程中是否存在异常;
如果存在异常,则判断重新执行次数是否超过预设次数;
如果没有超过预设次数,则继续判断所述目标定时任务是否存在关联的子任务;
如果超过预设次数,则将所述目标定时任务的状态修改为异常,并对状态为异常的目标定时任务对应的数据进行回滚。
6.一种定时任务执行装置,其特征在于,所述装置包括:
检测模块,用于周期性地从主数据库读取定时任务的配置信息,并根据所述配置信息检测各个定时任务的下次调度时间点是否与当前时间点匹配;
判断模块,用于若检测到下次调度时间点与当前时间点匹配的目标定时任务,则判断所述目标定时任务是否存在关联的子任务,所述关联的子任务是将所述目标定时任务进行划分得到的多个子任务;
子任务获取模块,用于当所述目标定时任务存在关联的子任务时,则获取到关联的子任务;
执行模块,用于执行所述子任务得到子任务执行结果,并根据所述子任务执行结果得到目标执行结果。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收针对所述配置信息的修改请求,所述修改请求携带有任务的调度逻辑类型;
代码段获取模块,用于获取并显示与所述调度逻辑类型对应的代码段;
修改模块,用于接收针对所述代码段的修改指令,并根据修改指令对所述调度逻辑类型进行修改,根据修改后的调度逻辑类型生成新的配置信息。
8.根据权利要求6所述的装置,其特征在于,所述判断模块包括:
排序单元,用于从所述配置信息中读取所述目标定时任务的优先级,并根据所述优先级对所述目标定时任务进行排序;
分配单元,用于获取分配线程,并在所述分配线程中依次添加排序后的所述目标定时任务;
状态修改单元,用于修改添加到所述分配线程中的所述目标定时任务的状态修改为执行中;
判断单元,用于在所述分配线程中判断所述目标定时任务是否存在关联的子任务。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010041356.5A CN111309372A (zh) | 2020-01-15 | 2020-01-15 | 定时任务执行方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010041356.5A CN111309372A (zh) | 2020-01-15 | 2020-01-15 | 定时任务执行方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111309372A true CN111309372A (zh) | 2020-06-19 |
Family
ID=71145166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010041356.5A Pending CN111309372A (zh) | 2020-01-15 | 2020-01-15 | 定时任务执行方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309372A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797110A (zh) * | 2020-06-23 | 2020-10-20 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN112306018A (zh) * | 2020-10-27 | 2021-02-02 | 广东智源机器人科技有限公司 | 自动流程控制方法、装置、计算机设备和存储介质 |
CN112433832A (zh) * | 2020-11-17 | 2021-03-02 | 北京沃东天骏信息技术有限公司 | 一种任务触发方法、装置、设备及计算机可读存储介质 |
CN112486502A (zh) * | 2020-11-30 | 2021-03-12 | 京东方科技集团股份有限公司 | 分布式任务的部署方法、装置、计算机设备和存储介质 |
CN112596888A (zh) * | 2020-12-29 | 2021-04-02 | 中国平安财产保险股份有限公司 | 倒计时任务的执行方法、装置、计算机设备及存储介质 |
CN112650566A (zh) * | 2020-12-21 | 2021-04-13 | 曙光信息产业股份有限公司 | 定时任务处理方法、装置、计算机设备和存储介质 |
CN112817847A (zh) * | 2021-01-28 | 2021-05-18 | 杭州网易再顾科技有限公司 | 数据处理任务的测试方法、装置、电子设备及存储介质 |
CN112819600A (zh) * | 2021-02-25 | 2021-05-18 | 深圳前海微众银行股份有限公司 | 定时任务的执行方法、装置、设备及计算机存储介质 |
CN112882767A (zh) * | 2021-02-08 | 2021-06-01 | 建信金融科技有限责任公司 | 一种spring batch批处理作业网页维护的方法及系统 |
CN113448734A (zh) * | 2021-07-15 | 2021-09-28 | 中国银行股份有限公司 | Spark SQL交互式场景下SQL中断系统及方法 |
CN113535560A (zh) * | 2021-07-14 | 2021-10-22 | 杭州网易云音乐科技有限公司 | 测试执行方法、装置、存储介质和计算设备 |
CN114756573A (zh) * | 2022-06-16 | 2022-07-15 | 恒生电子股份有限公司 | 数据处理方法、装置及系统 |
WO2023103379A1 (zh) * | 2021-12-09 | 2023-06-15 | 达闼机器人股份有限公司 | 任务执行方法、装置、设备和存储介质 |
-
2020
- 2020-01-15 CN CN202010041356.5A patent/CN111309372A/zh active Pending
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797110B (zh) * | 2020-06-23 | 2024-01-26 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN111797110A (zh) * | 2020-06-23 | 2020-10-20 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN112306018A (zh) * | 2020-10-27 | 2021-02-02 | 广东智源机器人科技有限公司 | 自动流程控制方法、装置、计算机设备和存储介质 |
CN112433832A (zh) * | 2020-11-17 | 2021-03-02 | 北京沃东天骏信息技术有限公司 | 一种任务触发方法、装置、设备及计算机可读存储介质 |
CN112486502A (zh) * | 2020-11-30 | 2021-03-12 | 京东方科技集团股份有限公司 | 分布式任务的部署方法、装置、计算机设备和存储介质 |
CN112650566B (zh) * | 2020-12-21 | 2022-03-22 | 曙光信息产业股份有限公司 | 定时任务处理方法、装置、计算机设备和存储介质 |
CN112650566A (zh) * | 2020-12-21 | 2021-04-13 | 曙光信息产业股份有限公司 | 定时任务处理方法、装置、计算机设备和存储介质 |
CN112596888A (zh) * | 2020-12-29 | 2021-04-02 | 中国平安财产保险股份有限公司 | 倒计时任务的执行方法、装置、计算机设备及存储介质 |
CN112817847A (zh) * | 2021-01-28 | 2021-05-18 | 杭州网易再顾科技有限公司 | 数据处理任务的测试方法、装置、电子设备及存储介质 |
CN112882767A (zh) * | 2021-02-08 | 2021-06-01 | 建信金融科技有限责任公司 | 一种spring batch批处理作业网页维护的方法及系统 |
CN112819600A (zh) * | 2021-02-25 | 2021-05-18 | 深圳前海微众银行股份有限公司 | 定时任务的执行方法、装置、设备及计算机存储介质 |
CN112819600B (zh) * | 2021-02-25 | 2024-06-07 | 深圳前海微众银行股份有限公司 | 定时任务的执行方法、装置、设备及计算机存储介质 |
CN113535560A (zh) * | 2021-07-14 | 2021-10-22 | 杭州网易云音乐科技有限公司 | 测试执行方法、装置、存储介质和计算设备 |
CN113535560B (zh) * | 2021-07-14 | 2024-06-25 | 杭州网易云音乐科技有限公司 | 测试执行方法、装置、存储介质和计算设备 |
CN113448734A (zh) * | 2021-07-15 | 2021-09-28 | 中国银行股份有限公司 | Spark SQL交互式场景下SQL中断系统及方法 |
CN113448734B (zh) * | 2021-07-15 | 2024-02-23 | 中国银行股份有限公司 | Spark SQL交互式场景下SQL中断系统及方法 |
WO2023103379A1 (zh) * | 2021-12-09 | 2023-06-15 | 达闼机器人股份有限公司 | 任务执行方法、装置、设备和存储介质 |
CN114756573A (zh) * | 2022-06-16 | 2022-07-15 | 恒生电子股份有限公司 | 数据处理方法、装置及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111309372A (zh) | 定时任务执行方法、装置、计算机设备和存储介质 | |
CN107844343B (zh) | 一种复杂服务端应用系统的升级系统及方法 | |
CN106970880B (zh) | 一种分布式自动化软件测试方法及系统 | |
CN110765026A (zh) | 自动化测试方法、装置、存储介质及设备 | |
CN110928653B (zh) | 跨集群任务的执行方法、装置、计算机设备和存储介质 | |
US8458136B2 (en) | Scheduling highly parallel jobs having global interdependencies | |
CN110633208A (zh) | 增量代码覆盖率测试方法及系统 | |
US8266624B2 (en) | Task dispatch utility coordinating the execution of tasks on different computers | |
JPH03188528A (ja) | ジョブ実行管理方法およびシステム | |
CN114168305A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
JP4971679B2 (ja) | プロセッサシステム及びプロセッサシステムの性能測定方法 | |
CN114564281A (zh) | 容器调度方法、装置、设备及存储介质 | |
CN113157569A (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN110688211B (zh) | 一种分布式作业调度方法 | |
CN115757172A (zh) | 测试执行方法、装置、存储介质及计算机设备 | |
CN115080214A (zh) | 支持异常时任务重跑的调度方法、系统、设备及存储介质 | |
CN114327673A (zh) | 一种任务启动方法、装置、电子设备及存储介质 | |
CN110245009B (zh) | 周期任务分配方法、装置、计算机设备和存储介质 | |
CN112395057A (zh) | 基于定时任务的数据处理方法、装置、计算机设备 | |
CN112612590A (zh) | 批量调度系统 | |
CN109240906B (zh) | 数据库配置信息适配方法、装置、计算机设备和存储介质 | |
CN112819600A (zh) | 定时任务的执行方法、装置、设备及计算机存储介质 | |
EP1011045B1 (en) | Object-oriented job scheduler | |
CN112363819A (zh) | 大数据任务动态编排调度方法、装置及计算设备 | |
US20100251246A1 (en) | System and Method for Generating Job Schedules |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |