CN107092521B - 一种分布式任务调度方法、装置及系统 - Google Patents
一种分布式任务调度方法、装置及系统 Download PDFInfo
- Publication number
- CN107092521B CN107092521B CN201611259262.5A CN201611259262A CN107092521B CN 107092521 B CN107092521 B CN 107092521B CN 201611259262 A CN201611259262 A CN 201611259262A CN 107092521 B CN107092521 B CN 107092521B
- Authority
- CN
- China
- Prior art keywords
- task
- working
- equipment
- scheduling
- executed
- 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.)
- Active
Links
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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供一种分布式任务调度方法、装置及系统,其中调度设备侧的方法包括:向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示。因为工作设备可根据预先接收的执行时间自动唤醒去抢占、执行任务,减轻了调度设备的压力,也避免了需要执行任务时因接收任务信息而造成的延迟,而且由于通常只有工作正常的工作设备才能参与竞争,所以也就确保了最终执行任务的工作设备是正常设备,满足了对高可靠性的需求。
Description
技术领域
本发明涉及分布式调度系统,尤其涉及一种分布式任务调度方法、装置及系统。
背景技术
调度系统一般是指以时间触发或者事件触发的方式在计算机上执行相应任务的系统。分布式主要是指将任务分布到不同计算机,任务执行有上下游,需要协同完成任务的工作方式。调度系统经常以分布式的方式实现,即形成分布式调度系统,主要用于在计算机集群之间执行定时或者被事件触发的任务,上游例如可以是调度服务器,下游例如可以是work(工作)服务器。
作为示例,一种场景是:有一项任务需要每天定时执行(例如在每天的13:00给商家打款),则调度服务器需要每次选择一台工作服务器来执行一次该任务。
发明内容
发明人在实现本发明的过程中发现,这类任务的要求非常高,例如因为涉及到资金等敏感环节,所以需要特别高的可靠性,任务每次都必须按时执行,并且任务每次执行时只能执行一次,否则就会带来严重后果。然而在现有技术中,由调度服务器每次选择一台工作服务器来执行一次该任务的工作方式却无法确保高可靠性,这是因为:
在这种工作方式下,调度服务器需要承担唤醒工作服务器的责任,当任务繁多时会导致调度服务器工作压力非常大;同时,调度服务器需要事先确定哪些工作服务器正常,这样有任务时才能从中选择一台去执行,但是无法确保先前认为是正常的工作服务器当到了分配任务时仍是正常的;此外,调度服务器定时下达任务并令工作服务器执行,而工作服务器接收任务是需要一定的时间的(因为很多时候一项任务可能涉及到文件等数据),这就导致该任务执行时间会比预定时间靠后,造成任务执行的延迟。这些都使得现有技术无法满足高可靠性的需求。
为解决上述技术问题,本发明实施例提供一种分布式任务调度方法、装置及系统,以满足高可靠性的需求。
根据本发明实施例的第一方面,提供一种分布式任务调度方法,所述方法用于调度设备,所述方法包括:
向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;
接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;
根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示。
可选的,向所述第一工作设备发送允许执行所述任务的指示之后,所述方法还包括:
如果在第一预设时长内未接收到所述第一工作设备反馈的所述任务的执行状态信息,则通知所述第一工作设备不再执行所述任务,以及,
在候选的其他工作设备中按照第二预设策略选择一台工作设备执行所述任务。
可选的,向候选工作设备下发任务信息之后,所述方法还包括:
如果当需要执行所述任务时在第二预设时长内未收到任何工作设备发来的启动所述任务的消息,则在候选工作设备中按照第三预设策略选择一台工作设备执行所述任务。
根据本发明实施例的第二方面,提供一种分布式任务调度方法,所述方法用于第一工作设备,所述方法包括:
接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;
当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;
当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;
根据所述调度设备返回的指示执行或不执行所述任务。
可选的,所述方法还包括:
在执行所述任务的过程中,按照第四预设策略向所述调度设备反馈所述任务的执行状态信息。
根据本发明实施例的第三方面,提供一种分布式任务调度装置,所述装置包括:
任务预下发模块,用于向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;
启动消息接收模块,用于接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;
任务调度模块,用于根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示。
可选的,所述任务调度模块还用于:
如果在第一预设时长内未接收到所述第一工作设备反馈的所述任务的执行状态信息,则通知所述第一工作设备不再执行所述任务,以及,在候选的其他工作设备中按照第二预设策略选择一台工作设备执行所述任务。
可选的,所述任务调度模块还用于:
如果当需要执行所述任务时在第二预设时长内未收到任何工作设备发来的启动所述任务的消息,则在候选工作设备中按照第三预设策略选择一台工作设备执行所述任务。
根据本发明实施例的第四方面,提供一种分布式任务调度装置,所述装置包括:
任务预接收模块,用于接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;
任务抢占模块,用于当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;
启动消息发送模块,用于当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;
任务处理模块,用于根据所述调度设备返回的指示执行或不执行所述任务。
根据本发明实施例的第五方面,提供、一种分布式任务调度系统,所述系统包括调度设备和第一工作设备;
所述调度设备用于:向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示;
所述第一工作设备用于:接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;根据所述调度设备返回的指示执行或不执行所述任务。
本发明实施例还提供了在一种调度设备,所述调度设备的结构中包括处理器和存储器,所述存储器用于存储支持调度设备执行上述第一方面中分布式任务调度方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述调度设备还可以包括通信接口,用于调度设备与其他设备或通信网络通信。
本发明实施例还提供了在一种工作设备,所述工作设备的结构中包括处理器和存储器,所述存储器用于存储支持工作设备执行上述第一方面中分布式任务调度方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述工作设备还可以包括通信接口,用于工作设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机存储介质,用于储存分布式任务调度装置所用的计算机软件指令,其包含用于执行上述第一方面中分布式任务调度的方法为分布式任务调度装置所涉及的程序。
本发明实施例还提供了一种计算机存储介质,用于储存分布式任务调度装置所用的计算机软件指令,其包含用于执行上述第二方面中分布式任务调度的方法为分布式任务调度装置所涉及的程序。
在本发明实施例中,调度设备预先向各候选工作设备下发任务信息,其中任务信息中至少包括了任务内容和执行时间,到了需要执行该任务时,各候选工作设备通过竞争的方式争夺该任务的执行权,当一个工作设备抢占到了执行权后,才能向调度设备发送启动该任务的信息。这样,因为工作设备可根据任务信息中的执行时间自动唤醒自己去抢占、执行任务,无需调度设备唤醒工作设备,也无需调度设备对工作设备进行选择,所以减轻了调度设备的压力;并且,由于任务信息是提前发送的,所以避免了需要执行任务时因接收任务信息而造成的延迟;同时,由于通常只有工作正常的工作设备才能参与竞争,所以也就确保了最终执行任务的工作设备是正常设备。综上,本发明实施例可以很好的满足对高可靠性的需求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明一示例性实施例示出的一种分布式任务调度方法的流程图;
图2是根据本发明一示例性实施例示出的一种分布式任务调度方法的流程图;
图3是根据本发明一示例性实施例示出的一种分布式任务调度方法的流程图;
图4是根据本发明一示例性实施例示出的一种场景示意图;
图5是根据本发明一示例性实施例示出的一种分布式任务调度装置的框图;
图6是根据本发明一示例性实施例示出的一种分布式任务调度装置的框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是根据本发明一示例性实施例示出的一种分布式任务调度方法的流程图。作为示例,该方法可用于调度设备,例如调度服务器、中央服务器等。
参见图1所示,该方法可以包括以下步骤:
步骤S101,向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间。
作为示例工作设备可以为work(工作)服务器。为了避免当需要执行任务时因接收任务信息而造成延迟,在本发明实施例中,任务信息由调度设备提前下发给各候选工作设备。
任务内容可以是执行一个脚本、执行一条SQL语句或者是更复杂内容等,对此本实施例并不进行限制。
此外任务信息中除了可以包含任务内容和执行时间,还可以进一步包含其他信息,对此本实施例也并不进行限制。
作为示例,任务信息具体可以包含以下内容:
执行时间,比如每天的13点23分;
具体执行的任务内容,可以称为算子E,具体可以是执行一条SQL语句;
任务执行前和执行后(或者异常时)汇报日志的目的地,例如目的地可以就是调度服务器;
重试次数,报警接收人等;
抢占任务执行权的相关参数,以zookeeper(简称zk)技术为例,可以是抢占zk的znode路径,比如是/task/work/113等。
步骤S102,接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备。
在本实施例中不再由调度设备指定或选择哪台工作设备去执行任务,而是由各工作设备以竞争、抢占的方式确定任务执行权,各工作设备可根据任务信息中的执行时间自动唤醒自己去抢占、执行任务,而无需调度设备唤醒工作设备,也无需调度设备对工作设备进行选择,从而减轻了调度设备的压力;同时,由于通常只有工作正常的工作设备才能参与竞争,所以也就确保了最终执行任务的工作设备是正常设备。
以候选工作设备是三台工作服务器B、C、D为例,工作服务器B、C、D接收到任务信息之后,可以在本地形成定时任务(如crontab定时任务),然后在每天的13点23分,三台工作服务器B、C、D上的crontab会准时启动zkClient命令,Client通过getChildren获取所有的/task/work/下znode列表,并且设置一个Watcher等待通知,返回值有多少个znode数量就对应Client来竞选。返回的节点列表进行排序,找到最小的worker编号,如果是和zk服务器分配的一致,那么就代表自己的编号是最小的,自己就是需要执行命令的工作服务器。如果发现自己的编号不是最小,那就退出本次任务抢占。
对于成功抢占了任务执行权的工作设备,即第一工作设备,会立即向调度设备发送一条启动任务的消息,以通知调度设备自己抢到了任务执行权。此外第一工作设备还可告知调度设备该任务已经具备开始执行的时间、执行的是哪条任务、第一工作设备是哪台设备等信息。
步骤S103,根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示。
作为示例可参见图2所示,在本实施例或本发明其他某些实施例中,根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示,可以包括:
步骤S1031,判断所述任务是否已由其他工作设备执行;
步骤S1032,如果所述任务未由其他工作设备执行,则向所述第一工作设备发送允许执行所述任务的指示;
步骤S1033,如果所述任务已由其他工作设备执行,则向所述第一工作设备发送禁止执行所述任务的指示。
在大部分正常情况下,调度设备将允许抢占到执行权的工作设备执行该任务。而在一些特殊情况下:
例如一种情况下,其他工作设备在第一工作设备之前已经抢先发送了启动所述任务的信息,而由于一些异常导致第一工作设备也发送了启动所述任务的消息,则第一工作设备将被禁止执行所述任务。
例如再一种情况下,虽然第一工作设备抢占成功,即抢到了该任务的执行权,但是由于出现异常,启动所述任务的消息并未发送成功,那么过了一段时间之后,即使启动所述任务的消息最终发送成功,但此时调度设备通常已经指定其他工作设备来执行该任务,所以第一工作设备仍将被禁止执行该任务。
在本实施例或本发明其他某些实施例中,向所述第一工作设备发送允许执行所述任务的指示之后,所述方法还可以包括:
如果在第一预设时长内未接收到所述第一工作设备反馈的所述任务的执行状态信息,则通知所述第一工作设备不再执行所述任务,以及,
在候选的其他工作设备中按照第二预设策略(例如随机)选择一台工作设备执行所述任务。
为例保证任务的正常执行,第一工作设备在被允许执行任务后应继续向调度设备上报该任务的执行情况,也即应上报执行状态信息。如果调度设备在第一预设时长内未收到执行状态信息,出现超时,则调度设备可认为出现了异常,然后采取措施,例如:
通知第一工作设备不再执行所述任务,即命令其对执行该任务的进程进行关闭(kill);
在候选的其他工作设备中随机选择一台执行该任务;
此外,还可以给用户发送第一工作设备执行任务超时或异常的报警。
在本实施例或本发明其他某些实施例中,向候选工作设备下发任务信息之后,所述方法还包括:
如果当需要执行所述任务时在第二预设时长(例如5s)内未收到任何工作设备发来的启动所述任务的消息,则在候选工作设备中按照第三预设策略选择一台工作设备执行所述任务。
例如,抢到了任务执行权的第一工作设备可能出现了异常,所以未成功发送启动所述任务的消息,致使调度设备未收到任务工作设备发来的启动所述任务的消息。此时调度设备可以在候选工作设备中按照第三预设策略选择一台工作设备执行所述任务。其中第三预设策略可以是随机选择,或者是选择最近正常执行过任务的工作设备,等等,对此本实施例并不进行限制。另外过了一段时间之后,即使第一工作设备最终成功发送了启动所述任务的消息,但此时因为调度设备已经选择其他设备来执行该任务,所以第一工作设备仍将被禁止执行该任务。
在本实施例中,调度设备预先向各候选工作设备下发任务信息,其中任务信息中至少包括了任务内容和执行时间,到了需要执行该任务时,各候选工作设备通过竞争的方式争夺该任务的执行权,当一个工作设备抢占到了执行权后,才能向调度设备发送启动该任务的信息。这样,因为工作设备可根据任务信息中的执行时间自动唤醒自己去抢占、执行任务,无需调度设备唤醒工作设备,也无需调度设备对工作设备进行选择,所以减轻了调度设备的压力;并且,由于任务信息是提前发送的,所以避免了需要执行任务时因接收任务信息而造成的延迟;同时,由于通常只有工作正常的工作设备才能参与竞争,所以也就确保了最终执行任务的工作设备是正常设备。综上,本实施例可以很好的满足对高可靠性的需求。
图3是根据本发明一示例性实施例示出的一种分布式任务调度方法的流程图。作为示例,该方法可用于工作设备,例如工作服务器等。
参见图3所示,该方法可以包括以下步骤:
步骤S301,接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间。
为了避免当需要执行任务时因接收任务信息而造成的延迟,在本发明实施例中任务信息由调度设备提前下发给各候选工作设备。任务内容可以是执行一个脚本、执行一条SQL语句或者是更复杂内容等,对此本实施例并不进行限制。任务信息中除了可以包含任务内容和执行时间,还可以进一步包含其他信息,对此本实施例也并不进行限制。
步骤S302,当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权。
下面以zookeeper应用场景为例,对如何竞争所述任务的执行权进行进一步的说明:
zookeeper应用场景中提出了对于服务器集群中节点管理的问题,对于服务器集群中正在承担任务的工作服务器可称为master服务器(也即第一工作设备),其他工作服务器称为slave服务器。zookeeper可保证集群中Master可用性和唯一性。图4为本发明实施例中zookeeper应用场景的一个示意图,在图4中调度设备为调度服务器A,工作设备分别是工作服务器B、C、D。
工作服务器设置zkClient连接到zk上,判断znode的路径/Roles/workers是否存在,如果不存在则建立该路径,znode的类型是PERSISTENT类型,保证不会随着Client的session断开而消失。
Client(客户端)在/Roles/workers下面建立一个SEQUENCE|EPHEMERAL类型的znode,前缀可以是worker,由zk保证znode编号是递增而且是暂时的,一旦session断开,创建的znode也会消失。这个时候就会返回给Client一个znode编号。
Client通过getChildren获取所有的/Roles/workers下znode列表,并且设置一个Watcher等待通知,返回值有多少个znode数量就对应Client来竞选。
对于返回的节点列表进行排序,找到最小的worker编号,如果是和zk服务器分配的一致,那么就代表自己的编号是最小的,自己就是Master。如果发现自己的编号不是最小,那么就等待通知,一旦Watcher触发,就在Watcher回到上一步。
上面的机制主要利用了zk的几个特性:
对于N个客户端同时请求创建一个znode,zk能保证顺序的一致性,并且保证每个客户端创建的znode节点是递增并且唯一;
因为创建的znode是临时的,一旦session断开,那么znode就会从zk上消失,从而给每个设置Watcher的客户端发送通知,让每个客户端重新竞选Master,编号小的肯定是Master,保证了唯一性。
步骤S303,当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息。
步骤S304,根据所述调度设备返回的指示执行或不执行所述任务。
此外,为例保证任务的正常执行,工作设备在被允许执行任务后应继续向调度设备上报该任务的执行情况,也即应上报执行状态信息,所以所述方法还可以包括:
在执行所述任务的过程中,按照第四预设策略向所述调度设备反馈所述任务的执行状态信息。
例如可以定时反馈所述任务的执行状态信息,以使调度设备掌握任务的执行情况。
在本实施例中,调度设备预先向各候选工作设备下发任务信息,其中任务信息中至少包括了任务内容和执行时间,到了需要执行该任务时,各候选工作设备通过竞争的方式争夺该任务的执行权,当一个工作设备抢占到了执行权后,才能向调度设备发送启动该任务的信息。这样,因为工作设备可根据任务信息中的执行时间自动唤醒自己去抢占、执行任务,无需调度设备唤醒工作设备,也无需调度设备对工作设备进行选择,所以减轻了调度设备的压力;并且,由于任务信息是提前发送的,所以避免了需要执行任务时因接收任务信息而造成的延迟;同时,由于通常只有工作正常的工作设备才能参与竞争,所以也就确保了最终执行任务的工作设备是正常设备。综上,本实施例可以很好的满足对高可靠性的需求。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
图5是根据本发明一示例性实施例示出的一种分布式任务调度装置的框图。参见图5所示,该装置可以包括:
任务预下发模块501,用于向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;
启动消息接收模块502,用于接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;
任务调度模块503,用于根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示。
在本实施例或本发明其他某些实施例中,所述任务调度模块503还可以用于:
如果在第一预设时长内未接收到所述第一工作设备反馈的所述任务的执行状态信息,则通知所述第一工作设备不再执行所述任务,以及,在候选的其他工作设备中按照第二预设策略选择一台工作设备执行所述任务。
在本实施例或本发明其他某些实施例中,所述任务调度模块503还可以用于:
如果当需要执行所述任务时在第二预设时长内未收到任何工作设备发来的启动所述任务的消息,则在候选工作设备中按照第三预设策略选择一台工作设备执行所述任务。
图6是根据本发明一示例性实施例示出的一种分布式任务调度装置的框图。参见图6所示,该装置包括:
任务预接收模块601,用于接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;
任务抢占模块602,用于当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;
启动消息发送模块603,用于当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;
任务处理模块604,用于根据所述调度设备返回的指示执行或不执行所述任务。
在本发明实施例中,调度设备预先向各候选工作设备下发任务信息,其中任务信息中至少包括了任务内容和执行时间,到了需要执行该任务时,各候选工作设备通过竞争的方式争夺该任务的执行权,当一个工作设备抢占到了执行权后,才能向调度设备发送启动该任务的信息。这样,因为工作设备可根据任务信息中的执行时间自动唤醒自己去抢占、执行任务,无需调度设备唤醒工作设备,也无需调度设备对工作设备进行选择,所以减轻了调度设备的压力;并且,由于任务信息是提前发送的,所以避免了需要执行任务时因接收任务信息而造成的延迟;同时,由于通常只有工作正常的工作设备才能参与竞争,所以也就确保了最终执行任务的工作设备是正常设备。综上,本实施例可以很好的满足对高可靠性的需求。
关于上述实施例中的装置,其中各个单元\模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本发明实施例还公开了一种分布式任务调度系统,所述系统包括调度设备和第一工作设备;
所述调度设备用于:向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示;
所述第一工作设备用于:接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;根据所述调度设备返回的指示执行或不执行所述任务。
本发明实施例还提供了一种调度设备,所述调度设备的结构中包括处理器和存储器,所述存储器用于存储支持调度设备执行上述第一方面中分布式任务调度的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行。
所述处理器用于:
向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;
接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;
根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示。
本发明实施例还提供了一种工作设备,所述工作设备的结构中包括处理器和存储器,所述存储器用于存储支持工作设备执行上述第二方面中分布式任务调度的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行。
所述处理器用于:
接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;
当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;
当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;
根据所述调度设备返回的指示执行或不执行所述任务。
本发明实施例还提供了一种计算机存储介质,用于储存分布式任务调度装置所用的计算机软件指令,其包含用于执行上述第一方面中分布式任务调度方法为分布式任务调度装置所涉及的程序。
本发明实施例还提供了一种计算机存储介质,用于储存分布式任务调度装置所用的计算机软件指令,其包含用于执行上述第二方面中分布式任务调度方法为分布式任务调度装置所涉及的程序。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
本发明实施例公开了A1、一种分布式任务调度方法,所述方法用于调度设备,所述方法包括:
向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;
接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;
根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示。
A2、根据A1所述的方法,向所述第一工作设备发送允许执行所述任务的指示之后,所述方法还包括:
如果在第一预设时长内未接收到所述第一工作设备反馈的所述任务的执行状态信息,则通知所述第一工作设备不再执行所述任务,以及,
在候选的其他工作设备中按照第二预设策略选择一台工作设备执行所述任务。
A3、根据A1所述的方法,向候选工作设备下发任务信息之后,所述方法还包括:
如果当需要执行所述任务时在第二预设时长内未收到任何工作设备发来的启动所述任务的消息,则在候选工作设备中按照第三预设策略选择一台工作设备执行所述任务。
本发明实施例公开了B4、一种分布式任务调度方法,所述方法用于第一工作设备,所述方法包括:
接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;
当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;
当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;
根据所述调度设备返回的指示执行或不执行所述任务。
B5、根据B4所述的方法,所述方法还包括:
在执行所述任务的过程中,按照第四预设策略向所述调度设备反馈所述任务的执行状态信息。
本发明实施例公开了C6、一种分布式任务调度装置,所述装置包括:
任务预下发模块,用于向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;
启动消息接收模块,用于接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;
任务调度模块,用于根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示。
C7、根据C6所述的装置,所述任务调度模块还用于:
如果在第一预设时长内未接收到所述第一工作设备反馈的所述任务的执行状态信息,则通知所述第一工作设备不再执行所述任务,以及,在候选的其他工作设备中按照第二预设策略选择一台工作设备执行所述任务。
C8、根据C6所述的装置,所述任务调度模块还用于:
如果当需要执行所述任务时在第二预设时长内未收到任何工作设备发来的启动所述任务的消息,则在候选工作设备中按照第三预设策略选择一台工作设备执行所述任务。
本发明实施例公开了D9、一种分布式任务调度装置,所述装置包括:
任务预接收模块,用于接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;
任务抢占模块,用于当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;
启动消息发送模块,用于当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;
任务处理模块,用于根据所述调度设备返回的指示执行或不执行所述任务。
本发明实施例公开了E10、一种分布式任务调度系统,所述系统包括调度设备和第一工作设备;
所述调度设备用于:向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示;
所述第一工作设备用于:接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;根据所述调度设备返回的指示执行或不执行所述任务。
本发明实施例还公开了F11、一种调度设备,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行;
所述处理器用于:
向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;
接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;
根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示。
本发明实施例还公开了G12、一种工作设备,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行;
所述处理器用于:
接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;
当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;
当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;
根据所述调度设备返回的指示执行或不执行所述任务。
Claims (10)
1.一种分布式任务调度方法,其特征在于,所述方法用于调度设备,所述方法包括:
向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;
接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是根据所述执行时间在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;
根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示,具体包括:判断所述任务是否已由其他工作设备执行;
如果所述任务未由其他工作设备执行,则向所述第一工作设备发送允许执行所述任务的指示;
如果所述任务已由其他工作设备执行,则向所述第一工作设备发送禁止执行所述任务的指示。
2.根据权利要求1所述的方法,其特征在于,向所述第一工作设备发送允许执行所述任务的指示之后,所述方法还包括:
如果在第一预设时长内未接收到所述第一工作设备反馈的所述任务的执行状态信息,则通知所述第一工作设备不再执行所述任务,以及,
在候选的其他工作设备中按照第二预设策略选择一台工作设备执行所述任务。
3.根据权利要求1所述的方法,其特征在于,向候选工作设备下发任务信息之后,所述方法还包括:
如果当需要执行所述任务时在第二预设时长内未收到任何工作设备发来的启动所述任务的消息,则在候选工作设备中按照第三预设策略选择一台工作设备执行所述任务。
4.一种分布式任务调度方法,其特征在于,所述方法用于第一工作设备,所述方法包括:
接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;
当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;
当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;
根据所述调度设备返回的指示执行或不执行所述任务,所述指示由所述调度设备根据判断所述任务是否由其他工作设备执行进行确定;
若所述任务未由其他工作设备执行,则接收执行所述任务的指示;
若所述任务已由其他工作设备执行,则接收不执行所述任务的指示。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在执行所述任务的过程中,按照第四预设策略向所述调度设备反馈所述任务的执行状态信息。
6.一种分布式任务调度装置,其特征在于,所述装置包括:
任务预下发模块,用于向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;
启动消息接收模块,用于接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是根据所述执行时间在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;
任务调度模块,用于根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示,具体用于:判断所述任务是否已由其他工作设备执行;如果所述任务未由其他工作设备执行,则向所述第一工作设备发送允许执行所述任务的指示;如果所述任务已由其他工作设备执行,则向所述第一工作设备发送禁止执行所述任务的指示。
7.根据权利要求6所述的装置,其特征在于,所述任务调度模块还用于:
如果在第一预设时长内未接收到所述第一工作设备反馈的所述任务的执行状态信息,则通知所述第一工作设备不再执行所述任务,以及,在候选的其他工作设备中按照第二预设策略选择一台工作设备执行所述任务。
8.根据权利要求6所述的装置,其特征在于,所述任务调度模块还用于:
如果当需要执行所述任务时在第二预设时长内未收到任何工作设备发来的启动所述任务的消息,则在候选工作设备中按照第三预设策略选择一台工作设备执行所述任务。
9.一种分布式任务调度装置,其特征在于,所述装置包括:
任务预接收模块,用于接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;
任务抢占模块,用于当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;
启动消息发送模块,用于当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;
任务处理模块,用于根据所述调度设备返回的指示执行或不执行所述任务,所述指示由所述调度设备根据判断所述任务是否由其他工作设备执行进行确定;
若所述任务未由其他工作设备执行,则接收执行所述任务的指示;
若所述任务已由其他工作设备执行,则接收不执行所述任务的指示。
10.一种分布式任务调度系统,其特征在于,所述系统包括调度设备和第一工作设备;
所述调度设备用于:向候选工作设备下发任务信息,其中所述任务信息包括任务内容和执行时间;接收第一工作设备发来的启动所述任务的消息,其中所述第一工作设备是根据所述执行时间在需要执行所述任务时所述候选工作设备中抢占到所述任务执行权的工作设备;根据第一预设策略向所述第一工作设备发送是否允许执行所述任务的指示,具体用于:判断所述任务是否已由其他工作设备执行;如果所述任务未由其他工作设备执行,则向所述第一工作设备发送允许执行所述任务的指示;如果所述任务已由其他工作设备执行,则向所述第一工作设备发送禁止执行所述任务的指示;
所述第一工作设备用于:接收调度设备发来的任务信息,其中所述任务信息包括任务内容和执行时间;当需要执行所述任务时,与其他工作设备按照预设规则竞争所述任务的执行权;当抢占到所述任务的执行权后,向所述调度设备发送启动所述任务的消息;根据所述调度设备返回的指示执行或不执行所述任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611259262.5A CN107092521B (zh) | 2016-12-30 | 2016-12-30 | 一种分布式任务调度方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611259262.5A CN107092521B (zh) | 2016-12-30 | 2016-12-30 | 一种分布式任务调度方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107092521A CN107092521A (zh) | 2017-08-25 |
CN107092521B true CN107092521B (zh) | 2020-11-10 |
Family
ID=59649139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611259262.5A Active CN107092521B (zh) | 2016-12-30 | 2016-12-30 | 一种分布式任务调度方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107092521B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008031B (zh) * | 2018-01-05 | 2022-04-15 | 北京金山云网络技术有限公司 | 设备操作方法、集群系统、电子设备及可读取存储介质 |
CN110018896A (zh) * | 2018-01-08 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种任务处理方法、装置、执行端集群及介质 |
CN109088921B (zh) * | 2018-07-24 | 2021-05-28 | 广东浪潮大数据研究有限公司 | 一种写操作处理方法、装置和计算机可读存储介质 |
CN110780988B (zh) * | 2018-07-31 | 2022-12-13 | 重庆小雨点小额贷款有限公司 | 一种任务触发方法、装置及计算机可读存储介质 |
CN110895487B (zh) * | 2018-09-12 | 2023-03-10 | 北京奇虎科技有限公司 | 分布式任务调度系统 |
CN110908776A (zh) * | 2018-09-17 | 2020-03-24 | 网宿科技股份有限公司 | 定时任务的执行方法及相关装置、计算机可读存储介质 |
CN109816199B (zh) * | 2018-12-14 | 2023-09-22 | 深圳平安医疗健康科技服务有限公司 | 工作任务处理方法及装置、服务器和计算机可读存储介质 |
CN109831520A (zh) * | 2019-03-07 | 2019-05-31 | 网宿科技股份有限公司 | 一种定时任务调度方法及相关装置 |
CN112416581B (zh) * | 2020-11-13 | 2022-02-18 | 五八同城信息技术有限公司 | 定时任务的分布式调用系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744724A (zh) * | 2014-02-19 | 2014-04-23 | 互联网域名系统北京市工程研究中心有限公司 | 定时任务集群方法及其装置 |
CN105100259A (zh) * | 2015-08-18 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种分布式定时任务执行方法和系统 |
CN105159767A (zh) * | 2015-09-06 | 2015-12-16 | 北京京东尚科信息技术有限公司 | 用于基于zookeeper实现分布式调度的方法和装置 |
CN106095562A (zh) * | 2016-08-23 | 2016-11-09 | 北京云纵信息技术有限公司 | 任务调度管理的方法和装置 |
CN106126332A (zh) * | 2016-06-27 | 2016-11-16 | 北京京东尚科信息技术有限公司 | 分布式定时任务调度系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793272B (zh) * | 2013-12-27 | 2017-05-24 | 北京天融信软件有限公司 | 一种周期性任务调度方法及系统 |
-
2016
- 2016-12-30 CN CN201611259262.5A patent/CN107092521B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744724A (zh) * | 2014-02-19 | 2014-04-23 | 互联网域名系统北京市工程研究中心有限公司 | 定时任务集群方法及其装置 |
CN105100259A (zh) * | 2015-08-18 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种分布式定时任务执行方法和系统 |
CN105159767A (zh) * | 2015-09-06 | 2015-12-16 | 北京京东尚科信息技术有限公司 | 用于基于zookeeper实现分布式调度的方法和装置 |
CN106126332A (zh) * | 2016-06-27 | 2016-11-16 | 北京京东尚科信息技术有限公司 | 分布式定时任务调度系统及方法 |
CN106095562A (zh) * | 2016-08-23 | 2016-11-09 | 北京云纵信息技术有限公司 | 任务调度管理的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107092521A (zh) | 2017-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107092521B (zh) | 一种分布式任务调度方法、装置及系统 | |
CN107370667B (zh) | 多线程并行处理方法和装置、可读介质和存储控制器 | |
CN111901422B (zh) | 一种集群中节点的管理方法、系统及装置 | |
CN110611707B (zh) | 一种任务调度的方法及装置 | |
EP2940596B1 (en) | Data acquisition method and device | |
CN106878132B (zh) | 基于周期及优先级的总线调度方法 | |
CN113051019A (zh) | 流程任务执行管控方法、装置以及设备 | |
CN109921942B (zh) | 云平台切换控制方法、装置、系统及电子设备 | |
CN102354165A (zh) | 在线更新数据的方法、控制器和人机交互系统 | |
CN111988240B (zh) | 一种数据发送方法、装置、电子设备及存储介质 | |
CN109062681A (zh) | 一种周期性循环任务的执行方法、系统、装置及存储介质 | |
EP4123451A1 (en) | Scheduling complex jobs in a distributed network | |
CN112631761A (zh) | 一种任务调度监控方法和装置 | |
CN115964153A (zh) | 一种异步任务处理方法、装置、设备以及存储介质 | |
CN109871273A (zh) | 一种自适应任务迁移方法及装置 | |
CN106412088A (zh) | 一种数据同步方法及终端 | |
CN113965494A (zh) | 用于冗余进程网络中的故障检测和角色选择的方法 | |
CN113608852A (zh) | 任务调度方法、调度模块、推理节点和协同作业系统 | |
US20130185726A1 (en) | Method for Synchronous Execution of Programs in a Redundant Automation System | |
CN106897128B (zh) | 一种分布式应用退出方法、系统以及服务器 | |
CN109947015B (zh) | 任务的执行方法及主控制器 | |
CN103761106A (zh) | 流程的控制方法及流程引擎 | |
CN111638965B (zh) | 基于栅栏复制与握手的命令队列间栅栏同步方法及系统 | |
CN107506214B (zh) | 一种集群系统控制器的更新方法及更新系统 | |
Ravindran et al. | On best-effort real-time assurances for recovering from distributable thread failures in distributed real-time systems |
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 | ||
CB02 | Change of applicant information |
Address after: Building N3, building 12, No. 27, Jiancai Chengzhong Road, Haidian District, Beijing 100086 Applicant after: Beijing Xingxuan Technology Co.,Ltd. Address before: 100085 Beijing, Haidian District on the road to the information on the ground floor of the 1 to the 3 floor of the 2 floor, room 11, 202 Applicant before: Beijing Xiaodu Information Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |