CN111666141A - 任务调度方法、装置、设备及计算机存储介质 - Google Patents

任务调度方法、装置、设备及计算机存储介质 Download PDF

Info

Publication number
CN111666141A
CN111666141A CN202010530661.0A CN202010530661A CN111666141A CN 111666141 A CN111666141 A CN 111666141A CN 202010530661 A CN202010530661 A CN 202010530661A CN 111666141 A CN111666141 A CN 111666141A
Authority
CN
China
Prior art keywords
task
execution
target
executed
target task
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
Application number
CN202010530661.0A
Other languages
English (en)
Inventor
符修亮
万磊
李毅
钱进
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202010530661.0A priority Critical patent/CN111666141A/zh
Publication of CN111666141A publication Critical patent/CN111666141A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

本发明涉及金融科技(Fintech)技术领域,并公开了一种任务调度方法,该方法包括:获取主任务配置表中待执行的多个主任务,并对各主任务进行加锁处理,以获取执行任务;检测各执行任务中是否存在执行时间大于当前时间的目标任务;若存在,则获取目标任务对应的所有子任务,并根据各子任务执行目标任务,检测目标任务是否执行成功;未执行成功,则将目标任务加入至目标任务对应的延时队列,并根据目标任务的任务执行参数确定重试间隔时间,基于重试间隔时间对目标任务进行延时执行处理;若延时执行处理成功,则确定目标任务执行成功。本发明还公开了一种任务调度装置、设备和一种计算机存储介质。本发明提高了任务调度处理的效率。

Description

任务调度方法、装置、设备及计算机存储介质
技术领域
本发明涉及金融科技(Fintech)领域,尤其涉及任务调度方法、装置、设备及计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链Blockchain、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。目前在进行任务调度处理时,一般都是通过QUARTZ(开源作业调度框架)进行的,但是目前各个系统采用QUARTZ进行任务调度处理时,都是各自单独处理的,且无法对主任务对应的所有子系统的任务执行情况进行统一查看,无法确定主任务是否已执行成功,从而导致任务调度成本增加,效率低。因此,如何提高对任务调度处理的效率成为了目前亟待解决的技术问题。
发明内容
本发明的主要目的在于提出一种任务调度方法、装置、设备及计算机存储介质,旨在解决如何提高任务调度处理的效率的技术问题。
为实现上述目的,本发明提供一种任务调度方法,所述任务调度方法包括如下步骤:
获取主任务配置表中待执行的多个主任务,并对各所述主任务进行加锁处理,以获取执行任务;
检测各所述执行任务中是否存在执行时间大于当前时间的目标任务;
若存在,则获取所述目标任务对应的所有子任务,并根据各所述子任务执行所述目标任务,检测所述目标任务是否执行成功;
若未执行成功,则将所述目标任务加入至所述目标任务对应的延时队列,并根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理;
若所述延时执行处理成功,则确定所述目标任务执行成功。
可选地,获取主任务配置表中待执行的多个主任务的步骤,包括:
获取主任务配置表中的所有任务,并检测各所述任务的状态是否为目标状态;
若在各所述任务中存在任务的状态为目标状态,则将所述目标状态对应的任务作为主任务。
可选地,对各所述主任务进行加锁处理,以获取执行任务的步骤,包括:
依次遍历各所述主任务,并确定当前遍历的当前主任务对应的redis中是否有值;
若否,则向所述redis中输入目标值,以完成对所述当前主任务的加锁处理,并将所述当前主任务作为执行任务,直至各所述主任务遍历完成。
可选地,检测所述目标任务是否执行成功的步骤,包括:
检测各所述子任务中是否存在未执行成功的子任务;
若在各所述子任务中存在未执行成功的子任务,则确定所述目标任务未执行成功。
可选地,基于所述重试间隔时间对所述目标任务进行延时执行处理的步骤之后,包括:
若所述延时执行处理未成功,则执行所述根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理的步骤,并检测所述目标任务进行延时执行处理的次数是否大于预设次数;
若大于,则确定所述目标任务执行失败。
可选地,检测各所述执行任务中是否存在执行时间大于当前时间的目标任务的步骤之前,包括:
依次遍历各所述执行任务,并确定当前遍历的当前执行任务对应的任务模式,检测所述任务模式是否为delay模式;
若是,则基于预设的时间间隔确定所述当前执行任务的执行时间,直至各所述执行任务遍历完成。
可选地,检测所述任务模式是否为delay模式的步骤之后,包括:
若所述任务模式是cron模式,则获取预设的固定时间节点,并根据所述固定时间节点确定所述当前执行任务的执行时间,直至各所述执行任务遍历完成。
此外,为实现上述目的,本发明还提供一种任务调度装置,所述任务调度装置包括:
获取模块,用于获取主任务配置表中待执行的多个主任务,并对各所述主任务进行加锁处理,以获取执行任务;
检测模块,用于检测各所述执行任务中是否存在执行时间大于当前时间的目标任务;
执行模块,用于若存在,则获取所述目标任务对应的所有子任务,并根据各所述子任务执行所述目标任务,检测所述目标任务是否执行成功;
延时执行模块,用于若未执行成功,则将所述目标任务加入至所述目标任务对应的延时队列,并根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理;
确定模块,用于若所述延时执行处理成功,则确定所述目标任务执行成功。
此外,为实现上述目的,本发明还提供一种任务调度设备,所述任务调度设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的任务调度程序,所述任务调度程序被所述处理器执行时实现如上所述的任务调度方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有任务调度程序,所述任务调度程序被处理器执行时实现如上所述的任务调度方法的步骤。
本发明通过获取主任务配置表中待执行的多个主任务,并对各所述主任务进行加锁处理,以获取执行任务;检测各所述执行任务中是否存在执行时间大于当前时间的目标任务;若存在,则获取所述目标任务对应的所有子任务,并根据各所述子任务执行所述目标任务,检测所述目标任务是否执行成功;若未执行成功,则将所述目标任务加入至所述目标任务对应的延时队列,并根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理;若所述延时执行处理成功,则确定所述目标任务执行成功。通过先对主任务配置表中的多个主任务进行加锁处理,以获取执行任务,并基于执行任务确定执行时间大于当前时间的目标任务,从而保障了目标任务的有效进行,避免同一个任务同时被多次执行的现象发生,保障了任务执行的效率,并会根据目标任务对应的所有子任务执行目标任务,并在目标任务未执行成功时,根据重试间隔时间对目标任务进行延时执行处理,从而实现了对各个子任务的串联,提高了检测目标任务是否执行成功的准确性,并且对未执行成功的目标任务进行延时执行处理,保障了目标任务执行的成功率,也提高了任务调度处理的效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的任务调度设备结构示意图;
图2为本发明任务调度方法第一实施例的流程示意图;
图3为本发明任务调度装置的装置模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的任务调度设备结构示意图。
本发明实施例任务调度设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该任务调度设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的任务调度设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及任务调度程序。
在图1所示的任务调度设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的任务调度程序,并执行下述任务调度方法中的操作。
基于上述硬件结构,提出本发明任务调度方法实施例。
参照图2,图2为本发明任务调度方法第一实施例的流程示意图,所述方法包括:
步骤S10,获取主任务配置表中待执行的多个主任务,并对各所述主任务进行加锁处理,以获取执行任务;
在本实施例中,应用任务调度方法的任务调度主机至少开启两个进程进行任务调度管理,其中一个是任务状态守护进程,负责监控任务的执行状态,另一个是任务执行进程,负责调度可执行的任务。并且本实施例中的主任务配置表主要是负责维护某个任务的执行状态,表字段包括:任务名称,任务ID(Identity document,账号),任务模式,任务执行时间表达式,任务执行服务器地址列表,下次执行时间,任务执行状态和任务执行参数。其中,任务模式包括delay(延迟)模式和cron(计划任务)模式,当任务模式为delay时,表示任务会以一个固定的时间间隔执行,而时间间隔的值可以根据任务执行时间表达式来确定,单位是毫秒,例如,某一个任务的任务模式是delay,任务执行时间表达式为1000时,则可以认为该任务每隔1000毫秒就会自动执行一次。但是当任务模式是cron时,任务执行时间表达式配置则为cron表达式,任务的执行频率会根据所配置的cron表达式来定,例如,当任务执行时间表达式配置为0 10 6 1*?,表示每个月1日的凌晨6点10分执行一次。其中,任务执行状态主要有I-初始化,N-可执行,W-执行中,S-执行成功,F-执行失败。并且在本实施例中,除了提供主任务配置表,还需要子任务配置表,子任务配置表主要是维护某个主任务对应的多个子任务的执行状态,表字段包括:主字段ID,子任务ID,任务执行主机列表和任务执行状态(包括I-初始化,N-可执行,W-执行中,S-执行成功,F-执行失败)。
在本实施例中,主任务配置表中的主任务可以被多个服务器(即任务调度服务器)同时调用,而在每个任务访问器中,会至少启动一个进程检测任务配置表(包括主任务配置表和子任务配置表)中的任务是否可执行。也就是获取主任务配置表中待执行的多个主任务。而检测任务是否可执行的方式可以是对任务执行状态进行查询。
并且在本实施例中,每个任务调度服务器中,除了上述任务状态守护进程外,还有任务执行进程,该任务执行进程具有多个执行线程。其中,执行线程的数量可以根据待执行的主任务的数量来定,并且为避免线程数量过多,导致服务器资源浪费,一般会设置一个最大的执行线程M(如M=15),并在任务数量为n,集群的服务器数量为c时,执行线程数V=min(M,n/c)。并且为了防止多个线程同时处理同一个任务,可以先对待处理的各个主任务进行加锁处理,以获取加锁后的主任务,即执行任务。而加锁处理的方式可以是采用redis+lua的方式进行加锁,即在redis服务器中以TASK_ID为主键查询redis(数据结构服务器)中是否有值,如果没值,则将TASK_ID写入redis,同时返回true(准确),说明已抢到锁;如果有值,说明已有其他服务器抢到了锁,返回false(错误)。并在确定主任务进行加锁处理后,可以将其作为执行任务,并将任务状态调整为可执行。
步骤S20,检测各所述执行任务中是否存在执行时间大于当前时间的目标任务;
在获取到各个执行任务后,可以依次检测各个执行任务中是否存在执行时间大于当前时间的目标任务,并根据不同的检测结果执行不同的操作。其中,执行时间是执行任务下次执行的时间。
步骤S30,若存在,则获取所述目标任务对应的所有子任务,并根据各所述子任务执行所述目标任务,检测所述目标任务是否执行成功;
当经过判断发现存在有执行时间大于当前时间的目标任务时,可以执行目标任务,也就是任务执行服务器对目标任务携带的通知信息进行解析,得到TASK_ID和任务执行参数,然后以TASK_ID为key值,任务执行参数为value值,写入redis服务器,并根据TASK_ID匹配对应的执行方法执行目标任务,再检测目标任务是否执行成功,并根据不同的检测结果执行不同的操作。但是若不存在有执行时间大于当前时间的目标任务,则继续等待,直至存在目标任务。
其中,检测目标任务是否执行成功的方式可以是检测目标任务对应的所有子任务是否执行成功来确定,即任务状态守护进程根据子任务的执行结果来维护目标任务的执行状态,检测目标任务对应的所有子任务的执行状态,若都是执行成功,则可以将目标任务的执行状态修改为执行成功,也就是确定目标任务执行成功。若存在部分子任务的执行状态为执行失败,则将目标任务的执行状态修改为执行失败,也就是确定目标任务执行失败。
步骤S40,若未执行成功,则将所述目标任务加入至所述目标任务对应的延时队列,并根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理;
步骤S50,若所述延时执行处理成功,则确定所述目标任务执行成功。
当经过判断发现目标任务为执行成功时,则可以对目标任务进行延时执行处理,即将目标任务加入到延时队列中进行执行,并获取目标任务所在任务配置表中的任务执行参数EXEC_PARAMS,并在任务执行参数中获取重试间隔时间,当经过重试间隔时间后,对目标任务进行执行处理,即延时执行处理,若延时执行处理成功,则可以确定目标任务执行成功,但是若延时执行处理失败,则需要获取新的重试间隔时间继续对目标任务进行执行处理,直至目标任务执行成功,或目标任务进行延时执行处理的次数大于一定值,还是处于执行失败状态,才停止对目标任务进行延时执行处理。也就是从redis中读取之前保存的key为TASK_ID的信息,从EXEC_PARAMS中获取到重试的间隔时间配置REDO_TIME_CFG,其配置格式可以设置如下:1,5,10,30,60,表示需要重试5次,第一次重试间隔时间为1分钟,第二次重试间隔时间为5分钟,以此类推。并且从redis中读取key值,若没有读到,则确定首次执行失败,并将key设置为1,继续将目标任务放入redis的延时队列中进行重试。在进行延时执行处理时,会启动一个线程不断的扫描redis的延时队列,若目标任务执行成功,则将key值删除,并将redis中的TASK_ID的信息删除,再把执行结果回调至任务调度服务器。若执行失败,则会将key值加1,并根据配置的重试间隔时间放入redis延时队里等待重试处理,当重试的次数超出配置值时,则认为是执行失败,此时将任务执行失败的结果回调任务调度主机,同时将key值删除,并将redis中的TASK_ID的信息删除。但是若目标任务执行成功,则将之前写入redis的key为TASK_ID的数据删除,然后将执行结果回调任务调度服务器。
并且在本实施例中是通过任务调度服务器对所有的调度任务(包括主任务和子任务)进行管理,并通过任务状态守护进程来维护各个调度任务的执行状态,从而可以实现对所有调度任务进行统一关系,各个调度任务的执行状态也可以统一在任务调度服务器中查看。同时,在任务并发控制方面,采用redis+lua的加锁方式,降低了对数据库性能的依赖,并且会利用redis的延时队列实现任务执行失败后的自动重试机制。
在本实施例中,通过获取主任务配置表中待执行的多个主任务,并对各所述主任务进行加锁处理,以获取执行任务;检测各所述执行任务中是否存在执行时间大于当前时间的目标任务;若存在,则获取所述目标任务对应的所有子任务,并根据各所述子任务执行所述目标任务,检测所述目标任务是否执行成功;若未执行成功,则将所述目标任务加入至所述目标任务对应的延时队列,并根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理;若所述延时执行处理成功,则确定所述目标任务执行成功。通过先对主任务配置表中的多个主任务进行加锁处理,以获取执行任务,并基于执行任务确定执行时间大于当前时间的目标任务,从而保障了目标任务的有效进行,避免同一个任务同时被多次执行的现象发生,保障了任务执行的效率,并会根据目标任务对应的所有子任务执行目标任务,并在目标任务未执行成功时,根据重试间隔时间对目标任务进行延时执行处理,从而实现了对各个子任务的串联,提高了检测目标任务是否执行成功的准确性,并且对未执行成功的目标任务进行延时执行处理,保障了目标任务执行的成功率,也提高了任务调度处理的效率。
进一步地,基于本发明任务调度方法第一实施例,提出本发明任务调度方法第二实施例。本实施例是本发明第一实施例的步骤S10,获取主任务配置表中待执行的多个主任务的步骤的细化,包括:
步骤a,获取主任务配置表中的所有任务,并检测各所述任务的状态是否为目标状态;
在本实施例中,还需要先获取主任务配置表中用户提前设置的所有任务,然后再依次检测各个任务的状态是否为目标状态,以确定是否可以执行主任务配置表中的任务。并根据不同的检测结果执行不同的操作。其中,任务的状态包括I-初始化,N-可执行,W-执行中,S-执行成功,F-执行失败。而目标状态则可以是I-初始化,S-执行成功和F-执行失败。
步骤b,若在各所述任务中存在任务的状态为目标状态,则将所述目标状态对应的任务作为主任务。
当经过判断发现在各个任务中存在任务的状态为目标状态时,则可以直接将此任务作为主任务,以进行任务加锁处理。但是若在各个任务中不存在任务的状态为目标状态,则继续检测查询,直至发现目标状态对应的任务。
在本实施例中,通过获取主任务配置表中的所有任务,并将目标状态对应的任务作为主任务,从而保障了获取到的主任务的准确性。
进一步地,对各所述主任务进行加锁处理,以获取执行任务的步骤,包括:
步骤c,依次遍历各所述主任务,并确定当前遍历的当前主任务对应的redis中是否有值;
在本实施例中,当需要对各个主任务进行加锁处理时,可以选择redis+lua的方式进行加锁处理,即依次遍历各个主任务,并以TASK_ID为主键确定当前遍历的当前主任务对应的redis(数据结构服务器)中是否有值,并基于不同的确定结果执行不同的操作。
步骤d,若否,则向所述redis中输入目标值,以完成对所述当前主任务的加锁处理,并将所述当前主任务作为执行任务,直至各所述主任务遍历完成。
当经过判断发现当前遍历的当前主任务对应的redis中没有值,则可以确定当前主任务没有被其它线程处理,此时就可以将TASK_ID写入该redis中,以表明当前主任务已抢到锁,即完成了对当前主任务的加锁处理,此时就可以将经过加锁处理的当前主任务作为执行任务。但是若当前主任务对的redis中有值,则确定当前主任务正在被其它线程处理,需要等待redis中的值被清空,并将TASK_ID写入该redis中,直至各个主任务遍历完成。其中,加锁操作是用lua脚本在redis服务器中进行的。目标值可以是用户提前设置的值,如TASK_ID。
在本实施例中,通过遍历各个主任务,并在确定当前主任务对应的redis中没有值时,输入目标值,完成对当前主任务的加锁处理,以获取执行任务,直至各个主任务遍历完成,从而保障了获取到的执行任务的准确性。
进一步地,检测所述目标任务是否执行成功的步骤,包括:
步骤e,检测各所述子任务中是否存在未执行成功的子任务;
在本实施例中,在检测目标任务是否执行成功时,需要先确定目标任务对应的子任务配置表,其中子任务配置表中放置有目标任务的所有子任务,并检测子任务配置表中的所有子任务中是否存在未执行成功的子任务,基于不同的检测结果来确定目标任务是否执行成功。
步骤f,若在各所述子任务中存在未执行成功的子任务,则确定所述目标任务未执行成功。
当经过判断发现各个子任务部分执行成功,部分执行失败,也就是在各个子任务中存在未执行成功的子任务,则可以确定目标任务未执行成功。但是若各个子任务均执行成功,则可以确定目标任务已执行成功。
在本实施例中,通过在确定各个子任务中存在未执行成功的子任务时,确定目标任务未执行成功,从而保障了检测目标任务是否执行成功的准确性。
进一步地,基于所述重试间隔时间对所述目标任务进行延时执行处理的步骤之后,包括:
步骤h,若所述延时执行处理未成功,则执行所述根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理的步骤,并检测所述目标任务进行延时执行处理的次数是否大于预设次数;
在本实施例中,当发现目标任务进行延时执行处理未成功,则需要继续进行延时执行处理,也就是根据任务执行参数确定新的重试间隔时间(该新的重试间隔时间可以和重试间隔时间相同,也可以不同),并在经过新的重试间隔时间后,对目标任务进行执行处理,若还是未执行成功,则继续对目标任务进行延时执行处理。并且在目标任务进行延时执行处理时,还会统计目标任务进行延时执行处理的次数,检测该次数是否大于预设次数(用户提前设置的任意次数),并根据不同的检测结果执行不同的操作,也就是确定目标任务进行延时执行处理时,能否在预设次数之前执行成功,若能,则会在执行成功时,停止对目标任务进行延时执行处理的操作。
步骤x,若大于,则确定所述目标任务执行失败。
当经过判断发现目标任务进行延时执行处理的次数大于预设次数,则可以目标任务执行失败,但是若目标任务进行延时处理的次数小于或等于预设次数,则可以确定目标任务已执行成功,并在执行成功时,停止对目标任务进行延时执行处理的操作。
在本实施例中,通过在延时执行处理未成功,会继续进行延时执行处理,并在目标任务进行延时执行处理的次数大于预设次数时,确定目标任务执行失败,从而在避免资源浪费的同时,又提高了目标任务执行的成功率。
进一步地,检测各所述执行任务中是否存在执行时间大于当前时间的目标任务的步骤之前,包括:
步骤k,依次遍历各所述执行任务,并确定当前遍历的当前执行任务对应的任务模式,检测所述任务模式是否为delay模式;
在本实施例中,在对执行任务进行执行处理前,需要依次遍历各个执行任务,并确定当前遍历的当前执行任务的任务模式是否为delay模式,并根据不同的检测结果执行不同的操作。其中,任务模式包括delay模式和cron模式。
步骤m,若是,则基于预设的时间间隔确定所述当前执行任务的执行时间,直至各所述执行任务遍历完成。
当经过判断发现任务模式是delay模式,则可以直接获取用户提前设置的时间间隔,并根据该时间间隔确定当前执行任务的执行时间,而时间间隔的确定可以是用户提前根据delay模式对应的任务事件表达式进行设置确定的,再根据该执行时间执行当前执行任务。例如,若某一任务的任务模式是delay,用户根据任务事件表达式设置的时间间隔为1000,单位为毫秒时,可以确定该任务每隔1000毫秒执行一次。直至各个任务遍历完成。
在本实施例中,通过遍历各个执行任务,在当前执行任务的任务模式是delay时,根据预设的时间间隔确定执行时间,直至各个执行任务遍历完成,从而保障了获取到的执行时间的准确性。
进一步地,检测所述任务模式是否为DELAY模式的步骤之后,包括:
步骤n,若所述任务模式是cron模式,则获取预设的固定时间节点,并根据所述固定时间节点确定所述当前执行任务的执行时间,直至各所述执行任务遍历完成。
当经过判断发现任务模式是cron模式时,则可以直接获取用户提前设置的固定时间节点,并根据该固定时间节点确定当前执行任务的执行时间,而固定时间节点的确定可以是用户提前根据cron模式对应的任务事件表达式进行设置确定的,再根据该执行时间执行当前执行任务。例如,若某一任务的任务模式是cron,设置的任务事件表达式为0 10 61*?,则可以确定该任务在每个月1日的凌晨6点10分执行一次,直至各个执行任务遍历完成。
在本实施例中,通过在确定任务模式是cron模式时,根据预设的固定时间节点确定执行时间,直至各个执行任务遍历完成,从而保障了获取到的执行时间的准确性。
本发明还提供一种任务调度装置,参照图3,所述任务调度装置包括:
获取模块A10,用于获取主任务配置表中待执行的多个主任务,并对各所述主任务进行加锁处理,以获取执行任务;
检测模块A20,用于检测各所述执行任务中是否存在执行时间大于当前时间的目标任务;
执行模块A30,用于若存在,则获取所述目标任务对应的所有子任务,并根据各所述子任务执行所述目标任务,检测所述目标任务是否执行成功;
延时执行模块A40,用于若未执行成功,则将所述目标任务加入至所述目标任务对应的延时队列,并根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理;
确定模块A50,用于若所述延时执行处理成功,则确定所述目标任务执行成功。
可选地,所述获取模块A10,还用于:
获取主任务配置表中的所有任务,并检测各所述任务的状态是否为目标状态;
若在各所述任务中存在任务的状态为目标状态,则将所述目标状态对应的任务作为主任务。
可选地,所述获取模块A10,还用于:
依次遍历各所述主任务,并确定当前遍历的当前主任务对应的redis中是否有值;
若否,则向所述redis中输入目标值,以完成对所述当前主任务的加锁处理,并将所述当前主任务作为执行任务,直至各所述主任务遍历完成。
可选地,所述执行模块A30,还用于:
检测各所述子任务中是否存在未执行成功的子任务;
若在各所述子任务中存在未执行成功的子任务,则确定所述目标任务未执行成功。
可选地,所述延时执行模块A40,还用于:
若所述延时执行处理未成功,则执行所述根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理的步骤,并检测所述目标任务进行延时执行处理的次数是否大于预设次数;
若大于,则确定所述目标任务执行失败。
可选地,所述检测模块A20,还用于:
依次遍历各所述执行任务,并确定当前遍历的当前执行任务对应的任务模式,检测所述任务模式是否为delay模式;
若是,则基于预设的时间间隔确定所述当前执行任务的执行时间,直至各所述执行任务遍历完成。
可选地,所述检测模块A20,还用于:
若所述任务模式是cron模式,则获取预设的固定时间节点,并根据所述固定时间节点确定所述当前执行任务的执行时间,直至各所述执行任务遍历完成。
上述各程序单元所执行的方法可参照本发明任务调度方法各个实施例,此处不再赘述。
本发明还提供一种计算机存储介质。
本发明计算机存储介质上存储有任务调度程序,所述任务调度程序被处理器执行时实现如上所述的任务调度方法的步骤。
其中,在所述处理器上运行的任务调度程序被执行时所实现的方法可参照本发明任务调度方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种任务调度方法,其特征在于,所述任务调度方法包括如下步骤:
获取主任务配置表中待执行的多个主任务,并对各所述主任务进行加锁处理,以获取执行任务;
检测各所述执行任务中是否存在执行时间大于当前时间的目标任务;
若存在,则获取所述目标任务对应的所有子任务,并根据各所述子任务执行所述目标任务,检测所述目标任务是否执行成功;
若未执行成功,则将所述目标任务加入至所述目标任务对应的延时队列,并根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理;
若所述延时执行处理成功,则确定所述目标任务执行成功。
2.如权利要求1所述的任务调度方法,其特征在于,所述获取主任务配置表中待执行的多个主任务的步骤,包括:
获取主任务配置表中的所有任务,并检测各所述任务的状态是否为目标状态;
若在各所述任务中存在任务的状态为目标状态,则将所述目标状态对应的任务作为主任务。
3.如权利要求1所述的任务调度方法,其特征在于,所述对各所述主任务进行加锁处理,以获取执行任务的步骤,包括:
依次遍历各所述主任务,并确定当前遍历的当前主任务对应的redis中是否有值;
若否,则向所述redis中输入目标值,以完成对所述当前主任务的加锁处理,并将所述当前主任务作为执行任务,直至各所述主任务遍历完成。
4.如权利要求1所述的任务调度方法,其特征在于,所述检测所述目标任务是否执行成功的步骤,包括:
检测各所述子任务中是否存在未执行成功的子任务;
若在各所述子任务中存在未执行成功的子任务,则确定所述目标任务未执行成功。
5.如权利要求1所述的任务调度方法,其特征在于,所述基于所述重试间隔时间对所述目标任务进行延时执行处理的步骤之后,包括:
若所述延时执行处理未成功,则执行所述根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理的步骤,并检测所述目标任务进行延时执行处理的次数是否大于预设次数;
若大于,则确定所述目标任务执行失败。
6.如权利要求1-5任一项所述的任务调度方法,其特征在于,所述检测各所述执行任务中是否存在执行时间大于当前时间的目标任务的步骤之前,包括:
依次遍历各所述执行任务,并确定当前遍历的当前执行任务对应的任务模式,检测所述任务模式是否为delay模式;
若是,则基于预设的时间间隔确定所述当前执行任务的执行时间,直至各所述执行任务遍历完成。
7.如权利要求6所述的任务调度方法,其特征在于,所述检测所述任务模式是否为delay模式的步骤之后,包括:
若所述任务模式是cron模式,则获取预设的固定时间节点,并根据所述固定时间节点确定所述当前执行任务的执行时间,直至各所述执行任务遍历完成。
8.一种任务调度装置,其特征在于,所述任务调度装置包括:
获取模块,用于获取主任务配置表中待执行的多个主任务,并对各所述主任务进行加锁处理,以获取执行任务;
检测模块,用于检测各所述执行任务中是否存在执行时间大于当前时间的目标任务;
执行模块,用于若存在,则获取所述目标任务对应的所有子任务,并根据各所述子任务执行所述目标任务,检测所述目标任务是否执行成功;
延时执行模块,用于若未执行成功,则将所述目标任务加入至所述目标任务对应的延时队列,并根据所述目标任务的任务执行参数确定重试间隔时间,基于所述重试间隔时间对所述目标任务进行延时执行处理;
确定模块,用于若所述延时执行处理成功,则确定所述目标任务执行成功。
9.一种任务调度设备,其特征在于,所述任务调度设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的任务调度程序,所述任务调度程序被所述处理器执行时实现如权利要求1至7中任一项所述的任务调度方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有任务调度程序,所述任务调度程序被处理器执行时实现如权利要求1至7中任一项所述的任务调度方法的步骤。
CN202010530661.0A 2020-06-11 2020-06-11 任务调度方法、装置、设备及计算机存储介质 Pending CN111666141A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010530661.0A CN111666141A (zh) 2020-06-11 2020-06-11 任务调度方法、装置、设备及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010530661.0A CN111666141A (zh) 2020-06-11 2020-06-11 任务调度方法、装置、设备及计算机存储介质

