CN114489997A - 定时任务调度方法、装置、设备和介质 - Google Patents

定时任务调度方法、装置、设备和介质 Download PDF

Info

Publication number
CN114489997A
CN114489997A CN202210142340.2A CN202210142340A CN114489997A CN 114489997 A CN114489997 A CN 114489997A CN 202210142340 A CN202210142340 A CN 202210142340A CN 114489997 A CN114489997 A CN 114489997A
Authority
CN
China
Prior art keywords
timing
task
tasks
timing task
time
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
CN202210142340.2A
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202210142340.2A priority Critical patent/CN114489997A/zh
Publication of CN114489997A publication Critical patent/CN114489997A/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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种定时任务调度方法、装置、设备、介质和程序产品,涉及计算机技术领域,尤其涉及云计算技术。具体实现方案为:轮询内存延迟队列中的定时任务,根据定时任务各自的配置信息,获取未来设定时间段内待执行的定时任务集合,其中,配置信息至少包括定时规则;将定时任务集合添加到时间轮中;按照时间轮算***询所述时间轮,根据定时规则从所述定时任务集合中获取当前待执行的目标定时任务队列;将所述目标定时任务队列发送至线程池,其中,所述线程池中的线程用于将所述目标定时任务队列中的目标定时任务分发至执行器执行。本公开的技术方案从内存延迟队列中轮询定时任务,并结合时间轮实现定时任务的分配,保证了定时任务的高效执行。

Description

