分布式任务调度方法及其系统、存储介质、电子设备与流程

文档序号:14950543发布日期:2018-07-17 22:27阅读:119来源:国知局

本发明涉及一种分布式任务调度方法及其系统、存储介质、电子设备。



背景技术:

当前,在很多大型互联网企业的任务调度系统中越来越多的地方需要使用定时触发任务的功能,譬如:定时刷新缓存,定时迁移数据等。由于之前的任务处理的作业量不大,任务处理的时间短,因此,可以采用分布式锁或active-standby选举的方式来实现任务调度系统中只有单个服务器处理任务。但是,随着任务的越来越多,数据越来越大,现有任务调度系统的任务处理量也日渐增加,任务处理的时间也越来越长,无法满足数据处理的需求。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种分布式任务调度方法及其系统、存储介质、电子设备,可以降低任务的处理时长,提高任务的效率和成功率,并且还能够实时监控任务,管理任务的调度。提高系统中服务器的利用率,保证服务器的负载均衡。

根据本发明的一个方面提供一种分布式任务调度方法,所述分布式任务调度方法用于分布式任务调度系统的任务调度,所述分布式任务调度系统包括至少一任务生产者、至少一任务消费者、注册中心以及管理中心,所述分布式任务调度方法包括如下步骤:s10:所述任务生产者和所述任务消费者分别向所述注册中心进行注册;s20:所述注册中心将所有所述任务生产者和所述任务消费者的注册信息发送至所述管理中心,所述管理中心缓存所述任务生产者和所述任务消费者的信息;s30:由一所述任务生产者生成任务列表,并将所述任务列表推送至所述管理中心;s40:所述管理中心接收并落地所述任务列表;s50:所述管理中心设置任务分配规则,并实时根据所述任务分配规则分配各项任务;s60:所述任务消费者接收所述管理中心分配的任务;s70:所述任务消费者处理任务后,反馈任务处理的结果至所述管理中心。

优选地,多个所述任务生产者之间才用主—备方式进行切换,同一时刻仅有一个所述任务生产者在工作。

优选地,所述步骤s30还包括如下步骤:s301:所述任务生产者生成至少一待处理任务;s302:将所述待处理任务拆分为多个子任务,多个所述子任务形成一任务列表;s303:将所述任务列表推送至所述管理中心;s304:向所述注册中心发出取消注册的消息。

优选地,所述注册中心接收所述任务生产者或所述任务消费者发出的取消注册的消息后,将该取消注册的消息转发至所述管理中心,所述管理中心接收到该取消注册的消息后等待一秒后,选择另一个所述任务生产者接收任务列表或选择另一个所述任务消费者分配任务。

优选地,所述管理中心包括rest接口,所述管理中心通过所述rest接口接收所述任务生产者发出的任务列表、接收所述任务生产者反馈的任务处理的结果,并且发出启动或者停止的指令。

优选地,在所述步骤s70中,任务消费者通过ack控制字符反馈任务处理的结果发送至所述注册中心,并且通过所述注册中心修改所述管理中心的当前任务状态信息。

优选地,所述注册中心为zookeeper。

根据本发明的另一个方面,还提供一种分布式任务调度系统,所述分布式任务调度系统包括至少一任务生产者、至少一任务消费者、注册中心以及管理中心;其中,所述任务生产者用于生成任务并拆分任务后形成任务列表,并将所述任务列表推送至所述管理中心;所述任务消费者用于接收所述管理中心分配的任务,并且处理任务后,反馈任务处理的结果至所述管理中心;所述注册中心用于将所有所述任务生产者和所述任务消费者的注册信息发送至所述管理中心、对所述任务生产者和所述任务消费者进行注册;所述管理中心用于缓存所述任务生产者和所述任务消费者的信息、接收并落地所述任务列表、设置任务分配规则、实时根据所述任务分配规则分配各项任务、启动或停止更改作业的调度周期,监控任务的进度。

根据本发明的又一个方面,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的分布式任务调度方法的步骤。

根据本发明的又一个方面,还提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述的分布式任务调度方法的步骤。

相比于现有技术,本发明实施例提供的分布式任务调度方法以及系统、存储介质、电子设备中分布式任务调度方法中通过任务生产者和任务消费者分别向注册中心进行注册,由一任务生产者生成任务列表,并将任务列表推送至管理中心;管理中心接收并落地任务列表后设置任务分配规则,并实时根据任务分配规则分配各项任务;任务消费者接收管理中心分配的任务并处理后,反馈任务处理的结果至管理中心的方式。进而,至少具有如下有益效果:

1、降低任务的处理时长;

2、通过对任务的拆分,更好的利用分布式任务调度系统的所有服务器的处理能力,保证服务器的负载均衡,提高任务的效率和成功率;

3、可以通过管理中心,更好的监控和管理任务的调度;

4、可以使用错误重试,故障转移等方式提高任务处理的稳定率。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的一个实施例的分布式任务调度方法的流程图;

图2为本发明的一个实施例的分布式任务调度方法中一个任务生产者生成任务列表并推送的各个步骤的流程图;