Publications (1)

Publication Number Publication Date
CN111666141A true CN111666141A (zh) 2020-09-15

Family

ID=72386720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010530661.0A Pending CN111666141A (zh) 2020-06-11 2020-06-11 任务调度方法、装置、设备及计算机存储介质

Country Status (1)

Country Link
CN (1) CN111666141A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112529470A (zh) * 2020-12-25 2021-03-19 深圳前海微众银行股份有限公司 网站机器人的任务执行方法、装置、设备及存储介质
CN112819600A (zh) * 2021-02-25 2021-05-18 深圳前海微众银行股份有限公司 定时任务的执行方法、装置、设备及计算机存储介质
CN114326670A (zh) * 2021-12-24 2022-04-12 北京龙鼎源科技股份有限公司 控制器执行任务的检测方法、装置、存储介质及电子装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112529470A (zh) * 2020-12-25 2021-03-19 深圳前海微众银行股份有限公司 网站机器人的任务执行方法、装置、设备及存储介质
CN112529470B (zh) * 2020-12-25 2024-03-19 深圳前海微众银行股份有限公司 网站机器人的任务执行方法、装置、设备及存储介质
CN112819600A (zh) * 2021-02-25 2021-05-18 深圳前海微众银行股份有限公司 定时任务的执行方法、装置、设备及计算机存储介质
CN114326670A (zh) * 2021-12-24 2022-04-12 北京龙鼎源科技股份有限公司 控制器执行任务的检测方法、装置、存储介质及电子装置
CN114326670B (zh) * 2021-12-24 2024-03-05 北京龙鼎源科技股份有限公司 控制器执行任务的检测方法、装置、存储介质及电子装置

Similar Documents

Publication Publication Date Title
US8412984B2 (en) Debugging in a cluster processing network
US11307939B2 (en) Low impact snapshot database protection in a micro-service environment
US20160246643A1 (en) Method and apparatus for scheduling blocking tasks
CN111666141A (zh) 任务调度方法、装置、设备及计算机存储介质
CA3159788A1 (en) Version releasing method and device based on multi-environment offline task
US20080244589A1 (en) Task manager
CN110971700B (zh) 分布式锁的实现方法及装置
WO2017193737A1 (zh) 一种软件测试方法及系统
US11372871B1 (en) Programmable framework for distributed computation of statistical functions over time-based data
CN112181621A (zh) 一种任务调度系统、方法、设备及存储介质
CN113157411B (zh) 一种基于Celery的可靠可配置任务系统及装置
CN113407973B (zh) 软件功能权限管理方法、系统、服务器及存储介质
CN112231073A (zh) 一种分布式任务调度方法及其装置
CN113467908A (zh) 任务执行方法、装置、计算机可读存储介质及终端设备
US10523746B2 (en) Coexistence of a synchronous architecture and an asynchronous architecture in a server
CN117076096A (zh) 任务流程的执行方法、装置、计算机可读介质及电子设备
US11086696B2 (en) Parallel cloned workflow execution
WO2023185137A1 (zh) 一种任务管理方法、装置、设备及存储介质
US8806500B2 (en) Dynamically setting the automation behavior of resources
CN110188008B (zh) 作业调度主备切换方法、装置、计算机设备及存储介质
CN115499493A (zh) 异步事务处理方法、装置、存储介质及计算机设备
JP6751231B2 (ja) ジョブスケジューラ試験プログラム、ジョブスケジューラ試験方法及び並列処理装置
US10303580B2 (en) Controlling debug processing
CN112988365B (zh) 一种线程管理方法、装置、设备及介质
US10802878B2 (en) Phased start and stop of resources in a mainframe environment

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