CN113760485A - 定时任务的调度方法、装置、设备及存储介质 - Google Patents
定时任务的调度方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113760485A CN113760485A CN202010685180.7A CN202010685180A CN113760485A CN 113760485 A CN113760485 A CN 113760485A CN 202010685180 A CN202010685180 A CN 202010685180A CN 113760485 A CN113760485 A CN 113760485A
- Authority
- CN
- China
- Prior art keywords
- timing task
- information
- task
- scheduling
- client device
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供一种定时任务的调度方法、装置、设备及存储介质,通过在获取到待执行的目标定时任务信息时,根据预设定时任务执行策略通过zookeeper集群的watch通知方式将目标定时任务信息分配给至少一个目标客户端设备,以使各目标客户端设备分别执行所分配到的定时任务信息。可见,本发明实施例能够充分地利用客户端设备资源,从而可以保证定时任务的顺利执行。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种定时任务的调度方法、装置、设备及存储介质。
背景技术
通常情况下,电子设备在很多业务场景下需要在某一特定的时刻去执行某件任务,或者称之为定时任务。目前定时任务主要包括:单机的定时任务和分布式的定时任务。
现有技术中分布式的定时任务的调度方式通常为:调度系统通过将定时任务划分成多个子任务,然后将多个子任务分配给调度系统中的多个运行设备,以使多个运行设备分别执行相应的子任务。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:现有技术中每个任务都需要在调度系统内部的指定运行设备执行,因此,任务的执行完全依赖于调度系统内部的运行设备。当定时任务的数量非常多,调度系统内部的运行设备满足不了运行需求时,可能会导致定时任务的执行失败。
发明内容
本发明实施例提供一种定时任务的调度方法、装置、设备及存储介质,用以解决现有技术中当定时任务的数量非常多,调度系统内部的运行设备满足不了运行需求时,可能会导致定时任务的执行失败的问题。
一方面,本发明实施例提供一种定时任务的调度方法,所述方法应用于调度设备,所述方法包括:
获取待执行的目标定时任务的信息,所述目标定时任务是第一客户端设备请求的;
根据预设定时任务执行策略通过分布式应用程序协调服务zookeeper集群的watch通知方式,将所述目标定时任务的信息发送给至少一个第二客户端设备;
接收所述至少一个第二客户端设备发送的所述目标定时任务的执行结果;
将所述目标定时任务的执行结果发送给所述第一客户端设备。
本发明实施例具有如下有益效果:相对于现有技术中任务的执行完全依赖于调度系统内部运行设备的方式,本发明实施例能够充分地利用客户端设备资源来执行定时任务,从而可以保证定时任务的顺利执行。
在一种可能的实现方式中,所述根据预设定时任务执行策略通过分布式应用程序协调服务zookeeper集群的watch通知方式,将所述目标定时任务的信息发送给至少一个第二客户端设备,包括:
根据预设定时任务执行策略和在线客户端设备信息,确定出至少一个第二客户端设备;其中,所述在线客户端设备信息用于指示处于在线状态的至少一个客户端设备的信息;
根据所述预设定时任务执行策略,将所述目标定时任务的信息划分为至少一个子定时任务的信息;
通过zookeeper集群的watch通知方式分别将每个所述子定时任务的信息发送给对应的第二客户端设备。
在一种可能的实现方式中,所述通过zookeeper集群的watch通知方式分别将每个所述子定时任务的信息发送给对应的第二客户端设备,包括:
对于任意子定时任务的信息对应的第二客户端设备,通过zookeeper集群向所述第二客户端设备发送watch通知消息;
接收所述第二客户端在接收到所述watch通知消息之后发送的定时任务请求消息;
向所述第二客户端发送所述子定时任务的信息。
在一种可能的实现方式中,所述接收所述至少一个第二客户端设备发送的所述目标定时任务的执行结果,包括:
接收至少一个所述第二客户端发送的反馈消息;其中,所述反馈消息用于指示所述第二客户端对应的子定时任务的执行结果。
在一种可能的实现方式中,所述获取待执行的目标定时任务的信息,包括:
判断定时任务集合中的每个定时任务的预设执行时间是否到达;
若任意定时任务的预设执行时间到达,则获取待执行的所述定时任务的信息;其中,所述定时任务为所述目标定时任务。
另一方面,本发明实施例提供一种定时任务的调度方法,所述方法应用于客户端设备,所述方法包括:
接收调度设备通过分布式应用程序协调服务zookeeper集群的watch通知方式发送的定时任务的信息;
执行所述定时任务的信息;
向所述调度设备发送所述定时任务的执行结果。
本发明实施例具有如下有益效果:本发明实施例能够充分地利用客户端设备资源来执行定时任务,从而可以保证定时任务的顺利执行。
在一种可能的实现方式中,所述接收调度设备通过分布式应用程序协调服务zookeeper集群的watch通知方式发送的定时任务的信息,包括:
在接收到zookeeper集群发送的watch通知消息之后,向所述调度设备发送定时任务请求消息;
接收所述调度设备发送的所述定时任务的信息。
在一种可能的实现方式中,所述方法还包括:向所述zookeeper集群注册watch通知。
另一方面,本发明实施例提供一种定时任务的调度装置,所述装置应用于调度设备,所述装置包括:
获取模块,用于获取待执行的目标定时任务的信息,所述目标定时任务是第一客户端设备请求的;
第一发送模块,用于根据预设定时任务执行策略通过分布式应用程序协调服务zookeeper集群的watch通知方式,将所述目标定时任务的信息发送给至少一个第二客户端设备;
接收模块,用于接收所述至少一个第二客户端设备发送的所述目标定时任务的执行结果;
第二发送模块,用于将所述目标定时任务的执行结果发送给所述第一客户端设备。
另一方面,本发明实施例提供一种定时任务的调度装置,所述装置应用于客户端设备,所述装置包括:
接收模块,用于接收调度设备通过分布式应用程序协调服务zookeeper集群的watch通知方式发送的定时任务的信息;
执行模块,用于执行所述定时任务的信息;
发送模块,用于向所述调度设备发送所述定时任务的执行结果。
另一方面,本发明实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的任务调度方法,或者上述第二方面任一项所述的任务调度方法。
另一方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述第一方面任一项所述的任务调度方法,或者上述第二方面任一项所述的任务调度方法。
本发明实施例提供的定时任务的调度方法、装置、设备及存储介质,通过在获取到待执行的目标定时任务信息时,根据预设定时任务执行策略通过zookeeper集群的watch通知方式将目标定时任务信息分配给至少一个目标客户端设备,以使各目标客户端设备分别执行所分配到的定时任务信息。可见,相对于现有技术中任务的执行完全依赖于调度系统内部运行设备的方式,本发明实施例能够充分地利用客户端设备资源,从而可以保证定时任务的顺利执行。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本发明实施例提供的应用场景示意图;
图2为本发明一实施例提供的定时任务的调度方法的流程示意图;
图3为本发明另一实施例提供的定时任务的调度方法的流程示意图;
图4为本发明实施例提供的系统架构示意图;
图5为本发明一实施例提供的定时任务的调度装置的结构示意图;
图6为本发明另一实施例提供的定时任务的调度装置的结构示意图;
图7为本发明实施例提供的电子设备的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
首先对本发明实施例所涉及的名词进行解释:
本发明实施例中涉及的预设定时任务执行策略用于指示对应的定时任务的执行策略。应理解,不同定时任务可以对应相同的预设定时任务执行策略,或者不同定时任务可以对应不同的预设定时任务执行策略。
示例性地,本发明实施例中的预设定时任务执行策略所指示的执行策略可以包括以下至少一项:是否划分子任务、是否多设备分布式执行;当然,还可以包括其它执行策略(例如,是否支持重试、是否并行执行、是否开启任务失效转移等),本发明实施例中对此并不作限定。
针对现有技术中,由于任务的执行完全依赖于调度系统内部的运行设备,当定时任务的数量非常多,调度系统内部的运行设备满足不了运行需求时,可能会导致定时任务的执行失败的问题,本发明实施例提供的定时任务的调度方法、装置、设备及存储介质中,调度设备在获取到待执行的目标定时任务信息时,根据预设定时任务执行策略通过分布式应用程序协调服务zookeeper集群的watch通知方式将目标定时任务信息分配给至少一个目标客户端设备,以使各目标客户端设备分别执行所分配到的定时任务信息。可见,本发明实施例通过充分地利用客户端设备资源,由于客户端设备资源会比较充足,因此可以保证定时任务的顺利执行,从而降低了调度系统对内部运行设备的依赖性。
图1为本发明实施例提供的应用场景示意图。如图1所示,本发明实施例的应用场景中可以包括但不限于:调度设备10、N(N为大于1的整数)个客户端设备11和分布式应用程序协调服务zookeeper集群12。其中,每个客户端设备11向zookeeper集群12注册了watch通知;调度设备10中可以包括但不限于:1个或多个任务调度单元(图1中未示出)。需要说明的是,调度设备10可以包括一台设备,或者可以包括多台设备(例如,每个任务调度单元可以对应一台设备)。
其中,任意客户端设备11可以向调度设备10注册定时任务;调度设备10在检测到任意定时任务的预设执行时间到达时,可以获取上述定时任务的信息(或者称之为目标定时任务的信息),其次根据预设定时任务执行策略通过zookeeper集群的watch通知方式将上述目标定时任务的信息发送给上述N个客户端设备11中的至少一个目标客户端设备,以便于上述至少一个目标客户端设备执行相应的定时任务的信息,然后接收上述至少一个目标客户端发送的上述目标定时任务的执行结果,并将上述目标定时任务的执行结果发送给注册上述目标定时任务的客户端设备。
示例性地,本发明实施例中涉及的客户端设备11可以包括但不限于:笔记本电脑、台式电脑,或者其它形式的计算机。
示例性地,本发明实施例中涉及的调度设备10可以包括但不限于:笔记本电脑、台式电脑、服务器,或者其它形式的计算机。
应理解,本发明实施例中涉及的zookeeper集群可以包括多个节点设备。示例性地,本发明实施例中涉及的节点设备可以包括但不限于:笔记本电脑、台式电脑、服务器,或者其它形式的计算机。
下面以具体地实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
图2为本发明一实施例提供的定时任务的调度方法的流程示意图。本发明实施例的执行主体可以为调度设备,或者调度设备中的定时任务的调度装置(为了便于描述,本实施例中以执行主体为调度设备为例进行说明)。示例性地,定时任务的调度装置可以通过软件和/或硬件实现。
如图2所示,本发明实施例提供的定时任务的调度方法可以包括:
步骤S201、获取待执行的目标定时任务的信息,其中,上述目标定时任务是第一客户端设备请求的。
本步骤中,调度设备可以获取待执行的目标定时任务的信息,其中,上述目标定时任务可以为对应的预设执行时间到达的定时任务,以便于执行上述目标定时任务的信息。
示例性地,本发明实施例中涉及的任意定时任务的信息可以包括以下至少一项:定时任务的标识信息、定时任务的预设执行时间、注册上述定时任务的客户端设备的标识信息;当然,还可以包括其它信息(例如定时任务对应的执行策略等),本发明实施例中对此并不作限定。
本发明实施例中涉及的定时任务集合中可以包括但不限于:已注册且未执行的多个定时任务的信息。
可选地,调度设备可以通过判断定时任务集合中的每个定时任务的预设执行时间是否到达;若任意定时任务的预设执行时间到达,则调度设备可以获取待执行的上述定时任务的信息,其中,上述定时任务便为目标定时任务。
例如,假设定时任务集合中包括:定时任务1的信息、定时任务2的信息和定时任务3的信息,其中,定时任务1的预设执行时间为2020年5月20日9点、定时任务2的预设执行时间为2020年5月20日11点以及定时任务3的预设执行时间为2020年5月20日13点,调度设备可以通过轮询的方式判断定时任务集合中的每个定时任务的预设执行时间是否到达,若检测到定时任务1的预设执行时间到达(例如,即将到达或者马上到达),则调度设备可以认为定时任务1是待执行的目标定时任务,需要获取定时任务1的信息,以便于后续执行定时任务1的信息。
当然,调度设备还可以通过其它方式,获取待执行的目标定时任务的信息,本发明实施例中对此并不作限定。
步骤S202、根据预设定时任务执行策略通过zookeeper集群的watch通知方式,将上述目标定时任务的信息发送给至少一个第二客户端设备。
本发明实施例中,调度设备中的预设定时任务执行策略可以为调度设备中预置的,或者可以为上述步骤S201中所获取的上述目标定时任务的信息中所携带的。应理解,若上述步骤S201中所获取的上述目标定时任务的信息中携带有上述定时任务对应的执行策略,则上述预设定时任务执行策略可以为上述目标定时任务的信息中所携带的;若上述步骤S201中所获取的上述目标定时任务的信息中未携带上述定时任务对应的执行策略,则上述预设定时任务执行策略可以为上述调度设备中预置的。
示例性地,预设定时任务执行策略用于指示对应的定时任务的执行策略。应理解,不同定时任务可以对应相同的预设定时任务执行策略,或者不同定时任务可以对应不同的预设定时任务执行策略。
示例性地,本发明实施例中的预设定时任务执行策略所指示的执行策略可以包括以下至少一项:是否划分子任务、是否多设备分布式执行;当然,还可以包括其它执行策略(例如,是否支持重试、是否并行执行、是否开启任务失效转移等),本发明实施例中对此并不作限定。
应理解,若不同定时任务可以对应相同的预设定时任务执行策略,则调度设备可以根据预设定时任务执行策略通过zookeeper集群的watch通知方式,将上述目标定时任务的信息发送给至少一个第二客户端设备。若不同定时任务可以对应不同的预设定时任务执行策略,则调度设备可以根据上述目标定时任务对应的预设定时任务执行策略通过zookeeper集群的watch通知方式,将上述目标定时任务的信息发送给至少一个第二客户端设备。
示例性地,本发明实施例中涉及的第二客户端设备可以为处于在线状态的任意客户端设备。应理解,上述至少一个第二客户端设备中可以包含上述第一客户端设备,也可以不包含上述第一客户端设备。
可选地,调度设备可以根据预设定时任务执行策略和在线客户端设备信息,确定出至少一个第二客户端设备,以及根据预设定时任务执行策略,将目标定时任务的信息划分为至少一个子定时任务的信息。
示例性地,调度设备可以通过zookeeper集群中的在线临时节点信息得到在线客户端设备信息,其中,在线客户端设备信息用于指示处于在线状态的至少一个客户端设备的信息;当然,调度设备还可以通过其它方式得到在线客户端设备信息,本发明实施例中对此并不作限定。
本发明实施例中,一方面调度设备可以根据预设定时任务执行策略(例如,指示是否划分子任务,和/或,是否多设备分布式执行等执行策略)和在线客户端设备信息,从处于在线状态的至少一个客户端设备中确定出至少一个第二客户端设备。
示例性地,若预设定时任务执行策略用于指示划分子任务和/或多设备分布式执行的执行策略,则调度设备可以从处于在线状态的至少一个客户端设备中确定出多个第二客户端设备。应理解,若预设定时任务执行策略还指示了分布式执行的设备数量,则分布式执行的设备数量便为第二客户端设备的数量;若预设定时任务执行策略未指示分布式执行的设备数量,则调度设备可以确定出第一预设数量个第二客户端设备,或者,可以根据目标定时任务的信息量大小和/或执行复杂程度大小来确定出第二客户端设备的数量(例如,信息量越大或者执行复杂程度越大,第二客户端设备的数量越多);当然,还可以根据其它方式确定第二客户端设备的数量,本发明实施例中对此并不作限定。
又一示例性地,若预设定时任务执行策略用于指示不划分子任务和/或单设备执行的执行策略,则调度设备可以从处于在线状态的至少一个客户端设备中确定出一个第二客户端设备。
本发明实施例中,另一方面调度设备可以根据预设定时任务执行策略,将目标定时任务的信息划分为至少一个子定时任务的信息,以便于分别将每个子定时任务的信息发送给对应的第二客户端设备。
示例性地,若预设定时任务执行策略用于指示划分子任务和/或多设备分布式执行的执行策略,则调度设备可以将目标定时任务的信息划分为多个子定时任务的信息。应理解,若预设定时任务执行策略还指示了定时任务划分数量,则定时任务划分数量便为所划分的子定时任务的数量;若预设定时任务执行策略未指示定时任务划分数量,则调度设备可以将目标定时任务的信息划分为第二预设数量个子定时任务的信息,或者,可以根据目标定时任务的信息量大小和/或执行复杂程度大小来确定出子定时任务的数量(例如,信息量越大或者执行复杂程度越大,子定时任务的数量越多);当然,还可以根据其它方式确定子定时任务的数量,本发明实施例中对此并不作限定。
又一示例性地,若预设定时任务执行策略用于指示不划分子任务和/或单设备执行的执行策略,则调度设备可以将目标定时任务的信息划分为一个子定时任务的信息,即调度设备可以将目标定时任务的信息看作为一个子定时任务的信息。
进一步地,调度设备可以通过zookeeper集群的watch通知方式分别将每个子定时任务的信息发送给对应的第二客户端设备。
本发明实施例中,考虑到每个客户端设备向zookeeper集群注册了watch通知,调度设备可以通过zookeeper集群的watch通知方式分别将每个子定时任务的信息发送给对应的第二客户端设备。应理解,每个定时任务的信息可以对应一个第二客户端设备,但每个第二客户端设备可以对应一个或多个定时任务的信息。
需要说明的是,调度设备可以随机地确定每个定时任务的信息对应的第二客户端设备,或者可以根据子定时任务的信息量大小和/或子定时任务之间的关联关系等因素确定每个定时任务的信息对应的第二客户端设备;当然,还可以通过其它方式确定每个定时任务的信息对应的第二客户端设备,本发明实施例中对此并不作限定。
例如,假设目标定时任务的信息划分为:子定时任务1的信息、子定时任务2的信息、子定时任务3的信息、子定时任务4的信息和子定时任务5的信息,调度设备可以将上述5个子定时任务的信息分别发送给5个不同的第二客户端设备,其中,每个第二客户端设备对应一个子定时任务的信息,或者,调度设备可以将子定时任务1的信息和子定时任务2的信息发送给第二客户端设备1、将子定时任务3的信息发送给第二客户端设备2、将子定时任务4的信息发送给第二客户端设备3以及将子定时任务5的信息发送给第二客户端设备4。
可选地,对于任意子定时任务的信息对应的第二客户端设备,调度设备可以通过zookeeper集群向上述第二客户端设备发送watch通知消息,其次接收上述第二客户端在接收到watch通知消息之后发送的定时任务请求消息,然后向上述第二客户端发送上述子定时任务的信息。
本发明实施例中,对于任意子定时任务的信息对应的第二客户端设备,考虑到上述第二客户端设备注册了watch通知(或者说监听了上述第二客户端设备所创建的临时节点的信息变化),调度设备可以通过修改zookeeper集群中上述第二客户端设备所创建的临时节点的信息,以便于zookeeper集群在检测到上述第二客户端设备所创建的临时节点的信息被修改时,便会向上述第二客户端设备发送watch通知消息(或者称之为异步回调请求消息),以使上述第二客户端在接收到watch通知消息之后会向调度设备发送定时任务请求消息,从而获取调度设备为上述第二客户端设备所分配的子定时任务的信息。
示例性地,上述定时任务请求消息可以包括但不限于:远程过程调用(RemoteProcedure Call,RPC)消息。
需要说明的是,调度设备还可以通过其它方式,触发zookeeper集群向上述第二客户端设备发送watch通知消息,本发明实施例中对此并不作限定。
应理解,若多个子定时任务的信息对应同一个第二客户端设备,则调度设备可以通过zookeeper集群向上述第二客户端设备发送一个watch通知消息,并在接收到上述第二客户端设备发送的定时任务请求消息之后,将分配给上述第二客户端设备的多个子定时任务的信息都发送给上述第二客户端设备,从而有利于提高子定时任务的信息分配效率。
步骤S203、接收上述至少一个第二客户端设备发送的上述目标定时任务的执行结果。
本步骤中,调度设备可以接收上述至少一个第二客户端设备在执行完所分配到的定时任务的信息之后所反馈的执行结果,从而得到上述目标定时任务的执行结果。
示例性地,本发明实施例中涉及的任意定时任务(例如,目标定时任务,或者子定时任务)的执行结果可以包括但不限于:执行完毕的标识信息,和/或,执行结果参数信息。
示例性地,若在上述步骤S202中调度设备将上述目标定时任务的信息划分得到的多个子定时任务的信息分配给多个第二客户端设备,则调度设备可以接收每个第二客户端发送的反馈消息,其中,反馈消息用于指示上述第二客户端设备执行完所分配到的子定时任务的执行结果,从而根据每个第二客户端所发送的反馈消息便可以得到上述目标定时任务的执行结果。
又一示例性地,若在上述步骤S202中调度设备将上述目标定时任务的信息分配给一个第二客户端设备,则调度设备可以接收上述第二客户端发送的反馈消息,其中,反馈消息用于指示上述第二客户端设备执行完所分配到的定时任务(即上述目标定时任务)的执行结果。
步骤S204、将上述目标定时任务的执行结果发送给上述第一客户端设备。
本步骤中,调度设备可以将上述目标定时任务的执行结果发送给请求上述目标定时任务的第一客户端设备,以使上述第一客户端设备可以获知上述目标定时任务的执行结果。
示例性地,调度设备可以主动将上述目标定时任务的执行结果发送给上述第一客户端设备,或者也可以通过zookeeper集群的watch通知方式将上述目标定时任务的执行结果发送给上述第一客户端设备;当然,调度设备还可以通过其它方式将上述目标定时任务的执行结果发送给上述第一客户端设备,本发明实施例中对此并不作限定。
综上所述,本发明实施例中,在获取到待执行的目标定时任务的信息时,通过根据预设定时任务执行策略通过zookeeper集群的watch通知方式将上述目标定时任务的信息发送给至少一个第二客户端设备,然后在接收到上述至少一个第二客户端设备发送的上述目标定时任务的执行结果时,将上述目标定时任务的执行结果发送给请求上述目标定时任务的第一客户端设备。可见,相对于现有技术中任务的执行完全依赖于调度系统内部运行设备的方式,本发明实施例能够充分地利用客户端设备资源来执行定时任务,从而可以保证定时任务的顺利执行。
图3为本发明另一实施例提供的定时任务的调度方法的流程示意图。在上述实施例的基础上,本发明实施例中对任意第二客户端设备侧进行介绍。本发明实施例的执行主体可以为客户端设备(例如,上述第二客户端设备),或者客户端设备中的定时任务的调度装置(为了便于描述,本实施例中以执行主体为客户端设备为例进行说明)。示例性地,定时任务的调度装置可以通过软件和/或硬件实现。
如图3所示,本发明实施例提供的定时任务的调度方法可以包括:
步骤S301、接收调度设备通过zookeeper集群的watch通知方式发送的定时任务的信息。
本步骤中,客户端设备(例如,上述第二客户端设备)可以接收调度设备通过zookeeper集群的watch通知方式发送的定时任务的信息;其中,上述定时任务信息可以为调度设备根据预设定时任务执行策略为上述客户端设备所分配的定时任务的信息。应理解,上述定时任务的信息可以为上述目标定时任务的信息,或者可以为上述目标定时任务的至少一个子定时任务的信息。
本发明实施例中,上述客户端设备在执行步骤S301之前可以向zookeeper集群注册watch通知。
示例性地,上述客户端设备可以通过在zookeeper集群上创建临时节点,并监听对应的临时节点的信息变化的方式,来注册watch通知(或者说监听上述客户端设备所创建的临时节点的信息变化);当然,上述客户端设备还可以通过其它方式,向zookeeper集群注册watch通知,本发明实施例中对此并不作限定。
本发明实施例中,调度设备可以通过修改zookeeper集群中上述客户端设备所创建的临时节点的信息的方式,以触发zookeeper集群向上述客户端设备发送watch通知消息(或者称之为异步回调请求消息);进一步地,上述客户端设备在接收到zookeeper集群发送的watch通知消息之后,便可以向上述调度设备发送定时任务请求消息,然后接收上述调度设备为上述客户端设备所分配的定时任务的信息。
示例性地,上述定时任务请求消息可以包括但不限于:RPC消息。
步骤S302、执行上述定时任务的信息。
本步骤中,上述客户端设备执行上述调度设备为上述客户端设备所分配的上述定时任务的信息。
步骤S303、向上述调度设备发送上述定时任务的执行结果。
本步骤中,上述客户端设备在执行完上述调度设备为上述客户端设备所分配的定时任务的信息之后,可以向上述调度设备发送上述定时任务的执行结果,以使上述调度设备可以获知上述调度设备为上述客户端设备所分配的定时任务的执行结果。
综上所述,本发明实施例中,客户端设备可以接收调度设备通过zookeeper集群的watch通知方式发送的定时任务的信息,其次执行上述定时任务的信息,然后在执行完上述定时任务的信息之后,向上述调度设备发送上述定时任务的执行结果。可见,本发明实施例能够充分地利用客户端设备资源来执行定时任务,从而可以保证定时任务的顺利执行。
图4为本发明实施例提供的系统架构示意图。在上述实施例的基础上,本发明实施例中结合调度设备侧和客户端设备侧对定时任务的调度方法的整体流程进行介绍。结合图4所示,本发明实施例的方法可以包括:
1)注册watch通知
本发明实施例中,N个客户端设备中的每个客户端可以注册到zookeeper集群上,并订阅watch通知。示例性地,每个客户端设备可以通过在zookeeper集群上创建临时节点,并监听对应的临时节点的信息变化的方式,来注册watch通知。
2)注册任务
示例性地,每个客户端设备可以通过调度设备中的任意任务调度单元中的Java脚本(Javascript,JS)接口向任务调度单元发送注册消息;其中,注册消息中可以包括定时任务的信息(例如,定时任务的标识信息以及定时任务的预设执行时间等),还可以包括注册定时任务的客户端设备的标识信息;当然,还可以包括其它信息,本发明实施例中对此并不作限定。
应理解,每个客户端设备还可以通过其它方式向任务调度单元发送注册消息,本发明实施例中对此并不作限定。
进一步地,任意任务调度单元在接收到任意客户端设备发送的注册消息之后,可以将上述注册消息中携带的信息(例如,定时任务的信息,和/或,客户端设备的标识信息等)存储到缓存和/或数据库,例如,关系型数据库管理系统(MySQL)。
应理解,任意任务调度单元可以将上述定时任务的信息存储到缓存和/或数据库中的定时任务集合中,以便于后续判断定时任务的预设执行时间是否到达。
3)任务调度
本发明实施例中,调度设备中的每个任务调度单元可以通过轮询缓存和/或数据库中的定时任务集合的方式,判断定时任务集合中的每个定时任务的预设执行时间是否到达。若任意任务调度单元检测到任意定时任务的预设执行时间到达,则上述任务调度单元可以认为上述定时任务信息是待执行的目标定时任务,并获取上述定时任务的信息(即目标定时任务的信息)。
应理解,为了防止其它任务调度单元再次获取上述定时任务的信息导致重复执行,上述任务调度单元可以在上述定时任务集合中为上述定时任务的信息设置已处理标识,或者上述任务调度单元可以删除上述定时任务集合中的上述定时任务的信息。
进一步地,上述任务调度单元可以根据zookeeper集群中的在线临时节点信息得到在线客户端设备信息;其次,根据预设定时任务执行策略和在线客户端设备信息确定出至少一个目标客户端设备(即上述第二客户端设备),并根据预设定时任务执行策略将上述目标定时任务信息划分为至少一个子定时任务信息;然后,通过zookeeper集群的watch通知方式分别将每个子定时任务信息发送给对应的目标客户端设备,以使每个目标客户端设备分别执行对应的子定时任务信息。
示例性地,对于任意子定时任务的信息对应的目标客户端设备,上述任务调度单元可以通过修改zookeeper集群中上述目标客户端设备所创建的临时节点的信息,由于上述目标客户端设备注册了watch通知(或者说监听了上述目标客户端设备所创建的临时节点的信息变化),从而触发了zookeeper集群会向上述目标客户端设备发送watch通知消息(或者称之为异步回调请求消息),以使上述目标客户端设备在接收到上述watch通知消息之后可以向上述任务调度单元发送定时任务请求消息,从而获取上述任务调度单元为上述目标客户端设备所分配的子定时任务的信息。
进一步地,上述目标客户端设备在执行上述子定时任务的信息之后,还可以向上述任务调度单元发送反馈消息,以使上述任务调度单元可以获知上述子定时任务信息的执行结果。
应理解,上述任务调度单元还可以记录上述目标定时任务的调度信息,实现了调度设备中会记录已调度的每个定时任务的调度信息,以便于查询任意定时任务的调度信息。
需要说明的是,管理设备可以用于管理任务(例如,暂停任务、重启任务,或者删除任务等)、管理zookeeper(例如,查看zookeeper集群的节点信息等),和/或,管理任务调度单元(例如,任务调度单元是否运行,或者任务调度单元中任务信息的转移等);当然,管理设备还可以用于管理其它信息,本发明实施例中对此并不作限定。
综上所述,本发明实施例中,减少了调度系统对内部运行设备的资源依赖性,调度设备可以充分地利用客户端设备的计算资源,从而可以稳定且高效地进行任务调度;另外,客户端设备只需关心所分配的定时任务的执行,而不会影响到其它设备的运行,实现了客户端设备之间的相互隔离。
图5为本发明一实施例提供的定时任务的调度装置的结构示意图。示例性地,本发明实施例提供的定时任务的调度装置可以应用于调度设备。如图5所示,本发明实施例提供的定时任务的调度装置可以包括:获取模块501、第一发送模块502、接收模块503和第二发送模块504。
其中,获取模块501,用于获取待执行的目标定时任务的信息,所述目标定时任务是第一客户端设备请求的;
第一发送模块502,用于根据预设定时任务执行策略通过分布式应用程序协调服务zookeeper集群的watch通知方式,将所述目标定时任务的信息发送给至少一个第二客户端设备;
接收模块503,用于接收所述至少一个第二客户端设备发送的所述目标定时任务的执行结果;
第二发送模块504,用于将所述目标定时任务的执行结果发送给所述第一客户端设备。
在一种可能的实现方式中,所述第一发送模块502包括:
确定子模块,用于根据预设定时任务执行策略和在线客户端设备信息,确定出至少一个第二客户端设备;其中,所述在线客户端设备信息用于指示处于在线状态的至少一个客户端设备的信息;
划分子模块,用于根据所述预设定时任务执行策略,将所述目标定时任务的信息划分为至少一个子定时任务的信息;
发送子模块,用于通过zookeeper集群的watch通知方式分别将每个所述子定时任务的信息发送给对应的第二客户端设备。
在一种可能的实现方式中,所述发送子模块具体用于:
对于任意子定时任务的信息对应的第二客户端设备,通过zookeeper集群向所述第二客户端设备发送watch通知消息;
接收所述第二客户端在接收到所述watch通知消息之后发送的定时任务请求消息;
向所述第二客户端发送所述子定时任务的信息。
在一种可能的实现方式中,所述接收模块503具体用于:
接收至少一个所述第二客户端发送的反馈消息;其中,所述反馈消息用于指示所述第二客户端对应的子定时任务的执行结果。
在一种可能的实现方式中,所述获取模块501具体用于:
判断定时任务集合中的每个定时任务的预设执行时间是否到达;
若任意定时任务的预设执行时间到达,则获取待执行的所述定时任务的信息;其中,所述定时任务为所述目标定时任务。
本发明实施例提供的定时任务的调度装置,可以用于执行本发明上述定时任务的调度方法实施例中关于调度设备侧的技术方案,其实现原理和技术效果类似,此处不再赘述。
图6为本发明另一实施例提供的定时任务的调度装置的结构示意图。示例性地,本发明实施例提供的定时任务的调度装置可以应用于客户端设备。如图6所示,本发明实施例提供的定时任务的调度装置可以包括:接收模块601、执行模块602和发送模块603。
其中,接收模块601,用于接收调度设备通过分布式应用程序协调服务zookeeper集群的watch通知方式发送的定时任务的信息;
执行模块602,用于执行所述定时任务的信息;
发送模块603,用于向所述调度设备发送所述定时任务的执行结果。
在一种可能的实现方式中,所述接收模块601具体用于:
在接收到zookeeper集群发送的watch通知消息之后,向所述调度设备发送定时任务请求消息;
接收所述调度设备发送的所述定时任务的信息。
在一种可能的实现方式中,所述装置还包括:
注册模块,用于向所述zookeeper集群注册watch通知。
本发明实施例提供的定时任务的调度装置,可以用于执行本发明上述定时任务的调度方法实施例中关于客户端设备侧的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本发明实施例提供的电子设备的结构示意图。如图7示,本发明实施例提供的电子设备可以包括:存储器701、处理器702及存储在所述存储器701上并可在所述处理器702上运行的计算机程序。示例性地,所述电子设备还可以包括用于与其它设备通信的通信接口703,其中,所述存储器701、处理器702和所述通信接口703可以通过系统总线连接。
其中,所述处理器702执行所述计算机程序时实现本发明上述定时任务的调度方法实施例中关于调度设备侧的技术方案,或者关于客户端设备侧的技术方案,其实现原理和技术效果类似,此处不再赘述。
应理解,若上述电子设备为调度设备,则所述处理器702执行所述计算机程序时实现本发明上述定时任务的调度方法实施例中关于调度设备侧的技术方案;若上述电子设备为客户端设备,则所述处理器702执行所述计算机程序时实现本发明上述定时任务的调度方法实施例中关于客户端设备侧的技术方案。
可选的,上述处理器可以是中央处理单元(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在示例性实施例中,上述电子设备还可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现本发明上述定时任务的调度方法实施例中关于调度设备侧的技术方案,或者关于客户端设备侧的技术方案,其实现原理和技术效果类似,此处不再赘述。
示例性地,上述的存储器(存储介质)可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种定时任务的调度方法,其特征在于,所述方法应用于调度设备,所述方法包括:
获取待执行的目标定时任务的信息,所述目标定时任务是第一客户端设备请求的;
根据预设定时任务执行策略通过分布式应用程序协调服务zookeeper集群的watch通知方式,将所述目标定时任务的信息发送给至少一个第二客户端设备;
接收所述至少一个第二客户端设备发送的所述目标定时任务的执行结果;
将所述目标定时任务的执行结果发送给所述第一客户端设备。
2.根据权利要求1所述的方法,其特征在于,所述根据预设定时任务执行策略通过分布式应用程序协调服务zookeeper集群的watch通知方式,将所述目标定时任务的信息发送给至少一个第二客户端设备,包括:
根据预设定时任务执行策略和在线客户端设备信息,确定出至少一个第二客户端设备;其中,所述在线客户端设备信息用于指示处于在线状态的至少一个客户端设备的信息;
根据所述预设定时任务执行策略,将所述目标定时任务的信息划分为至少一个子定时任务的信息;
通过zookeeper集群的watch通知方式分别将每个所述子定时任务的信息发送给对应的第二客户端设备。
3.根据权利要求2所述的方法,其特征在于,所述通过zookeeper集群的watch通知方式分别将每个所述子定时任务的信息发送给对应的第二客户端设备,包括:
对于任意子定时任务的信息对应的第二客户端设备,通过zookeeper集群向所述第二客户端设备发送watch通知消息;
接收所述第二客户端在接收到所述watch通知消息之后发送的定时任务请求消息;
向所述第二客户端发送所述子定时任务的信息。
4.根据权利要求3所述的方法,其特征在于,所述接收所述至少一个第二客户端设备发送的所述目标定时任务的执行结果,包括:
接收至少一个所述第二客户端发送的反馈消息;其中,所述反馈消息用于指示所述第二客户端对应的子定时任务的执行结果。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述获取待执行的目标定时任务的信息,包括:
判断定时任务集合中的每个定时任务的预设执行时间是否到达;
若任意定时任务的预设执行时间到达,则获取待执行的所述定时任务的信息;其中,所述定时任务为所述目标定时任务。
6.一种定时任务的调度方法,其特征在于,所述方法应用于客户端设备,所述方法包括:
接收调度设备通过分布式应用程序协调服务zookeeper集群的watch通知方式发送的定时任务的信息;
执行所述定时任务的信息;
向所述调度设备发送所述定时任务的执行结果。
7.根据权利要求6所述的方法,其特征在于,所述接收调度设备通过分布式应用程序协调服务zookeeper集群的watch通知方式发送的定时任务的信息,包括:
在接收到zookeeper集群发送的watch通知消息之后,向所述调度设备发送定时任务请求消息;
接收所述调度设备发送的所述定时任务的信息。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:向所述zookeeper集群注册watch通知。
9.一种定时任务的调度装置,其特征在于,所述装置应用于调度设备,所述装置包括:
获取模块,用于获取待执行的目标定时任务的信息,所述目标定时任务是第一客户端设备请求的;
第一发送模块,用于根据预设定时任务执行策略通过分布式应用程序协调服务zookeeper集群的watch通知方式,将所述目标定时任务的信息发送给至少一个第二客户端设备;
接收模块,用于接收所述至少一个第二客户端设备发送的所述目标定时任务的执行结果;
第二发送模块,用于将所述目标定时任务的执行结果发送给所述第一客户端设备。
10.一种定时任务的调度装置,其特征在于,所述装置应用于客户端设备,所述装置包括:
接收模块,用于接收调度设备通过分布式应用程序协调服务zookeeper集群的watch通知方式发送的定时任务的信息;
执行模块,用于执行所述定时任务的信息;
发送模块,用于向所述调度设备发送所述定时任务的执行结果。
11.一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述的任务调度方法,或者如权利要求6至8任一项所述的任务调度方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至5任一项所述的任务调度方法,或者如权利要求6至8任一项所述的任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010685180.7A CN113760485A (zh) | 2020-07-16 | 2020-07-16 | 定时任务的调度方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010685180.7A CN113760485A (zh) | 2020-07-16 | 2020-07-16 | 定时任务的调度方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113760485A true CN113760485A (zh) | 2021-12-07 |
Family
ID=78785583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010685180.7A Pending CN113760485A (zh) | 2020-07-16 | 2020-07-16 | 定时任务的调度方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760485A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168137A (zh) * | 2022-06-17 | 2022-10-11 | 北京结慧科技有限公司 | 针对定时任务的监控方法及系统、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018099067A1 (zh) * | 2016-11-29 | 2018-06-07 | 上海壹账通金融科技有限公司 | 分布式任务调度方法和系统 |
CN108304255A (zh) * | 2017-12-29 | 2018-07-20 | 北京城市网邻信息技术有限公司 | 分布式任务调度方法及装置、电子设备及可读存储介质 |
CN110290180A (zh) * | 2019-05-31 | 2019-09-27 | 北京大米科技有限公司 | 分布式任务调度方法、装置、计算机设备和存储介质 |
CN111290854A (zh) * | 2020-01-20 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 任务管理方法、装置、系统、计算机存储介质及电子设备 |
-
2020
- 2020-07-16 CN CN202010685180.7A patent/CN113760485A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018099067A1 (zh) * | 2016-11-29 | 2018-06-07 | 上海壹账通金融科技有限公司 | 分布式任务调度方法和系统 |
CN108304255A (zh) * | 2017-12-29 | 2018-07-20 | 北京城市网邻信息技术有限公司 | 分布式任务调度方法及装置、电子设备及可读存储介质 |
CN110290180A (zh) * | 2019-05-31 | 2019-09-27 | 北京大米科技有限公司 | 分布式任务调度方法、装置、计算机设备和存储介质 |
CN111290854A (zh) * | 2020-01-20 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 任务管理方法、装置、系统、计算机存储介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
王文峰;袁庆祝;陆佃龙;: "基于Zookeeper综合任务调度平台的设计与应用", 信息技术, no. 06, 25 June 2016 (2016-06-25) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168137A (zh) * | 2022-06-17 | 2022-10-11 | 北京结慧科技有限公司 | 针对定时任务的监控方法及系统、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11561811B2 (en) | Threading as a service | |
US11467890B2 (en) | Processing event messages for user requests to execute program code | |
US20220391238A1 (en) | Low latency computational capacity provisioning | |
CA2962633C (en) | Programmatic event detection and message generation for requests to execute program code | |
CN109564528B (zh) | 分布式计算中计算资源分配的系统和方法 | |
CN108319495B (zh) | 任务处理方法及装置 | |
CN108874549B (zh) | 资源复用方法、装置、终端和计算机可读存储介质 | |
CN111274015A (zh) | 一种配置方法、装置和数据处理服务器 | |
CN110673959A (zh) | 用于处理任务的系统、方法和装置 | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN111258726B (zh) | 任务调度方法和装置 | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
US20240054021A1 (en) | Resource scheduling method and server | |
CN113032125A (zh) | 作业调度方法、装置、计算机系统和计算机可读存储介质 | |
US20200310828A1 (en) | Method, function manager and arrangement for handling function calls | |
CN114816709A (zh) | 任务调度方法、装置、服务器及可读存储介质 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
US11144359B1 (en) | Managing sandbox reuse in an on-demand code execution system | |
US9158601B2 (en) | Multithreaded event handling using partitioned event de-multiplexers | |
CN113760485A (zh) | 定时任务的调度方法、装置、设备及存储介质 | |
CN111835809B (zh) | 工单消息分配方法、装置、服务器及存储介质 | |
CN108446182A (zh) | 一种基于共享内存的跨进程通信方法及装置 | |
CN117009063A (zh) | 一种任务执行方法和装置 | |
CN113703930A (zh) | 任务调度方法、装置及系统、计算机可读存储介质 | |
CN111726418B (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 |