图3为本发明的一个实施例的分布式任务调度系统的模块构成示意图;

图4为本发明公开示例性实施例中一种计算机可读存储介质示意图;以及

图5为本发明公开示例性实施例中一种电子设备示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本发明将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。

所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员应意识到,没有特定细节中的一个或更多,或者采用其它的方法、组元、材料等,也可以实践本发明的技术方案。在某些情况下,不详细示出或描述公知结构、材料或者操作以避免模糊本发明。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

依据本发明的主旨构思,本发明的一种分布式任务调度方法,用于分布式任务调度系统的任务调度,所述分布式任务调度系统包括至少一任务生产者、至少一任务消费者、注册中心以及管理中心,所述分布式任务调度方法包括如下步骤:所述任务生产者和所述任务消费者分别向所述注册中心进行注册;所述注册中心将所有所述任务生产者和所述任务消费者的注册信息发送至所述管理中心,所述管理中心缓存所述任务生产者和所述任务消费者的信息;由一所述任务生产者生成任务列表,并将所述任务列表推送至所述管理中心;所述管理中心接收并落地所述任务列表;所述管理中心设置任务分配规则,并实时根据所述任务分配规则分配各项任务;所述任务消费者接收所述管理中心分配的任务;所述任务消费者处理任务后,反馈任务处理的结果至所述管理中心。

下面结合附图和实施例对本发明的技术内容进行进一步地说明。

请参见图1,其示出了本发明的一个实施例的分布式任务调度方法的流程图。具体来说,本发明的分布式任务调度方法主要用于分布式任务调度系统的任务调度,其中,所述分布式任务调度系统包括至少一任务生产者、至少一任务消费者、注册中心以及管理中心。具体来说,如图1所示,在本发明的实施例中,该分布式任务调度方法包括如下步骤:

步骤s10:所述任务生产者和所述任务消费者分别向所述注册中心进行注册。在本发明实施例中,任务生产者作为任务的提交者和拆分者,合理的拆分任务(拆分任务是指将每一个任务拆分为多个子任务),从而更有利任务消费者集群的负载均衡。任务消费者作为处理作业的子任务。所述注册中心为zookeeper或者其他数据库。其中,上述的任务可以是定时刷新缓存数据,定时迁移数据等。具体来说,任务生产者在启动的时候(即递交任务和拆分任务的时候)需要向注册中心进行注册。类似地,任务消费者在启动的时候(即接收和处理任务的时候)也需要向注册中心进行注册。

步骤s20:所述注册中心将所有所述任务生产者和所述任务消费者的注册信息发送至所述管理中心,所述管理中心缓存所述任务生产者和所述任务消费者的信息。

步骤s30:由一所述任务生产者生成任务列表,并将所述任务列表推送至所述管理中心。在本发明实施例中,多个所述任务生产者之间才用主—备方式进行切换,以此确保同一时刻仅有一个所述任务生产者在工作。每个任务生产者通过注册中心连接管理中心,每次连接管理中心时,任务生产者均向注册中心进行注册,并且在离线时向注册中心发出取消注册的消息。具体来说,请参见图2,其示出了本发明的一个实施例的分布式任务调度方法中一个任务生产者生成任务列表并推送的各个步骤的流程图。如图2所示,所述步骤s30还包括如下步骤:

步骤s301:所述任务生产者生成至少一待处理任务。其中,任务生产者可以使用quartz表达式来生成任务(触发作业)。

步骤s302:将所述待处理任务拆分为多个子任务,多个所述子任务形成一任务列表。具体来说,在将所述待处理任务拆分为多个子任务(即生成任务分片)的过程中,需要合理拆分,若子任务太小会影响集群的网络io。

步骤s303:将所述任务列表推送至所述管理中心。其中,任务生产者把子任务形成的任务列表通过rest方式提交到管理中心。具体来说,管理中心包括rest接口,管理中心通过rest接口接收任务生产者发出的任务列表。

步骤s304:向所述注册中心发出取消注册的消息。

步骤s40:所述管理中心接收并落地所述任务列表。具体来说,管理中心接收并落地任务列表,即保存该任务列表中的子任务,进而,将任务分配给任务消费者,并且,进一步接收其他任务生产者发送的任务。在本发明的优选实施例中,注册中心接收所述任务生产者发出的取消注册的消息后,将该取消注册的消息转发至管理中心,管理中心接收到该取消注册的消息后等待一秒后,选择另一个任务生产者接收任务列表,以此防止网络波动等问题导致任务生产者假离线。

步骤s50:所述管理中心设置任务分配规则,并实时根据所述任务分配规则分配各项任务。具体来说,所述管理中心主要用于接收任务生产者发送的任务、设置任务分配规则、实时根据任务分配规则动态地分配各项任务、启动和停止任务、更改任务的调度周期,监控任务的进度等,还可以缓存所有的任务生产者和任务消费者信息,并感知到任务生产者和任务消费者上下线状态。进一步地,管理中心还可以提供后台管理界面,管理和查看任务的状态和进程。

更具体地,在此步骤中,该任务分配规则可以使所有分布式任务调度系统的所有在线服务器全部执行、仅有一台服务器执行或者指定部分服务器执行等方式中的一种。其中,任务分配规则是可以以简单的符号表达式或者正则表达式等方式实现。该任务分配规则的原则主要是根据所有服务器的处理能力来分配,若某一服务器的处理越快,则分配的任务越多。

步骤s60:所述任务消费者接收所述管理中心分配的任务。具体来说,与任务生产者类似地,任务消费者也通过注册中心连接管理中心,并且每次连接管理中心时,任务消费者均向注册中心进行注册,并且在离线时向注册中心发出取消注册的消息。进而,注册中心接收任务消费者发出的取消注册的消息后,将该取消注册的消息转发至管理中心。优选地,管理中心接收到该取消注册的消息后等待一秒后,选择选择另一个任务消费者分配任务,以此防止网络波动等问题导致任务消费者假离线。

步骤s70:所述任务消费者处理任务后,反馈任务处理的结果至所述管理中心。具体来说,在本发明实施例中,任务消费者可以通过ack控制字符反馈任务处理的结果发送至注册中心,并且通过注册中心修改管理中心的当前任务状态信息(任务节点)。进一步的,如上所述,在本发明的优选实施例中,管理中心包括rest接口。管理中心通过rest接口不仅可以实现上述接收任务生产者发出的任务列表的作用,还起到接收任务生产者反馈的任务处理的结果、查询任务进度、发出启动或者停止的指令等作用,在此不予赘述。任务消费者可以以rate反馈方式通过异步rest接口提交到管理中心,并采用延迟发送,其中,对于部分消息丢失可以忽略,不需要进行补发。

在上述图1所示的实施例中,本发明的分布式任务调度方法中通过任务生产者和任务消费者分别向注册中心进行注册,由一任务生产者生成任务列表,并将任务列表推送至管理中心;管理中心接收并落地任务列表后设置任务分配规则,并实时根据任务分配规则分配各项任务;任务消费者接收管理中心分配的任务并处理后,反馈任务处理的结果至管理中心的方式。进而,至少具有如下有益效果:

1、降低任务的处理时长;

2、通过对任务的拆分,更好的利用分布式任务调度系统的所有服务器的处理能力,保证服务器的负载均衡,提高任务的效率和成功率;

3、可以通过管理中心,更好的监控和管理任务的调度;

4、可以使用错误重试,故障转移等方式提高任务处理的稳定率。

进一步地,本发明还提供一种分布式任务调度系统,用于实现上述的分布式任务调度方法。具体来说,请参见图3,其示出了发明的一个实施例的分布式任务调度系统的模块构成示意图。所述分布式任务调度系统至少包括一任务生产者2、至少一任务消费者3、注册中心4以及管理中心1。

具体来说,任务生产者2用于生成任务、拆分任务后形成任务列表,并将任务列表推送至管理中心1。

任务消费者3用于接收管理中心1分配的任务,并且处理任务后,反馈任务处理的结果至管理中心1。

注册中心4用于将所有任务生产者2和任务消费者3的注册信息发送至管理中心1、对任务生产者2和任务消费者3进行注册。

管理中心1用于缓存任务生产者2和任务消费者3的信息、接收并落地任务列表、设置任务分配规则、实时根据任务分配规则分配各项任务、启动或停止更改作业的调度周期,监控任务的进度。

在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被例如处理器执行时可以实现上述任意一个实施例中所述分布式任务调度方法中控制系统和话务系统执行的各个步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述图1所示的分布式任务调度方法部分中描述的根据本发明各种示例性实施方式的步骤。

参考图4所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品300,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

在本公开的示例性实施例中,还提供一种电子设备,该电子设备可以包括处理器,以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一个实施例中所述分布式任务调度方法中控制系统和话务系统执行的各个步骤。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图5来描述根据本发明的这种实施方式的电子设备600。图5显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图5所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述分布式任务调度方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示的由控制系统和话务系统完成的各个步骤。

所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(rom)6203。

所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述分布式任务调度方法。

综上所述,本发明实施例提供的分布式任务调度方法以及系统、存储介质、电子设备中通过任务生产者和任务消费者分别向注册中心进行注册,由一任务生产者生成任务列表,并将任务列表推送至管理中心;管理中心接收并落地任务列表后设置任务分配规则,并实时根据任务分配规则分配各项任务;任务消费者接收管理中心分配的任务并处理后,反馈任务处理的结果至管理中心的方式。进而,至少具有如下有益效果:

1、降低任务的处理时长;

2、通过对任务的拆分,更好的利用分布式任务调度系统的所有服务器的处理能力,保证服务器的负载均衡,提高任务的效率和成功率;

3、可以通过管理中心,更好的监控和管理任务的调度;

4、可以使用错误重试,故障转移等方式提高任务处理的稳定率。

虽然本发明已以可选实施例揭示如上,然而其并非用以限定本发明。本发明所属技术领域的技术人员,在不脱离本发明的精神和范围内,当可作各种的更动与修改。因此,本发明的保护范围当视权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1