定时任务调度方法、装置、设备和介质
技术领域
本公开涉及计算机技术领域,尤其涉及云计算技术,具体涉及一种定时任务调度方法、装置、设备、介质和程序产品。
背景技术
随着云业务的快速发展,越来越多的企业选择了云作为基础设施的首选,云上产品的定时健康检查也越来越重要。
因此,面对众多的定时健康检查任务,如何有效的对其进行管理,保证定时任务的高效执行,对于云上产品来说则显得尤为重要。
发明内容
本公开提供了一种定时任务调度方法、装置、设备、介质和程序产品。
根据本公开的一方面,提供了一种定时任务调度方法,应用于调度器,所述方法包括:
轮询内存延迟队列中的定时任务,根据所述定时任务各自的配置信息,获取未来设定时间段内待执行的定时任务集合,其中,所述配置信息至少包括定时规则;
将所述定时任务集合添加到时间轮中;
按照时间轮算***询所述时间轮,根据所述定时规则从所述定时任务集合中获取当前待执行的目标定时任务队列;
将所述目标定时任务队列发送至线程池,其中,所述线程池中的线程用于将所述目标定时任务队列中的目标定时任务分发至执行器执行。
根据本公开的另一方面,提供了一种定时任务调度装置,配置于调度器,所述装置包括:
内存轮询模块,用于轮询内存延迟队列中的定时任务,根据所述定时任务各自的配置信息,获取未来设定时间段内待执行的定时任务集合,其中,所述配置信息至少包括定时规则;
任务添加模块,用于将所述定时任务集合添加到时间轮中;
时间轮轮询模块,用于按照时间轮算***询所述时间轮,根据所述定时规则从所述定时任务集合中获取当前待执行的目标定时任务队列;
任务发送模块,用于将所述目标定时任务队列发送至线程池,其中,所述线程池中的线程用于将所述目标定时任务队列中的目标定时任务分发至执行器执行。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开任意实施例所述的定时任务调度方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使计算机执行本公开任意实施例所述的定时任务调度方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本公开任意实施例所述的定时任务调度方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的一种定时任务调度方法的示意图;
图2a是根据本公开实施例的一种定时任务调度方法的示意图;
图2b是本公开实施例的时间轮的示意图;
图3是根据本公开实施例的一种定时任务调度方法的示意图;
图4是根据本公开实施例的一种定时任务调度方法的示意图;
图5是根据本公开实施例的一种定时任务调度装置的结构示意图;
图6是用来实现本公开实施例的定时任务调度方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本公开实施例的定时任务调度方法的流程示意图,本实施例可适用于对定时任务进行调度,以高效执行定时任务的情况,涉及计算机技术领域,尤其涉及云计算技术。该方法可由一种定时任务调度装置来执行,该装置采用软件和/或硬件的方式实现,优选是配置于电子设备中,例如计算机设备或服务器等。如图1所示,该方法具体包括如下:
S101、轮询内存延迟队列中的定时任务,根据定时任务各自的配置信息,获取未来设定时间段内待执行的定时任务集合,其中,所述配置信息至少包括定时规则。
其中,定时任务是需要定时执行的任务,例如可以是云基础设施的定时健康检查任务等在各种应用场景中需要定时执行的任务。其可以是只需执行一次的任务,也可以是需要反复执行的任务,例如每天上午9点需要执行的定时任务等。而定时任务的执行条件,则可以通过配置信息中的定时规则来定义,也即,定时规则就是用于对定时任务的执行条件进行配置。例如可以是每天上午9点,也可以是每周一的下午3点等。本申请实施例对定时任务的定时规则不做任何限定,可以根据实际需要灵活进行配置。
内存可以是调度器的内存,内存延迟队列中包括多个定时任务,通过轮询内存延迟队列来获取定时任务集合,相比较于从持久化存储的数据库中获取定时任务的现有技术而言,本公开实施例的技术方案的轮询效率更高。其中,未来设定时间段例如可以是未来10S内,根据每个定时任务的定时规则,来判断未来10S内满足任务执行条件的定时任务,并将这些定时任务作为所述定时任务集合。
此外,轮询可以按照一定的频率进行,每次轮询获取的定时任务集合,就是当前需要进一步进行调度和执行的定时任务。
S102、将定时任务集合添加到时间轮中。
其中,时间轮中包括预先按照一定的时间规律划分得到的多个时间分片,可以基于定时任务集合中各个定时任务的定时规则,将其分别添加到时间轮中对应的时间分片。一个时间分片中可以添加一个定时任务,也可以添加任务执行条件相同的多个定时任务。
S103、按照时间轮算***询时间轮,根据定时规则从定时任务集合中获取当前待执行的目标定时任务队列。
在按照时间轮算***询时间轮的过程中,根据定时任务的定时规则,每次轮询对应的当前时刻的时间分片中满足任务执行条件的至少一个定时任务,即为所述当前待执行的目标定时任务队列。其中,时间轮算法可以基于现有技术实现,此处不再赘述。
S104、将目标定时任务队列发送至线程池,其中,所述线程池中的线程用于将目标定时任务队列中的目标定时任务分发至执行器执行。
线程池中包括多个线程,每个线程用于将目标定时任务队列中的目标定时任务分发至执行器,执行器则用于执行定时任务。目标定时任务队列发送至线程池后,各线程可以并行将目标定时任务队列中的各个目标定时任务进行分发,如果目标定时任务的数量多于线程池中的线程数,则可以先入线程池队列进行等待,空闲的线程则会从线程池队列中获取目标定时任务进行分发。
本公开实施例的技术方案,先从内存延迟队列中通过轮询获取未来设定时间段内待执行的定时任务集合,并将其添加到时间轮中,然后结合时间轮算法通过轮询时间轮获取当前待执行的目标定时任务队列,最后通过线程池中的线程将目标定时任务发送至执行器执行,由此实现定时任务的批量化调度,保证定时任务的高效执行,而且调度器和执行器完全分离,定时任务与业务代码高度解耦,新建或修改定时任务时只需配置或修改其配置信息即可,无需修改任何业务代码,可维护性较高。此外,从内存延迟队列中轮询定时任务,效率更高,从而进一步保证了定时任务的高效执行。
图2a是根据本公开实施例的定时任务调度方法的流程示意图,本实施例在上述实施例的基础上进一步进行优化。如图2a所示,该方法具体包括如下:
S201、轮询内存延迟队列中的定时任务,根据定时任务各自的配置信息,获取未来设定时间段内待执行的定时任务集合,其中,所述配置信息至少包括定时规则。
S202、从定时任务集合中,确定在设定时间段内的每个时间节点待执行的定时任务队列。
以设定时间段为10S为例,可以将其中的每1秒钟作为每个时间节点。根据定时任务集合中各个定时任务的定时规则,可以确定出未来10S内的每一秒钟满足任务执行条件的定时任务。其中,有的时间节点可以没有满足任务执行条件的定时任务,有的时间节点可以有一个满足任务执行条件的定时任务,有的时间节点可以有多个满足任务执行条件的定时任务,具体根据实际的定时规则来确定每个时间节点待执行的定时任务队列即可。
S203、将每个时间节点待执行的定时任务队列添加到时间轮中。
具体的,基于时间轮的时间分片规则,将每个时间节点待执行的定时任务队列分别添加到时间轮中相应的时间分片即可。图2b是本公开实施例的时间轮的示意图。如图所示,作为一个示例,本公开实施例的时间轮划分为60个时间分片,每个时间分片对应1秒钟。定时任务队列则按照其待执行的时间节点添加至对应的时间分片中。
S204、按照时间轮算***询时间轮,根据定时规则从定时任务集合中获取当前待执行的目标定时任务队列。
轮询过程中,当指针指向当前时间对应的时间分片,如果该时间分片中添加有定时任务队列,那么该定时任务队列即为当前待执行的目标定时任务队列。下一秒钟,指针继续轮询到下一个时间分片,并将下一个时间分片中的定时任务队列作为新的目标定时任务队列,以此类推,对添加到时间轮中的定时任务队列依次进行处理,如此,不仅处理效率高,而且处理过程有序、稳定,保证了定时任务的高效执行。
S205、将目标定时任务队列发送至线程池,其中,所述线程池中的线程用于将目标定时任务队列中的目标定时任务分发至执行器执行。
在一种实施方式中,本公开实施例的方法还包括:根据定时规则,确定定时任务集合中需要循环执行的定时任务;修改需要循环执行的定时任务的定时规则中下一次的执行时间,并将其再次放入内存延迟队列。也即,对于定时任务集合中每天同一时间或者每周同一时间等需要循环执行的定时任务,如果将其从内存延迟队列中取出添加到时间轮,那么就无法在下一次轮询内存延迟队列时再次获取到该定时任务,也就无法实现循环执行该定时任务。因此,对于这些需要循环执行的定时任务,需要修改其定时规则中下一次的执行时间,然后将其再次放入内存延迟队列。这样,当下一次轮询内存延迟队列时,就可以将满足任务执行条件的需要循环执行的定时任务再次获取到,并再次添加到时间轮中,继续对其进行调度和执行,从而实现循环执行。
在另一种实施方式中,本公开实施例的方法还包括:在轮询内存延迟队列中的定时任务的过程中,如果确定存在当前待执行的定时任务,则将当前待执行的定时任务直接发送至线程池。其中,当前待执行的定时任务是指轮询内存延迟队列时满足任务执行条件的当前需要立即执行的定时任务,那么,如果将其放入时间轮进行处理,则必然会延误其执行时间,因此,在轮询内存延迟队列中的定时任务的过程中,当确定存在这种需要当前待执行的定时任务,则将其直接发送至线程池,无需放入时间轮,以确保所有定时任务的高效执行。
本公开实施例的技术方案,通过配置定时任务的定时规则,基于时间轮算法将大量的定时任务绑定到一个调度器上,实现所有定时任务的调度和管理,并利用线程池实现定时任务的批量分发,保证定时任务的高效执行。
图3是根据本公开实施例的定时任务调度方法的流程示意图,本实施例在上述实施例的基础上进一步进行优化。如图3所示,该方法具体包括如下:
S301、轮询内存延迟队列中的定时任务,根据定时任务各自的配置信息,获取未来设定时间段内待执行的定时任务集合,其中,所述配置信息至少包括定时规则。
S302、将定时任务集合添加到时间轮中。
S303、按照时间轮算***询时间轮,根据定时规则从定时任务集合中获取当前待执行的目标定时任务队列。
S304、确定目标定时任务队列中目标定时任务的类型,其中,所述类型包括短时任务和长时任务。
S305、将目标定时任务队列中的短时任务发送至线程池中的快线程池,将目标定时任务队列中的长时任务发送至线程池中的慢线程池。
其中,线程池中的线程用于将目标定时任务队列中的目标定时任务分发至执行器执行。进一步的,定时任务的配置信息还可以包括任务分发策略。相应的,线程池中的线程则具体用于将目标定时任务队列中的目标定时任务,按照任务分发策略分发至执行器执行。而基于分发策略进行任务分发,则可以进一步确保任务分发的有效性,提高执行器执行任务的效率。
任务分发策略可以根据实际场景的需要进行配置,例如,对于有多个执行器的场景,通过任务分发策略,可以对如何均衡地将定时任务分发至每一个执行器进行配置,也可以对如何根据不同执行器的任务执行状态实现分发来进行配置。本公开实施例对任务分发策略的具体内容不做任何限定。
在本公开实施例中,线程池还可以进一步包括用于处理短时任务的快线程池和用于处理长时任务的慢线程池,其中,短时任务和长时任务是根据定时任务执行过程中的超时时间和超时次数确定。例如,如果一个定时任务的执行时间超过10S,且该任务在一段时间内执行时间超过10S的次数超过5次,则可以将其类型确定为长时任务或慢任务;反之,如果一个定时任务的执行时间没有超过10S,或者在一段时间内该任务执行时超过10S的次数没有超过5次,那么该任务的类型则为短时任务或快任务。需要说明的是,上面所述的超时时间10S和超市次数5次,均为示例,本公开实施例对超时时间和超时次数的具体数字不做任何限定。
将线程池划分为快线程池和慢线程池,并将定时任务基于其类型实现隔离和拆分,长时任务进入慢线程池,短时任务进入快线程池,将不同类型的定时任务由不同的线程池进行分发,相比较于不对线程池进行区分的现有技术而言,可以避免耗尽线程池中的线程资源,减少定时任务分发过程中的排队等待现象,提高定时任务的分发效率,提升定时任务调度***的稳定性。
本公开实施例的技术方案,先从内存延迟队列中通过轮询获取未来设定时间段内待执行的定时任务集合,并将其添加到时间轮中,然后结合时间轮算法通过轮询时间轮获取当前待执行的目标定时任务队列,最后基于定时任务的类型,通过快、慢两种不同的线程池中的线程进行相应类型的目标定时任务的分发,并由执行器执行。由此实现定时任务的批量化调度,保证定时任务的高效执行,提高调度***的稳定性。
图4是根据本公开实施例的定时任务调度方法的流程示意图,本实施例在上述实施例的基础上进一步进行优化。
如图4所示,在调度器中,通过调度中心web界面可以获取定时任务及其配置信息,也即,技术人员可以通过调度中心web界面对定时任务进行增加、检索、更新和删除等操作,定时任务及其配置信息则持久化存储在MySQL数据库中。调度器可以监听MySQL数据库,当有数据变更或更新,则同步至内存的redis延迟队列中。因此,从内存的redis延迟队列中轮询获取定时任务集合,与从持久化存储的数据库中获取定时任务相比,可以进一步提高效率。
接下来,调度中心的Scheduler调度器守护线程会轮询redis延迟队列,根据定时任务的定时规则获取未来设定时间段内待执行的定时任务集合,并添加到时间轮中。然后基于时间轮算法,由RingThread时间轮守护线程通过轮询时间轮,每次获取在当前时刻待执行的目标定时任务队列,并将其发送至线程池进行策略分发,由相应的执行器执行。在此过程中,一方面,对于需要重复执行的定时任务,需要在修改其定时规则中下一次的执行时间之后,将其再次放入redis延迟队列。另一方面,在轮询redis延迟队列的过程中,如果获取的定时任务集合中存在当前时刻需要立即执行的定时任务,则不必将其添加到时间轮,而是将其直接发送至线程池进行分发,也即立即执行该定时任务。
定时任务执行器在启动后会通过调度器的调度中心API进行注册,之后就可以在执行定时任务后,通过回调调度中心API,将任务执行结果反馈至调度器,并存储在MySQL数据库中,同时也会将其同步至redis延迟队列中。调度器的失败任务监控线程MonitorThread,会从redis延迟队列中获取执行失败的定时任务,并基于定时任务的配置信息中的失败重试策略将其发送至线程池进行失败重试,从而确保定时任务都能够按时、有效地执行。
本公开实施例的技术方案,基于时间轮算法将大量的定时任务绑定到一个调度器上,实现所有定时任务的调度和管理,并利用线程池实现定时任务的批量分发,保证定时任务的高效执行。而且,调度器和执行器完全分离,定时任务与业务代码高度解耦,代码低入侵,可维护性较高。此外,技术人员还可以通过调度中心web界面实现定时任务的更新和删除,实时查询定时任务的执行状态和执行日志,便于技术人员维护。
图5是根据本公开实施例的定时任务调度装置的结构示意图,本实施例可适用于对定时任务进行调度,以高效执行定时任务的情况,涉及计算机技术领域,尤其涉及云计算技术。该装置配置于调度器中,可实现本公开任意实施例所述的定时任务调度方法。如图5所示,该装置500具体包括:
内存轮询模块501,用于轮询内存延迟队列中的定时任务,根据所述定时任务各自的配置信息,获取未来设定时间段内待执行的定时任务集合,其中,所述配置信息至少包括定时规则;
任务添加模块502,用于将所述定时任务集合添加到时间轮中;
时间轮轮询模块503,用于按照时间轮算***询所述时间轮,根据所述定时规则从所述定时任务集合中获取当前待执行的目标定时任务队列;
任务发送模块504,用于将所述目标定时任务队列发送至线程池,其中,所述线程池中的线程用于将所述目标定时任务队列中的目标定时任务分发至执行器执行。
可选的,任务添加模块502具体用于:
从所述定时任务集合中,确定在所述设定时间段内的每个时间节点待执行的定时任务队列;
将所述每个时间节点待执行的定时任务队列添加到时间轮中。
可选的,所述装置还包括定时任务循环处理模块,具体用于:
根据所述定时规则,确定所述定时任务集合中需要循环执行的定时任务;
修改所述需要循环执行的定时任务的定时规则中下一次的执行时间,并将其再次放入所述内存延迟队列。
可选的,所述装置还包括直接发送模块,具体用于:
在所述轮询内存延迟队列中的定时任务的过程中,如果确定存在当前待执行的定时任务,则将所述当前待执行的定时任务直接发送至所述线程池。
可选的,所述线程池包括用于处理短时任务的快线程池和用于处理长时任务的慢线程池,其中,所述短时任务和长时任务是根据所述定时任务执行过程中的超时时间和超时次数确定。
可选的,任务发送模块504具体用于:
确定所述目标定时任务队列中目标定时任务的类型,其中,所述类型包括短时任务和长时任务;
将所述目标定时任务队列中的短时任务发送至所述线程池中的快线程池,将所述目标定时任务队列中的长时任务发送至所述线程池中的慢线程池。
可选的,所述配置信息还包括任务分发策略;
相应的,所述线程池中的线程具体用于将所述目标定时任务队列中的目标定时任务,按照所述任务分发策略分发至所述执行器执行。
可选的,所述装置还包括:
执行结果获取模块,用于获取所述执行器的定时任务执行结果,并将所述定时任务执行结果同步到所述内存。
可选的,所述配置信息还包括失败重试策略;相应的,所述装置还包括:
失败重试模块,用于从所述内存中获取执行失败的定时任务,并根据所述执行失败的定时任务的失败重试策略将其发送至所述线程池进行重试。
可选的,所述内存延迟队列中的定时任务是从所述调度器的数据库中同步的。
可选的,所述装置还包括:
获取模块,用于通过所述调度器的调度中心web界面获取所述定时任务及其配置信息。
上述产品可执行本公开任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图6示出了可以用来实施本公开的实施例的示例电子设备600的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如定时任务调度方法。例如,在一些实施例中,定时任务调度方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的定时任务调度方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行定时任务调度方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式***的服务器,或者是结合了区块链的服务器。
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术及机器学习/深度学习技术、大数据处理技术、知识图谱技术等几大方向。
云计算(cloud computing),指的是通过网络接入弹性可扩展的共享物理或虚拟资源池,资源可以包括服务器、操作***、网络、软件、应用和存储设备等,并可以按需、自服务的方式对资源进行部署和管理的技术体系。通过云计算技术,可以为人工智能、区块链等技术应用、模型训练提供高效强大的数据处理能力。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开提供的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (15)

1.一种定时任务调度方法,应用于调度器,所述方法包括:
轮询内存延迟队列中的定时任务,根据所述定时任务各自的配置信息,获取未来设定时间段内待执行的定时任务集合,其中,所述配置信息至少包括定时规则;
将所述定时任务集合添加到时间轮中;
按照时间轮算***询所述时间轮,根据所述定时规则从所述定时任务集合中获取当前待执行的目标定时任务队列;
将所述目标定时任务队列发送至线程池,其中,所述线程池中的线程用于将所述目标定时任务队列中的目标定时任务分发至执行器执行。
2.根据权利要求1所述的方法,其中,所述将所述定时任务集合添加到时间轮中,包括:
从所述定时任务集合中,确定在所述设定时间段内的每个时间节点待执行的定时任务队列;
将所述每个时间节点待执行的定时任务队列添加到时间轮中。
3.根据权利要求1所述的方法,还包括:
根据所述定时规则,确定所述定时任务集合中需要循环执行的定时任务;
修改所述需要循环执行的定时任务的定时规则中下一次的执行时间,并将其再次放入所述内存延迟队列。
4.根据权利要求1所述的方法,还包括:
在所述轮询内存延迟队列中的定时任务的过程中,如果确定存在当前待执行的定时任务,则将所述当前待执行的定时任务直接发送至所述线程池。
5.根据权利要求1所述的方法,其中,所述线程池包括用于处理短时任务的快线程池和用于处理长时任务的慢线程池,其中,所述短时任务和长时任务是根据所述定时任务执行过程中的超时时间和超时次数确定。
6.根据权利要求5所述的方法,其中,所述将所述目标定时任务队列发送至线程池,包括:
确定所述目标定时任务队列中目标定时任务的类型,其中,所述类型包括短时任务和长时任务;
将所述目标定时任务队列中的短时任务发送至所述线程池中的快线程池,将所述目标定时任务队列中的长时任务发送至所述线程池中的慢线程池。
7.根据权利要求1所述的方法,其中,所述配置信息还包括任务分发策略;
相应的,所述线程池中的线程具体用于将所述目标定时任务队列中的目标定时任务,按照所述任务分发策略分发至所述执行器执行。
8.根据权利要求1所述的方法,还包括:
获取所述执行器的定时任务执行结果,并将所述定时任务执行结果同步到所述内存。
9.根据权利要求8所述的方法,其中,所述配置信息还包括失败重试策略;相应的,所述方法还包括:
从所述内存中获取执行失败的定时任务,并根据所述执行失败的定时任务的失败重试策略将其发送至所述线程池进行重试。
10.根据权利要求1所述的方法,其中,所述内存延迟队列中的定时任务是从所述调度器的数据库中同步的。
11.根据权利要求1所述的方法,还包括:
通过所述调度器的调度中心web界面获取所述定时任务及其配置信息。
12.一种定时任务调度装置,配置于调度器,所述装置包括:
内存轮询模块,用于轮询内存延迟队列中的定时任务,根据所述定时任务各自的配置信息,获取未来设定时间段内待执行的定时任务集合,其中,所述配置信息至少包括定时规则;
任务添加模块,用于将所述定时任务集合添加到时间轮中;
时间轮轮询模块,用于按照时间轮算***询所述时间轮,根据所述定时规则从所述定时任务集合中获取当前待执行的目标定时任务队列;
任务发送模块,用于将所述目标定时任务队列发送至线程池,其中,所述线程池中的线程用于将所述目标定时任务队列中的目标定时任务分发至执行器执行。
13.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-11中任一项所述的定时任务调度方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-11中任一项所述的定时任务调度方法。
15.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-11中任一项所述的定时任务调度方法。
CN202210142340.2A 2022-02-16 2022-02-16 定时任务调度方法、装置、设备和介质 Pending CN114489997A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210142340.2A CN114489997A (zh) 2022-02-16 2022-02-16 定时任务调度方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210142340.2A CN114489997A (zh) 2022-02-16 2022-02-16 定时任务调度方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN114489997A true CN114489997A (zh) 2022-05-13

Family

ID=81479723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210142340.2A Pending CN114489997A (zh) 2022-02-16 2022-02-16 定时任务调度方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN114489997A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115118768A (zh) * 2022-06-27 2022-09-27 平安壹钱包电子商务有限公司 一种任务分发方法、装置、存储介质及电子设备
CN116503973A (zh) * 2023-06-20 2023-07-28 厦门星拉科技有限公司 基于电力物联网的电力设备智能巡检***及方法
CN116647530A (zh) * 2023-06-06 2023-08-25 深圳花儿绽放网络科技股份有限公司 一种即时通信消息任务的自动执行***
CN116679878A (zh) * 2023-05-31 2023-09-01 珠海妙存科技有限公司 闪存数据处理方法、装置、电子设备及可读存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115118768A (zh) * 2022-06-27 2022-09-27 平安壹钱包电子商务有限公司 一种任务分发方法、装置、存储介质及电子设备
CN116679878A (zh) * 2023-05-31 2023-09-01 珠海妙存科技有限公司 闪存数据处理方法、装置、电子设备及可读存储介质
CN116679878B (zh) * 2023-05-31 2024-04-19 珠海妙存科技有限公司 闪存数据处理方法、装置、电子设备及可读存储介质
CN116647530A (zh) * 2023-06-06 2023-08-25 深圳花儿绽放网络科技股份有限公司 一种即时通信消息任务的自动执行***
CN116503973A (zh) * 2023-06-20 2023-07-28 厦门星拉科技有限公司 基于电力物联网的电力设备智能巡检***及方法
CN116503973B (zh) * 2023-06-20 2023-08-29 厦门星拉科技有限公司 基于电力物联网的电力设备智能巡检***及方法

Similar Documents

Publication Publication Date Title
CN114489997A (zh) 定时任务调度方法、装置、设备和介质
EP4113299A2 (en) Task processing method and device, and electronic device
KR20210156243A (ko) 딥러닝 프레임워크의 훈련 방법, 장치 및 저장 매체
CN112967023A (zh) 获取日程信息的方法、装置、设备、存储介质及程序产品
CN112508768A (zh) 单算子多模型流水线推理方法、***、电子设备及介质
CN115150471A (zh) 数据处理方法、装置、设备、存储介质及程序产品
EP4060496A2 (en) Method, apparatus, device and storage medium for running inference service platform
CN114461393A (zh) 多任务调度方法、装置、电子设备、***及自动驾驶车辆
CN115964153A (zh) 一种异步任务处理方法、装置、设备以及存储介质
CN115391041A (zh) 任务处理方法、装置、电子设备和存储介质
CN115202847A (zh) 任务的调度方法和装置
CN114490048A (zh) 任务执行方法、装置、电子设备及计算机存储介质
CN113656239A (zh) 针对中间件的监控方法、装置及计算机程序产品
CN112817992A (zh) 执行更改任务的方法、装置、电子设备以及可读存储介质
CN112948081A (zh) 延时处理任务的方法、装置、设备以及存储介质
CN116010065A (zh) 分布式任务调度方法、装置以及设备
EP4180956A1 (en) Virtual-machine cold migration method and apparatus, electronic device and storage medium
CN116661960A (zh) 一种批量任务处理方法、装置、设备以及存储介质
CN109829005A (zh) 一种大数据处理方法及装置
CN115658248A (zh) 任务调度方法方法、装置、电子设备及存储介质
CN114095564A (zh) 数据处理方法及装置、设备和介质
CN114265692A (zh) 服务调度方法、装置、设备以及存储介质
CN113641670B (zh) 数据存储及数据检索方法、装置、电子设备及存储介质
CN115037802B (zh) 一种请求处理方法、装置、电子设备和存储介质
CN115499500A (zh) 消息推送方法、装置、设备和存储介质

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