CN108958920B - 一种分布式任务调度方法及系统 - Google Patents
一种分布式任务调度方法及系统 Download PDFInfo
- Publication number
- CN108958920B CN108958920B CN201810774275.9A CN201810774275A CN108958920B CN 108958920 B CN108958920 B CN 108958920B CN 201810774275 A CN201810774275 A CN 201810774275A CN 108958920 B CN108958920 B CN 108958920B
- Authority
- CN
- China
- Prior art keywords
- task
- server
- intermediate server
- client
- distributed
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种分布式任务调度方法及系统,属于计算机技术领域。所述方法包括如下步骤:S1:客户端服务器启动后自动扫描所有任务,与中间服务器建立链接,将自身信息及任务信息上报给中间服务器;S2:所述中间服务器获取客户端服务器信息和任务信息,并根据任务配置信息,将一个任务拆分为多个独立的子任务后分配给各客户端服务器;S3:所述客户端服务器执行所述中间服务器分配的子任务。本发明通过将任务调度引擎集成在中间服务器中,方便管理任务的依赖关系;通过中间服务器,将一个任务拆分为多个独立的子任务,并行调用客户端服务器执行各自分配到的任务项,实现并行调度。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种分布式任务调度方法及系统。
背景技术
分布式任务调度,是指将一个应用或者业务划分为多个任务交由多个服务器进行处理。分布式任务调度可解决单个服务器资源不足等问题,达到大规模数据处理的目的。
分布式框架有很多,其中传统的Zookeeper分布式应用程序协调服务,其对数据进行分片,分配给多个应用服务器去执行处理,实现并行执行,从而提升了处理速度。但是由于Zookeeper需要管理很多应用服务器,每个任务开始及结束的记录也都需要写入Zookeeper,造成Zookeeper的负担比较重,而且如果要加入新的应用服务器,也需要在Zookeeper上进行操作,进一步加大了其负担,且不能实现应用服务器的动态扩充。
专利号为CN106993019A的中国专利公布的分布式任务调度方法和系统,虽然减少了Zookeeper的负担,实现了动态扩充应用服务器。但是,其任务调度引擎集成在应用服务器(即客户端)中,服务端只负责任务的监控、客户端任务集群的协调工作,这种方式的缺点是任务之间的依赖关系难以维护,难以扩展新功能。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种分布式任务调度方法及系统,以克服现有技术中任务之间的依赖关系难以维护,难以扩展新功能的问题。
为解决上述技术问题,本发明采用的技术方案是:
一方面,提供了一种分布式任务调度方法,所述方法包括如下步骤:
S1:客户端服务器启动后自动扫描所有任务,与中间服务器建立链接,将自身信息及任务信息上报给中间服务器;
S2:所述中间服务器获取客户端服务器信息和任务信息,并根据任务配置信息,将一个任务拆分为多个独立的子任务后分配给各客户端服务器;
S3:所述客户端服务器执行所述中间服务器分配的子任务。
进一步的,所述步骤S2还包括:
所述中间服务器获取任务信息后,根据任务间的前后关系,对多个任务进行流程编排,形成一个有向无环图类型的任务流程。
进一步的,所述步骤S3还包括:
在所述客户端服务器执行所述中间服务器分配的子任务前,所述中间服务器判断所述子任务对应的任务是否是流程任务,若是,则生成相应的有向无环执行图,按照所述有向无环执行图顺序依次向相应客户端服务器发送子任务执行请求,若不是,则直接向相应客户端服务器发送子任务执行请求。
进一步的,所述向相应客户端服务器发送子任务执行请求前,还包括:
先判断当前子任务在哪台中间服务器上,然后向该子任务所在的中间服务器发送子任务执行请求,再将子任务执行请求转发到相应的客户端服务器。
进一步的,所述步骤S3还包括:
所述客户端服务器执行所述中间服务器分配的子任务后,所述客户端服务器将子任务执行状态上报给当前中间服务器,若子任务的调用方是当前中间服务器,则所述当前中间服务器接收到子任务执行状态后,根据任务配置以及有向无环执行图状态确定流程任务状态、以及是否执行下一层子任务,若子任务的调用方不是当前中间服务器,则所述当前中间服务器将子任务执行状态路由到目标中间服务器,所述目标中间服务器接收到子任务执行状态后,根据任务配置以及有向无环执行图状态确定流程任务状态、以及是否执行下一层子任务。
进一步的,所述步骤S2还包括:
所述中间服务器获取客户端服务器信息和任务信息后,所述中间服务器将具有相同任务信息的客户端服务器划分为一个任务群组进行管理。
进一步的,所述步骤S2还包括:
所述中间服务器获取客户端服务器信息和任务信息后,所述中间服务器将具有相同任务信息的客户端服务器划分为一个任务群组进行管理。
进一步的,所述步骤S2还包括:
通过分布式协调系统在所述中间服务其中选举出一个leader中间服务器,所述leader中间服务器监控集群中其他中间服务器节点,若发现有中间服务器宕机,则为所述宕机的中间服务器管理的任务群组重新分配一个在线的中间服务器进行管理,并在所述任务群组中设置migrate节点,所述migrate节点用于标注任务群组的迁移状态,当迁移完成后,删除该migrate节点。
进一步的,所述步骤S2还包括:
所述中间服务器实时监控任务群组下的migrate节点,若发现所述migrate节点的IP地址和自身的相同,则接管该任务群组,并注册任务群组下的owner节点。
进一步的,所述步骤S2还包括:
所述leader中间服务器监听所述owner节点,所述owner节点标注任务群组由哪台中间服务器管理,管理该任务群组的中间服务器掉线后,所述leader中间服务器重新分配一个在线的中间服务器接管该任务群组并设置migrate节点。
进一步的,所述步骤S2还包括:
所有后台中间服务器监听所述leader中间服务器节点,若发现所述leader中间服务器宕机,则触发集群leader选举。
另一方面,提供了一种分布式任务调度系统,所述系统包括:
客户端服务器,所述客户端服务器有多个,用于扫描任务,将任务信息及配置上报给中间服务器,并执行被分配到的子任务;
中间服务器,所述中间服务器有多个,且所述中间服务器之间相互连接,用于管理所述客户端服务器、对多个任务进行流程编排以及将一个任务拆分为多个独立的子任务后分配给各客户端服务器、转发任务的依赖调用;
分布式协调系统,与所述中间服务器连接,用于统一协调所述中间服务器。
进一步的,所述系统还包括:
后管系统,所述后管系统与所述分布式协调系统连接,用于动态配置、修改、迁移和/或维护任务,以及查看任务的历史执行情况。
进一步的,所述系统还包括:
数据库,用于保存任务配置及历史执行情况。
本发明实施例提供的技术方案带来的有益效果是:
1、本发明提供的分布式任务调度方法及系统,通过将任务调度引擎集成在中间服务器中,方便管理任务的依赖关系,并且可以将不同的普通任务编排组合成一个复杂的任务,由中间服务器根据编排的顺序和依赖关系依次触发所有的子任务;
2、本发明提供的分布式任务调度方法及系统,中间服务器根据任务配置的分片项,将一个任务拆分为多个独立的子任务,并由中间服务器并行调用客户端服务器执行各自分配到的任务项,实现并行调度;
3、本发明提供的分布式任务调度方法及系统,通过不同的中间服务器加载不同应用的任务调度引擎,中间服务器宕机后自动感知,任务调度引擎自动飘移到存活的服务器中,提高了高可用性;
4、本发明提供的分布式任务调度方法及系统,将任务拆分为多个子任务项后,各个客户端服务器分别执行各自分配到的任务项,进一步的,一旦有新的客户端服务器加入集群,或现有客户端服务器下线,中间服务器将在保留本次任务执行不变的情况下,下次任务开始前触发子任务重分配。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的分布式任务调度方法的流程图;
图2是本发明实施例提供的分布式任务调度方法及系统中任务编排的一个示例;
图3是本发明实施例提供的分布式任务调度方法及系统的任务执行时中间服务器与客户端服务器交互流程图;
图4是本发明实施例提供的分布式任务调度方法及系统中客户端服务器与中间服务器交互的流程图;
图5是本发明实施例提供的分布式任务调度系统的结构示意图;
图6是本发明实施例提供的分布式任务调度方法及系统中分布式协调系统的数据结构图;
图7是本发明实施例提供的分布式任务调度方法及系统的中间服务器与客户端服务器、分布式协调系统交互的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合说明书附图对本发明作进一步阐述。
实施例1
如图1所示,图1是本发明实施例1公开的分布式任务调度方法的流程图,所述方法包括如下步骤:
S1:客户端服务器启动后自动扫描所有任务,与中间服务器建立链接,将自身信息及任务信息上报给中间服务器。
具体的,客户端服务器启动后自动扫描所有任务,与中间服务器建立TCP链接,将自身信息及任务信息上报给中间服务器,其中,客户端服务器自身信息包括其IP地址等,任务信息包括任务配置信息、任务标识、任务执行时间等,任务标识是用来唯一标识一个任务的,可以是任务的编号,也可以是其他标志项。需要说明的是,在本实施例中,客户端服务器和中间服务器都有多个。
S2:所述中间服务器获取客户端服务器信息和任务(Job)信息,并根据任务(Job)配置信息,将一个任务拆分为多个独立的子任务后分配给各客户端服务器。
具体的,所述中间服务器获取客户端服务器信息和任务信息,并根据任务配置信息中的分片数,以及对应的分片算法,将一个任务拆分为多个独立的子任务,然后根据客户端服务器信息中的客户端服务器的IP地址将拆分后的子任务分配给各客户端服务器。比如,任务配置信息中的任务的分片数为4片,那么中间服务器就按照对应的分片算法将任务分为4片子任务,然后分给客户端服务器。子任务分配可以采用轮循的方法,也可以采用顺序分配方法,还可以是其他分配方法,这里对分配方法不做限定。不管是哪种分配方法,都遵循尽量平均分配的原则。其中,客户端服务器的IP地址标识唯一一个客户端服务器,
进一步的,所述中间服务器获取任务信息后,根据任务间的前后关系,对多个任务进行流程编排,形成一个有向无环图类型的任务流程。
具体的,用户可以根据任务间的前后关系,选择是否需要对任务进行编排,若是需要,则通过所述中间服务器根据任务间的前后关系,对多个任务进行流程编排,形成一个有向无环图类型的任务流程,以方便后续相关任务依次被执行。比如,如图2所示,根据任务1、2、3、4、5、6之间的前后关系,将任务1至6编排为如图2所述的有向无环图类型的任务流程,则任务6执行完成后,会触发执行任务1、任务2及任务5,当任务2完成后,触发执行任务3,当任务3和/或任务5完成后,触发执行任务4。
进一步的,所述中间服务器获取客户端服务器信息和任务信息后,所述中间服务器将具有相同任务信息的客户端服务器划分为一个任务群组进行管理。
具体来说,所述中间服务器获取客户端服务器的IP地址和任务(Job)信息,然后将具有相同任务(Job)信息的客户端服务器划分为一个任务群组。比如,如果客户端服务器1和客户端服务器2都具有相同的Jobl,则任务群组1中就包括客户端服务器1和客户端服务器2,然后中间服务器根据任务配置信息中的分片数以及分片算法将任务进行拆分,将Job1拆分为多个独立的子任务,然后根据客户端服务器的IP地址将拆分后的子任务分配给任务群组1中的各客户端服务器。
这里需要说明的是,虽然客户端服务器中的任务信息中本身包括任务配置信息,但是任务的配置信息是可以通过后台来进行动态修改的,而中间服务器可以从后台获取最新的任务配置信息,所以中间服务器可以根据该最新的任务配置信息进行任务拆分。
进一步的,所述中间服务器监听所述任务群组中的客户端服务器,当有新的客户端服务器上线,或现有客户端服务器下线,所述中间服务器将保留本次任务执行不变,并在下次任务开始前触发子任务重新分配。如此,可以实现客户端服务器的动态扩充和缩减。
进一步的,通过分布式协调系统在所述中间服务其中选举出一个leader中间服务器,所述leader中间服务器监控集群中其他中间服务器节点,若发现有中间服务器宕机,则为所述宕机的中间服务器管理的任务群组重新分配一个在线的中间服务器进行管理,并在所述任务群组中设置migrate节点,所述migrate节点用于标注任务群组的迁移状态,当迁移完成后,删除该migrate节点。
进一步的,所有后台中间服务器监听所述leader中间服务器节点,若发现所述leader中间服务器宕机,则触发集群leader选举。
具体的,中间服务器与分布式协调系统(即Zookeeper)建立连接,有Zookeeper统一对中间服务器进行协调。Zookeeper在中间服务其中选择出一个作为leader中间服务器,由该leader中间服务器监控其他中间服务器,当发现有中间服务器宕机后会遍历任务群组根节点(groups)下所有migrate节点是否与宕机的中间服务器节点相同,是的话重新分配一个在线的中间服务器接管该migrate节点所在的任务群组。进一步的,所述migrate节点是由中间服务器在所述任务群组中设定的,所述migrate节点用于标注任务群组的迁移状态,当迁移完成后,删除该migrate节点。与此同时,所有后台中间服务器也监听所述leader中间服务器节点,若发现所述leader中间服务器宕机,则触发集群重新选举leader中间服务器。通过上述这种监控方式,可以有效地保证在某个中间服务器宕机时,客户端服务器可以正常进行任务的执行,保证了系统的高可用性。
进一步的,所述中间服务器实时监控任务群组下的migrate节点,若发现所述migrate节点的IP地址和自身的相同,则接管该migrate节点所在的任务群组,并注册任务群组下的owner节点。
具体的,所有后台中间服务器实时监听任务群组下的migrate节点,当发现此migrate节点的IP地址和自身的相同时,则接管该任务群组,并注册任务群组下的owner节点。需要注意的是,为避免中间服务器多次重启后造成任务群组过于集中,任务群组的迁移也可在后台手动执行。
进一步的,所述leader中间服务器监听所述owner节点,所述owner节点标注任务群组由哪台中间服务器管理,管理该任务群组的中间服务器掉线后,所述leader中间服务器重新分配一个在线的中间服务器接管该任务群组并设置migrate节点。
具体的,每个任务群组下均有一个owner节点,所述owner节点用于标注任务群组由哪台中间服务器管理,所述leader中间服务器监听所述owner节点,当管理该任务群组的中间服务器掉线后,leader中间服务器会重新分配一个在线的中间服务器接管该任务群组并设置migrate节点。进一步的,每个任务群组下还设置有修改(modified)节点,所述modified节点用于标注该任务群组的任务配置信息被修改。所述owner节点监控所述modified节点,当发现任务配置信息有变更时,通知客户端服务器。modified节点的设置,能够在不重启中间服务器的情况下,动态的修改任务群组的任务配置信息。
除此之外,在所述中间服务器中还设置有config节点,所述config节点是中间服务器的配置。所述leader中间服务器监听此节点,当配置有变更时,则通过leader中间服务器执行变更。
S3:所述客户端服务器执行所述中间服务器分配的子任务。
进一步的,在所述客户端服务器执行所述中间服务器分配的子任务前,所述中间服务器判断所述子任务对应的任务是否是流程任务,若是,则生成相应的有向无环执行图,按照所述有向无环执行图顺序依次向相应客户端服务器发送子任务执行请求,若不是,则直接向相应客户端服务器发送子任务执行请求。
进一步的,所述向相应客户端服务器发送子任务执行请求前,还包括:
先判断当前子任务在哪台中间服务器上,然后向该子任务所在的中间服务器发送子任务执行请求,再将子任务执行请求转发到相应的客户端服务器。
进一步的,所述步骤S3还包括:
所述客户端服务器执行所述中间服务器分配的子任务后,所述客户端服务器将子任务执行状态上报给当前中间服务器,若子任务的调用方是当前中间服务器,则所述当前中间服务器接收到子任务执行状态后,根据任务配置以及有向无环执行图状态确定流程任务状态、以及是否执行下一层子任务,若子任务的调用方不是当前中间服务器,则所述当前中间服务器将子任务执行状态路由到目标中间服务器,所述目标中间服务器接收到子任务执行状态后,根据任务配置以及有向无环执行图状态确定流程任务状态、以及是否执行下一层子任务。
具体的,参照图3所示,图3是任务执行时中间服务器与客户端服务器交互流程图,当子任务被触发后,首先判断所述子任务对应的任务是否是流程任务,若不是,则直接向相应客户端服务器发送子任务执行请求,若是,则生成相应的有向无环执行图(及即DAG执行图),按照所述有向无环执行图顺序依次向相应客户端服务器发送子任务执行请求。其中,向相应客户端服务器发送子任务执行请求前,先判断当前子任务在哪台中间服务器上,然后向该子任务所在的中间服务器发送子任务执行请求,该中间服务器再将子任务执行请求转发到相应的客户端服务器。子任务执行完成后,客户端服务器将子任务执行成功/失败状态上报给当前中间服务器,如果子任务的调用方不是当前中间服务器,则将任务执行成功/失败状态路由到目标中间服务器,所述目标中间服务器接收到子任务执行成功/失败状态后,根据任务配置以及有向无环执行图状态确定流程任务状态、以及是否执行下一层子任务。一直到有向无环执行图中所有任务都执行完成。
另外,不同的中间服务器管理不同的任务信息,中间服务器还用于根据任务信息查找实际管理该任务信息的目标中间服务器,并将目标中间服务器的地址返回给客户端服务器。
具体的,参照图4所示,图4是客户端服务器与中间服务器交互的流程图,客户端服务器启动后,完成扫描所有任务信息,先随机连接一台中间服务器,然后客户端服务器向中间服务器发出调用中间服务器元数据(Broker Metadata Request)的请求,中间服务器根据客户端服务器上报的任务信息查找该任务信息由哪台中间服务器管理,若是由自身管理,则将该客户端服务器加入其管理的任务群组中,若是不是由自身管理,则将管理该任务信息的中间服务器的地址返回给客户端服务器,客户端服务器与管理该任务信息的中间服务器建立连接,管理该任务信息的中间服务器将该客户端服务器加入到相应的任务群组中。然后,查看该客户端服务器中任务的历史执行状态,若还有任务未执行,则等待中间服务器的调度,执行相应的任务,上报执行状态,若任务已执行,则直接上报执行状态,如果上报成功,则返回到等待调度的状态,若上报失败,则将执行状态放入延迟队列重试上报。这里需要说明的是,如果客户端服务器与中间服务器的TCP链接中断,将不断重试直到连上一台中间服务器。
实施例2
如图5所示,图5是本发明实施例1公开的分布式任务调度系统的结构示意图,所述系统包括:
客户端服务器,所述客户端服务器有多个,用于扫描任务,将任务信息及配置上报给中间服务器,并执行被分配到的子任务;
中间服务器(broker),所述中间服务器有多个,且所述中间服务器之间相互连接,用于管理所述客户端服务器、对多个任务进行流程编排以及将一个任务拆分为多个独立的子任务后分配给各客户端服务器、转发任务的依赖调用;
分布式协调系统(Zookeeper),与所述中间服务器连接,用于统一协调所述中间服务器;
进一步的,所述系统还包括:
后管系统(Dashboard),所述后管系统与所述分布式协调系统连接,用于动态配置、修改、迁移和/或维护任务,以及查看任务的历史执行情况。
具体的,用户在后管系统(Dashboard)上更新了任务的配置后,后管系统在Zookeeper上更新任务的配置信息,Zookeeper触发中间服务器的监听功能,通知更改任务的配置,中间服务器接收到更改的配置,并将更改后的配置信息保存到数据库中。这里需要说明的是,如果更新的是关键配置(比如分片、Corn表达式、手动触发等),需要重新加载任务。若任务需要触发(包括手动触发、定时触发、流程任务触发等),则用户向客户端服务器发起触发请求,客户端服务器接收到触发请求后执行触发请求并上报处理情况。
进一步的,所述系统还包括:
数据库(DB),用于保存任务配置及历史执行情况。
参照图6所示,图6是分布式协调系统的数据结构图,分布式协调系统(Zookeeper)与中间服务器建立连接,由分布式协调系统统一对中间服务器进行协调。中间服务器有多个,由Zookeeper在其中选出一个作为leader中间服务器,由该leader中间服务器监控其他中间服务器,当发现有中间服务器宕机时,将该中间服务器负责管理的任务群组分配给其他在线的中间服务器接管,与此同时,所有后台中间服务器也监听所述leader中间服务器节点,若发现所述leader中间服务器宕机,则触发集群重新选举leader中间服务器。通过上述这种监控方式,可以有效地保证在某个中间服务器宕机时,客户端服务器可以正常进行任务的执行,保证了系统的高可用性。
进一步参照图6所示,中间服务器根节点下还设置有config节点,所述config节点是中间服务器的配置。所述leader中间服务器监听此节点,当配置有变更时,则通过leader中间服务器执行变更。
任务(Job)群组根节点下有多个任务群组,任务群组中设置有migrate节点,所述migrate节点由leader中间服务器设定,用于标注任务群组的迁移状态,所有后台中间服务器实时监听任务群组下的migrate节点,当发现此migrate节点的IP地址和自身的相同时,则接管该任务群组。当迁移完成后,删除该migrate节点。需要注意的是,为避免中间服务器多次重启后造成任务群组过于集中,任务群组的迁移也可在后台手动执行。
任务群组下还设置有owner节点,所述owner节点标注任务群组由哪台中间服务器管理,所述leader中间服务器监听所述owner节点,管理该任务群组的中间服务器掉线后,所述leader中间服务器重新分配一个在线的中间服务器接管该任务群组并设置migrate节点。
任务群组下还设置有修改(modified)节点,所述modified节点用于标注该任务群组的任务配置信息被修改。所述owner节点监控所述modified节点,当发现任务配置信息有变更时,通知客户端服务器。modified节点的设置,能够在不重启中间服务器的情况下,动态的修改任务群组的任务配置信息。
参照图7所示,图7是本发明实施例提供的分布式任务调度方法及系统的中间服务器与客户端服务器、分布式协调系统交互的流程图。中间服务器启动后先初始化,并加载任务信息和客户端服务器信息,与分布式协调系统Zookeeper建立链接,监听leader中间服务器,若发现leader中间服务器宕机,则触发集群leader选举,并尝试成为leader中间服务器。若成为leader中间服务器,则监控集群中其他中间服务器节点,并监听migrate节点,若是尝试成为leader中间服务器失败,则直接监听migrate节点。若leader中间服务器正常,则直接监听migrate节点。若发现所述migrate节点的IP地址和自身的相同,则接管该任务群组,并监听modified节点,等待客户端服务器接入,否则,直接等待客户端服务器接入。客户端服务器接入后,中间服务器判断客户端服务器所属的任务群组是否是本服务器接管的群组,若是,则之间在数据库中查询该任务群组的配置信息,若不是,则判断客户端服务器所属的任务群组是否有中间服务器接管,若没有,则发起RPC(即远程过程调用协议)调用leader中间服务器的接口,由leader中间服务器分配中间服务器接管该任务群组,并注册任务群组下的owner节点。其中,若是leader中间服务器返回的中间服务器的地址等于自身的地址,则接管该任务群组,并在数据库中查询该任务群组的配置信息;若是leader中间服务器返回的中间服务器的地址不等于自身的地址,则给将正确的中间服务器的地址返回给客户端服务器。若是在数据库中查询到该任务群组已有配置,则直接拉取数据库中的配置,否则,插入任务的配置,根据根据任务(Job)配置信息,将一个任务拆分为多个独立的子任务,并启动内存中的任务调度,开启心跳检测,并等待客户端服务器接入后分配给子任务。
本发明实施例提供的技术方案带来的有益效果是:
1、本发明提供的分布式任务调度方法及系统,通过将任务调度引擎集成在中间服务器中,方便管理任务的依赖关系,并且可以将不同的普通任务编排组合成一个复杂的任务,由中间服务器根据编排的顺序和依赖关系依次触发所有的子任务;
2、本发明提供的分布式任务调度方法及系统,中间服务器根据任务配置的分片项,将一个任务拆分为多个独立的子任务,并由中间服务器并行调用客户端服务器执行各自分配到的任务项,实现并行调度;
3、本发明提供的分布式任务调度方法及系统,通过不同的中间服务器加载不同应用的任务调度引擎,中间服务器宕机后自动感知,任务调度引擎自动飘移到存活的服务器中,提高了高可用性;
4、本发明提供的分布式任务调度方法及系统,将任务拆分为多个子任务项后,各个客户端服务器分别执行各自分配到的任务项,进一步的,一旦有新的客户端服务器加入集群,或现有客户端服务器下线,中间服务器将在保留本次任务执行不变的情况下,下次任务开始前触发子任务重分配。
需要说明的是:上述实施例提供的分布式任务调度系统在分布式任务调度业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式任务调度系统与分布式任务调度方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种分布式任务调度方法,其特征在于,所述方法包括如下步骤:
S1:客户端服务器启动后自动扫描所有任务,与中间服务器建立链接,将自身信息及任务信息上报给中间服务器;
S2:所述中间服务器获取客户端服务器信息和任务信息,并根据任务配置信息,将一个任务拆分为多个独立的子任务后分配给各客户端服务器;
S3:所述客户端服务器执行所述中间服务器分配的子任务;
其中,所述步骤S2还包括:
通过分布式协调系统在所述中间服务其中选举出一个leader中间服务器;
所述中间服务器中还设置有config节点,所述config节点是中间服务器的配置,所述leader中间服务器监听所述config节点,当配置有变更时,则通过所述leader中间服务器执行变更。
2.根据权利要求1所述的分布式任务调度方法,其特征在于,所述步骤S2还包括:
所述中间服务器获取任务信息后,根据任务间的前后关系,对多个任务进行流程编排,形成一个有向无环图类型的任务流程。
3.根据权利要求2所述的分布式任务调度方法,其特征在于,所述步骤S3还包括:
在所述客户端服务器执行所述中间服务器分配的子任务前,所述中间服务器判断所述子任务对应的任务是否是流程任务,若是,则生成相应的有向无环执行图,按照所述有向无环执行图顺序依次向相应客户端服务器发送子任务执行请求,若不是,则直接向相应客户端服务器发送子任务执行请求。
4.根据权利要求3所述的分布式任务调度方法,其特征在于,所述向相应客户端服务器发送子任务执行请求前,还包括:
先判断当前子任务在哪台中间服务器上,然后向该子任务所在的中间服务器发送子任务执行请求,再将子任务执行请求转发到相应的客户端服务器。
5.根据权利要求2至4任意一项所述的分布式任务调度方法,其特征在于,所述步骤S3还包括:
所述客户端服务器执行所述中间服务器分配的子任务后,所述客户端服务器将子任务执行状态上报给当前中间服务器,若子任务的调用方是当前中间服务器,则所述当前中间服务器接收到子任务执行状态后,根据任务配置以及有向无环执行图状态确定流程任务状态、以及是否执行下一层子任务,若子任务的调用方不是当前中间服务器,则所述当前中间服务器将子任务执行状态路由到目标中间服务器,所述目标中间服务器接收到子任务执行状态后,根据任务配置以及有向无环执行图状态确定流程任务状态、以及是否执行下一层子任务。
6.根据权利要求1至4任意一项所述的分布式任务调度方法,其特征在于,所述步骤S2还包括:
所述中间服务器获取客户端服务器信息和任务信息后,所述中间服务器将具有相同任务信息的客户端服务器划分为一个任务群组进行管理。
7.根据权利要求6所述的分布式任务调度方法,其特征在于,所述步骤S2还包括:
所述中间服务器监听所述任务群组中的客户端服务器,当有新的客户端服务器上线,或现有客户端服务器下线,所述中间服务器将保留本次任务执行不变,并在下次任务开始前触发子任务重新分配。
8.根据权利要求1至4任意一项所述的分布式任务调度方法,其特征在于,所述步骤S2还包括:
所述leader中间服务器监控集群中其他中间服务器节点,若发现有中间服务器宕机,则为所述宕机的中间服务器管理的任务群组重新分配一个在线的中间服务器进行管理,并在所述任务群组中设置migrate节点,所述migrate节点用于标注任务群组的迁移状态,当迁移完成后,删除该migrate节点。
9.根据权利要求8所述的分布式任务调度方法,其特征在于,所述步骤S2还包括:
所述中间服务器实时监控任务群组下的migrate节点,若发现所述migrate节点的IP地址和自身的相同,则接管该任务群组,并注册任务群组下的owner节点。
10.根据权利要求9所述的分布式任务调度方法,其特征在于,所述步骤S2还包括:
所述leader中间服务器监听所述owner节点,所述owner节点标注任务群组由哪台中间服务器管理,管理该任务群组的中间服务器掉线后,所述leader中间服务器重新分配一个在线的中间服务器接管该任务群组并设置migrate节点。
11.根据权利要求8所述的分布式任务调度方法,其特征在于,所述步骤S2还包括:
所有后台中间服务器监听所述leader中间服务器节点,若发现所述leader中间服务器宕机,则触发集群leader选举。
12.一种执行权利要求1至11任意一项所述分布式任务调度方法的分布式任务调度系统,其特征在于,所述系统包括:
客户端服务器,所述客户端服务器有多个,用于扫描任务,将任务信息及配置上报给中间服务器,并执行被分配到的子任务;
中间服务器,所述中间服务器有多个,且所述中间服务器之间相互连接,用于管理所述客户端服务器、对多个任务进行流程编排以及将一个任务拆分为多个独立的子任务后分配给各客户端服务器、转发任务的依赖调用;
分布式协调系统,与所述中间服务器连接,用于统一协调所述中间服务器;
通过分布式协调系统在所述中间服务其中选举出一个leader中间服务器;
所述中间服务器中还设置有config节点,所述config节点是中间服务器的配置,所述leader中间服务器监听所述config节点,当配置有变更时,则通过所述leader中间服务器执行变更。
13.根据权利要求12所述的分布式任务调度系统,其特征在于,所述系统还包括:
后管系统,所述后管系统与所述分布式协调系统连接,用于动态配置、修改、迁移和/或维护任务,以及查看任务的历史执行情况。
14.根据权利要求13所述的分布式任务调度系统,其特征在于,所述系统还包括:
数据库,用于保存任务配置及历史执行情况。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810774275.9A CN108958920B (zh) | 2018-07-13 | 2018-07-13 | 一种分布式任务调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810774275.9A CN108958920B (zh) | 2018-07-13 | 2018-07-13 | 一种分布式任务调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108958920A CN108958920A (zh) | 2018-12-07 |
CN108958920B true CN108958920B (zh) | 2021-04-06 |
Family
ID=64481662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810774275.9A Active CN108958920B (zh) | 2018-07-13 | 2018-07-13 | 一种分布式任务调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108958920B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684229B (zh) * | 2019-01-08 | 2022-03-15 | 杭州雅拓信息技术有限公司 | 有向无环图的链式依赖分析方法及系统 |
CN109828722B (zh) * | 2019-01-29 | 2022-01-28 | 中国人民大学 | 异构分布式键值存储系统Raft组数据自适应分布方法 |
CN111510468B (zh) * | 2019-01-30 | 2023-05-02 | 杭州海康威视数字技术股份有限公司 | 计算任务的调度方法、装置、服务器及计算系统 |
CN109660633A (zh) * | 2019-01-30 | 2019-04-19 | 北京云端智度科技有限公司 | 一种基于分布式调度机制的集群体系 |
CN109919749A (zh) * | 2019-03-29 | 2019-06-21 | 北京思特奇信息技术股份有限公司 | 一种对账方法、系统、存储介质及计算机设备 |
CN110113387A (zh) * | 2019-04-17 | 2019-08-09 | 深圳前海微众银行股份有限公司 | 一种基于分布式批量处理系统的处理方法、装置及系统 |
CN110377407A (zh) * | 2019-06-19 | 2019-10-25 | 北京威努特技术有限公司 | 一种扫描任务调度方法、装置、存储介质及设备 |
CN110287052B (zh) * | 2019-06-25 | 2022-01-28 | 深圳前海微众银行股份有限公司 | 一种异常任务的根因任务确定方法及装置 |
CN110427259A (zh) * | 2019-08-05 | 2019-11-08 | 北京奇艺世纪科技有限公司 | 一种任务处理方法及装置 |
CN110673933A (zh) * | 2019-08-15 | 2020-01-10 | 平安普惠企业管理有限公司 | 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质 |
CN110519381B (zh) * | 2019-08-29 | 2023-08-25 | 深圳前海微众银行股份有限公司 | 分布式任务的处理方法、装置、终端设备及存储介质 |
CN110532065A (zh) * | 2019-09-02 | 2019-12-03 | 广州市品高软件股份有限公司 | 一种裸金属服务器的部署方法及装置 |
CN110798339A (zh) * | 2019-10-09 | 2020-02-14 | 国电南瑞科技股份有限公司 | 一种基于分布式任务调度框架的任务容灾方法 |
CN111290854B (zh) * | 2020-01-20 | 2024-03-15 | 腾讯云计算(北京)有限责任公司 | 任务管理方法、装置、系统、计算机存储介质及电子设备 |
CN111459639B (zh) * | 2020-04-03 | 2023-10-20 | 杭州小影创新科技股份有限公司 | 一种支持全球多机房部署的分布式任务管理平台及方法 |
CN112036677A (zh) * | 2020-06-08 | 2020-12-04 | 宁波志成信息技术有限公司 | 一种多级任务调度方法、装置和存储介质 |
CN111752924A (zh) * | 2020-06-28 | 2020-10-09 | 平安科技(深圳)有限公司 | 一种数据库迁移方法、系统及存储介质 |
CN112068939A (zh) * | 2020-08-24 | 2020-12-11 | 浙江知水信息技术有限公司 | 一种多预警服务调度的方法及系统 |
CN113741872B (zh) * | 2021-09-03 | 2024-04-23 | 上海新炬网络信息技术股份有限公司 | 基于作业调度的软件应用自动化发布方法 |
CN113986516A (zh) * | 2021-12-27 | 2022-01-28 | 广州朗国电子科技股份有限公司 | 基于鸿蒙系统的分布式任务调度系统 |
CN116302396B (zh) * | 2023-02-13 | 2023-09-01 | 上海浦东发展银行股份有限公司 | 一种基于有向无环的分布式任务调度方法 |
CN116723225B (zh) * | 2023-06-16 | 2024-05-17 | 广州银汉科技有限公司 | 游戏任务的自动分配方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536809A (zh) * | 2014-11-26 | 2015-04-22 | 上海瀚之友信息技术服务有限公司 | 一种基于客户端、服务器系统的分布式定时任务调度系统 |
CN104834722A (zh) * | 2015-05-12 | 2015-08-12 | 网宿科技股份有限公司 | 基于cdn的内容管理系统 |
CN105338086A (zh) * | 2015-11-04 | 2016-02-17 | 浪潮软件股份有限公司 | 一种分布式的消息转发方法 |
CN106371918A (zh) * | 2016-08-23 | 2017-02-01 | 北京云纵信息技术有限公司 | 任务集群调度管理方法及装置 |
CN106993019A (zh) * | 2016-11-29 | 2017-07-28 | 上海壹账通金融科技有限公司 | 分布式任务调度方法和系统 |
CN107016479A (zh) * | 2016-01-28 | 2017-08-04 | 五八同城信息技术有限公司 | 任务调度管理方法、装置及系统 |
CN107748696A (zh) * | 2017-09-20 | 2018-03-02 | 上海壹账通金融科技有限公司 | 一种任务调度的方法及终端设备 |
CN108268319A (zh) * | 2016-12-31 | 2018-07-10 | 中国移动通信集团河北有限公司 | 任务调度方法、装置及系统 |
-
2018
- 2018-07-13 CN CN201810774275.9A patent/CN108958920B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536809A (zh) * | 2014-11-26 | 2015-04-22 | 上海瀚之友信息技术服务有限公司 | 一种基于客户端、服务器系统的分布式定时任务调度系统 |
CN104834722A (zh) * | 2015-05-12 | 2015-08-12 | 网宿科技股份有限公司 | 基于cdn的内容管理系统 |
CN105338086A (zh) * | 2015-11-04 | 2016-02-17 | 浪潮软件股份有限公司 | 一种分布式的消息转发方法 |
CN107016479A (zh) * | 2016-01-28 | 2017-08-04 | 五八同城信息技术有限公司 | 任务调度管理方法、装置及系统 |
CN106371918A (zh) * | 2016-08-23 | 2017-02-01 | 北京云纵信息技术有限公司 | 任务集群调度管理方法及装置 |
CN106993019A (zh) * | 2016-11-29 | 2017-07-28 | 上海壹账通金融科技有限公司 | 分布式任务调度方法和系统 |
CN108268319A (zh) * | 2016-12-31 | 2018-07-10 | 中国移动通信集团河北有限公司 | 任务调度方法、装置及系统 |
CN107748696A (zh) * | 2017-09-20 | 2018-03-02 | 上海壹账通金融科技有限公司 | 一种任务调度的方法及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108958920A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108958920B (zh) | 一种分布式任务调度方法及系统 | |
CN108737270B (zh) | 一种服务器集群的资源管理方法和装置 | |
CN108132830B (zh) | 一种任务调度方法、装置及系统 | |
CN106993019B (zh) | 分布式任务调度方法和系统 | |
WO2019090523A1 (zh) | 一种无服务器架构下业务部署的方法和函数管理平台 | |
US5414845A (en) | Network-based computer system with improved network scheduling system | |
KR100327651B1 (ko) | 멀티시스템 클러스터 내의 서버들의 수를 제어하기 위한 방법 및 장치 | |
US8656387B2 (en) | Method and system for workload distributing and processing across a network of replicated virtual machines | |
US20160275123A1 (en) | Pipeline execution of multiple map-reduce jobs | |
US20160335352A1 (en) | Query dispatch and execution architecture | |
US20080030764A1 (en) | Server parallel aggregation | |
CN110383764B (zh) | 无服务器系统中使用历史数据处理事件的系统和方法 | |
US9852220B1 (en) | Distributed workflow management system | |
CN110888719A (zh) | 一种基于web服务的分布式任务调度系统及方法 | |
WO2019210580A1 (zh) | 访问请求处理方法、装置、计算机设备和存储介质 | |
CN114070822B (zh) | 一种Kubernetes Overlay IP地址管理方法 | |
US20160234129A1 (en) | Communication system, queue management server, and communication method | |
US10721260B1 (en) | Distributed execution of a network vulnerability scan | |
US20200310828A1 (en) | Method, function manager and arrangement for handling function calls | |
CN112379992A (zh) | 基于角色的多智能体任务协同消息传递及异常处理方法 | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
US8909666B2 (en) | Data query system and constructing method thereof and corresponding data query method | |
CN113127444B (zh) | 一种数据迁移方法、装置、服务器及存储介质 | |
CN112948077A (zh) | 批处理方法、装置、设备及存储介质 | |
US6990608B2 (en) | Method for handling node failures and reloads in a fault tolerant clustered database supporting transaction registration and fault-in logic |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |