一种分布式任务调度系统及方法与流程

文档序号:12786188阅读:210来源:国知局
一种分布式任务调度系统及方法与流程

本申请涉及计算机计算领域,具体涉及一种分布式任务调度系统及方法。



背景技术:

云计算技术经过多年的发展已经日渐成熟,虚拟化、云网络以及云安全等技术在不断发展。云计算给社会带来的IT(Internet Technology,互联网技术)服务按需使用、IT资源高效利用、绿色节能等巨大的经济效益和社会效益,不仅使美国、欧盟、日本等发达国家的政府将其列入国家发展战略,甚至亚非拉等广大发展中国家也已经非常重视,各国国家级数据中心已经在雨后春笋般地建设。云计算大规模应用的技术条件和环境已经具备,云数据中心的建设已经成为业界不可扭转的趋势。

在现有技术中,单点的数据中心对提交的任务进行调度执行时会面临大任务、高并发的挑战,随着业务的扩张和功能的累积,对任务处理的要求越来越高,既要保证高效性,又要保证安全性、准确性的需求下,现有的数据中心任务调度方式无法高效处理任务的调度执行,很难适应快速变更的需求。



技术实现要素:

有鉴于此,本申请提供一种分布式任务调度系统及方法,以解决现有技术中存在的无法高效处理任务调度执行的技术问题。

为解决上述问题,本申请提供的技术方案如下:

一种分布式任务调度系统,所述系统包括:

任务提交集群、任务调度集群以及任务执行集群;所述任务提交集群包括多个任务客户端节点,所述任务调度集群包括多个任务调度节点,所述任务执行集群包括多个任务执行节点;

所述任务提交集群中的所述任务客户端节点用于向所述任务调度集群提交任务;

所述任务调度集群中的所述任务调度节点用于接收所述任务,生成所述任务的任务分配信息,按照所述任务分配信息将所述任务发送给所述任务执行集群;

所述任务执行集群中的所述任务执行节点用于执行所述任务并将执行结果返回给提交任务的任务客户端节点。

相应的,所述任务调度节点包括主任务调度节点以及从任务调度节点,所述任务执行节点包括主任务执行节点以及从任务执行节点;

所述主任务调度节点用于从所述任务客户端节点接收所述任务,并将所述任务分配给任意一个从任务调度节点;

所述从任务调度节点用于在接收到所述任务后生成所述任务的任务分配信息,按照所述任务分配信息将所述任务发送给所述任务执行集群;

所述主任务执行节点用于接收所述任务,并将所述任务分配给从一个或多个任务执行节点;

所述从任务执行节点用于在接收到所述任务后执行所述任务并将执行结果返回给提交任务的任务客户端节点。

相应的,所述系统还包括:

分布式系统的可靠协调系统zookeeper节点,所述zookeeper节点分别与所述任务提交集群、所述任务调度集群以及任务执行集群相连;

所述zookeeper节点用于保持与各个所述任务客户端节点、各个所述任务调度节点以及各个所述任务执行节点的连接,保存各个所述任务客户端节点、各个所述任务调度节点以及各个所述任务执行节点的连接信息;根据各个所述任务调度节点的连接信息在所述任务调度节点中确定所述主任务调度节点以及所述从任务调度节点;根据各个所述任务执行节点的连接信息在所述任务执行节点中确定所述主任务执行节点以及所述从任务执行节点。

相应的,所述系统还包括:

公共服务模块,所述任务提交集群通过所述公共服务模块与所述任务调度集群相连,所述任务调度集群通过所述公共服务模块与所述任务执行集群相连,所述任务执行集群通过所述公共服务模块与所述任务提交集群相连。

相应的,所述公共服务模块包括:

消息中间件、分布式数据库以及分布式缓存;

所述分布式数据库用于保存所述任务的任务分配信息、所述任务的执行日志以及所述执行结果;

所述消息中间件用于接收所述任务客户端节点向所述任务调度集群提交的任务,将所述任务发送到所述任务调度集群;接收所述任务调度节点向所述任务执行集群发送的所述任务,将所述任务发送到所述任务调度集群;接收所述任务执行节点向所述提交任务的任务客户端节点发送的执行结果,将所述执行结果发送到所述提交任务的任务客户端节点;

所述分布式缓存用于当所述执行结果需要缓存时缓存所述执行结果。

一种分布式任务调度方法,所述方法应用于分布式任务调度系统,所述系统包括:任务提交集群、任务调度集群以及任务执行集群;所述任务提交集群包括多个任务客户端节点,所述任务调度集群包括多个任务调度节点,所述任务执行集群包括多个任务执行节点;所述方法包括:

所述任务提交集群中的所述任务客户端节点向所述任务调度集群提交任务;

所述任务调度集群中的所述任务调度节点接收所述任务,生成所述任务的任务分配信息,按照所述任务分配信息将所述任务发送给所述任务执行集群;

所述任务执行集群中的所述任务执行节点执行所述任务并将执行结果返回给提交任务的任务客户端节点。

相应的,所述任务调度节点包括主任务调度节点以及从任务调度节点,所述任务执行节点包括主任务执行节点以及从任务执行节点;

所述任务调度集群中的所述任务调度节点接收所述任务,生成所述任务的任务分配信息,按照所述任务分配信息将所述任务发送给所述任务执行集群,包括:

所述主任务调度节点从所述任务客户端节点接收所述任务,并将所述任务分配给任意一个从任务调度节点;

所述从任务调度节点在接收到所述任务后生成所述任务的任务分配信息,按照所述任务分配信息将所述任务发送给所述任务执行集群;

所述任务执行集群中的所述任务执行节点执行所述任务并将执行结果返回给提交任务的任务客户端节点,包括:

所述主任务执行节点接收所述任务,并将所述任务分配给从一个或多个任务执行节点;

所述从任务执行节点在接收到所述任务后执行所述任务并将执行结果返回给提交任务的任务客户端节点。

相应的,分布式系统的可靠协调系统zookeeper节点,所述zookeeper节点分别与所述任务提交集群、所述任务调度集群以及任务执行集群相连;所述方法还包括:

各个所述任务客户端节点、各个所述任务调度节点以及各个所述任务执行节点与所述zookeeper节点保持连接;

所述zookeeper节点保存各个所述任务客户端节点、各个所述任务调度节点以及各个所述任务执行节点的连接信息;

所述zookeeper节点根据各个所述任务调度节点的连接信息在所述任务调度节点中确定所述主任务调度节点以及所述从任务调度节点;根据各个所述任务执行节点的连接信息在所述任务执行节点中确定所述主任务执行节点以及所述从任务执行节点。

相应的,公共服务模块,所述任务提交集群通过所述公共服务模块与所述任务调度集群相连,所述任务调度集群通过所述公共服务模块与所述任务执行集群相连,所述任务执行集群通过所述公共服务模块与所述任务提交集群相连。

相应的,所述公共服务模块包括:消息中间件、分布式数据库以及分布式缓存;所述方法还包括:

将所述任务的任务分配信息、所述任务的执行日志以及所述执行结果保存到所述分布式数据库;

当所述执行结果需要缓存时将所述执行结果缓存到所述分布式缓存;

所述任务提交集群中的所述任务客户端节点向所述任务调度集群提交任务,包括:所述任务提交集群中的所述任务客户端节点通过所述消息中间件向所述任务调度集群提交任务;

所述任务调度集群中的所述任务调度节点接收所述任务,包括:所述任务调度集群中的所述任务调度节点通过所述消息中间件接收所述任务;

所述按照所述任务分配信息将所述任务发送给所述任务执行集群,包括:按照所述任务分配信息通过所述消息中间件将所述任务发送给所述任务执行集群;

所述任务执行集群中的所述任务执行节点执行所述任务并将执行结果返回给提交任务的任务客户端节点,包括:所述任务执行集群中的所述任务执行节点执行所述任务并将执行结果通过所述消息中间件返回给提交任务的任务客户端节点。

由此可见,本申请实施例具有如下有益效果:

本发明实施例通过任务调度集群中的多个任务调度节点可以对接收到的任务并行进行调度,且任务执行集群中的多个任务执行节点可以对接收到的任务并行进行执行,实现负载均衡,当有更大的任务负载量时,可以高效地对任务进行调度及执行,从而提高任务调度执行的效率,满足快速变更的需求。

附图说明

图1为本申请实施例中提供的分布式任务调度系统实施例一的示意图;

图2为本申请实施例中提供的分布式任务调度系统实施例二的示意图;

图3为本申请实施例中提供的分布式任务调度系统实施例三的示意图;

图4为本申请实施例中提供的分布式任务调度系统实施例的原理流程图;

图5为本申请实施例中提供的分布式任务调度方法实施例的流程图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。

参见图1所示,示出了本申请实施例中提供的分布式任务调度系统实施例一的示意图,可以包括:

任务提交集群101、任务调度集群102以及任务执行集群103。

其中,任务提交集群包括多个任务客户端节点,任务调度集群包括多个任务调度节点,任务执行集群包括多个任务执行节点;。

在本实施例中,任务客户端节点可以为使用数据中心服务的租户的客户端,也可以为数据中心中安装的客户端,任务调度节点可以为同一数据中心的不同服务器,也可以为不同数据中心中的不同服务器,任务执行节点可以为同一数据中心的不同服务器,也可以为不同数据中心中的不同服务器。本实施例充分考虑系统的健壮性、扩扩展性、持续交付性,所以使用分布式架构实现,其优势在于使用该系统架构具有很强的健壮性和容错性。

在本实施例中,任务提交集群中的任务客户端节点可以用于向任务调度集群提交任务;

任务调度集群中的任务调度节点可以用于接收任务,生成任务的任务分配信息,按照任务分配信息将任务发送给任务执行集群;

任务执行集群中的任务执行节点可以用于执行任务并将执行结果返回给提交任务的任务客户端节点。

参见图2所示,示出了本申请实施例中提供的分布式任务调度系统实施例二的示意图,在本申请一些可能的实现方式中,任务调度节点可以包括主任务调度节点以及从任务调度节点,任务执行节点可以包括主任务执行节点以及从任务执行节点。

主任务调度节点可以用于从任务客户端节点接收任务,并将任务分配给任意一个从任务调度节点;从任务调度节点可以用于在接收到任务后生成任务的任务分配信息,按照任务分配信息将任务发送给任务执行集群;主任务执行节点可以用于接收任务,并将任务分配给从一个或多个任务执行节点;从任务执行节点可以用于在接收到任务后执行任务并将执行结果返回给提交任务的任务客户端节点。

在实际应用中,任务调度集群具有一网络地址,任务客户端节点可以根据该网络地址将任务提交给任务调度集群;任务调度集群内部首先由主任务调度节点接收任务客户端节点提交的任务,主任务调度节点再根据任务调度集群中各个从任务调度节点的负载情况将该任务分配给某一个从任务调度节点,从任务调度节点在接收到任务后,生成任务分配信息,任务分配信息可以包括提交时间、执行优先级等信息,从任务调度节点可以按照优先级顺序、提交时间顺序将任务分发给任务执行集群。

类似的,任务调度集群具有一网络地址,从任务调度节点可以根据该网络地址在需要对任务进行分配时将任务发送给任务执行集群;任务执行集群内部首先由主任务执行节点接收该任务,主任务执行节点再根据任务执行集群中各个从任务执行节点的负载情况将该任务分配给一个或多个从任务调度节点进行执行,可以理解的是,如果该任务为一个并发任务则需要多个从任务调度节点共同执行;这里主任务执行节点会优先将任务分配给比较空闲的从任务调度节点,达到负载均衡。从任务调度节点在执行完毕后产生执行结果返回给提交任务的任务客户端节点。

参见图3所示,示出了本申请实施例中提供的分布式任务调度系统实施例三的示意图,在上述实施例的基础上,在本申请一些可能的实现方式中,本申请实施例中提供的分布式任务调度系统还可以包括:zookeeper(分布式系统的可靠协调系统)节点301,zookeeper节点分别与任务提交集群、任务调度集群以及任务执行集群相连。

zookeeper节点可以用于保持与各个任务客户端节点、各个任务调度节点以及各个任务执行节点的连接,保存各个任务客户端节点、各个任务调度节点以及各个任务执行节点的连接信息;根据各个任务调度节点的连接信息在任务调度节点中确定主任务调度节点以及从任务调度节点;根据各个任务执行节点的连接信息在任务执行节点中确定主任务执行节点以及从任务执行节点。

在本实施例中,zookeeper节点保存有任务策略,可以进行主任务调度节点以及主任务执行节点的选举,如果主任务调度节点或者主任务执行节点故障,zookeeper节点可以自动选取一个新的主任务调度节点或者主任务执行节点,这样保证整个系统的高可靠性和可扩展性。同时,zookeeper存储各个任务客户端节点、各个任务调度节点以及各个任务执行节点的连接信息,例如心跳信息数据等,随着业务量数据量的增多,当前集群可能不能满足目前的处理需求,那么就需要增加服务器数量,一个新的服务器(即一个节点)上线后会在zookeeper中创建一个代表当前服务器的唯一性路径(临时节点),并且新上线的服务器会和zookeeper保持长连接,当通信断开后,节点会自动摘除。

另外,在本申请一些可能的实现方式中,本申请实施例中提供的分布式任务调度系统还可以包括:公共服务模块302,任务提交集群通过公共服务模块与任务调度集群相连,任务调度集群通过公共服务模块与任务执行集群相连,任务执行集群通过公共服务模块与任务提交集群相连。公共服务模块可以包括:消息中间件、分布式数据库以及分布式缓存。

其中,分布式数据库可以用于保存任务的任务分配信息、任务的执行日志以及执行结果;

消息中间件可以用于接收任务客户端节点向任务调度集群提交的任务,将任务发送到任务调度集群;接收任务调度节点向任务执行集群发送的任务,将任务发送到任务调度集群;接收任务执行节点向提交任务的任务客户端节点发送的执行结果,将执行结果发送到提交任务的任务客户端节点;

分布式缓存可以用于当执行结果需要缓存时缓存执行结果。

也即消息中间件用于各个集群之间进行消息通信,分布式数据库可以存储任务队列和任务执行日志,分布式缓存记录各个集群之间的共享数据以及需要缓存的执行结果。

参见图4所示,示出了本发明实施例中提供的分布式任务调度系统实施例的原理流程图,本发明实施例的分布式任务调度系统的工作原理可以包括:

任务提交集群中的某个任务客户端节点生成一个新的任务,并且通过消息中间件提交到任务调度集群;任务客户端节点判断是否提交成功,如果没有提交成功则重新再次提交,否则继续执行;任务调度集群接收到任务后,由主任务调度节点生成一个新的任务标识,由从任务调度节点对该任务进行分配,发现有可用的任务执行集群节点(组)之后,将优先级最大、最先提交的任务通过消息中间件分发给任务执行集群;可选的,可以将该任务标识对应的任务分配信息保存到分布式数据库中;任务执行集群收到任务后,由主任务执行节点进行分配,有从任务执行节点进行执行;可选的,如果由执行结果需要写入分布式缓存则写入分布式缓存,例如需要定时发送的执行结果等等;另外,还可以将任务的执行日志以及执行结果写入分布式数据库,最后如果需要将执行结果反馈给任务客户端节点则通过消息中间件将执行结果发送给任务客户端节点。

这样,本发明实施例通过任务调度集群中的多个任务调度节点可以对接收到的任务并行进行调度,且任务执行集群中的多个任务执行节点可以对接收到的任务并行进行执行,实现负载均衡,当有更大的任务负载量时,可以高效地对任务进行调度及执行,从而提高任务调度执行的效率,满足快速变更的需求。

参见图5所示,示出了一种分布式任务调度方法实施例的流程图,该方法可以应用于分布式任务调度系统,该系统的相关说明可以参见上述实施例,该系统可以包括:任务提交集群、任务调度集群以及任务执行集群;任务提交集群包括多个任务客户端节点,任务调度集群包括多个任务调度节点,任务执行集群包括多个任务执行节点;该方法实施例可以包括以下步骤:

步骤501:任务提交集群中的任务客户端节点向任务调度集群提交任务。

步骤502:任务调度集群中的任务调度节点接收任务,生成任务的任务分配信息,按照任务分配信息将任务发送给任务执行集群。

步骤503:任务执行集群中的任务执行节点执行任务并将执行结果返回给提交任务的任务客户端节点。

在本申请一些可能的实现方式中,任务调度节点可以包括主任务调度节点以及从任务调度节点,任务执行节点包括主任务执行节点以及从任务执行节点;

任务调度集群中的任务调度节点接收任务,生成任务的任务分配信息,按照任务分配信息将任务发送给任务执行集群的具体实现可以包括:

主任务调度节点从任务客户端节点接收任务,并将任务分配给任意一个从任务调度节点;

从任务调度节点在接收到任务后生成任务的任务分配信息,按照任务分配信息将任务发送给任务执行集群;

任务执行集群中的任务执行节点执行任务并将执行结果返回给提交任务的任务客户端节点的具体实现可以包括:

主任务执行节点接收任务,并将任务分配给从一个或多个任务执行节点;

从任务执行节点在接收到任务后执行任务并将执行结果返回给提交任务的任务客户端节点。

在本申请一些可能的实现方式中,该系统还可以包括:分布式系统的可靠协调系统zookeeper节点,zookeeper节点分别与任务提交集群、任务调度集群以及任务执行集群相连;该方法实施例还可以包括:

各个任务客户端节点、各个任务调度节点以及各个任务执行节点与zookeeper节点保持连接;

zookeeper节点保存各个任务客户端节点、各个任务调度节点以及各个任务执行节点的连接信息;

zookeeper节点根据各个任务调度节点的连接信息在任务调度节点中确定主任务调度节点以及从任务调度节点;根据各个任务执行节点的连接信息在任务执行节点中确定主任务执行节点以及从任务执行节点。

在本申请一些可能的实现方式中,该系统还可以包括:公共服务模块,任务提交集群通过公共服务模块与任务调度集群相连,任务调度集群通过公共服务模块与任务执行集群相连,任务执行集群通过公共服务模块与任务提交集群相连。

在本申请一些可能的实现方式中,公共服务模块可以包括:消息中间件、分布式数据库以及分布式缓存;该方法实施例还可以包括:

将任务的任务分配信息、任务的执行日志以及执行结果保存到分布式数据库;

当执行结果需要缓存时将执行结果缓存到分布式缓存;

任务提交集群中的任务客户端节点向任务调度集群提交任务,包括:任务提交集群中的任务客户端节点通过消息中间件向任务调度集群提交任务;

任务调度集群中的任务调度节点接收任务,包括:任务调度集群中的任务调度节点通过消息中间件接收任务;

按照任务分配信息将任务发送给任务执行集群,包括:按照任务分配信息通过消息中间件将任务发送给任务执行集群;

任务执行集群中的任务执行节点执行任务并将执行结果返回给提交任务的任务客户端节点,包括:任务执行集群中的任务执行节点执行任务并将执行结果通过消息中间件返回给提交任务的任务客户端节点。

这样,本发明实施例通过任务调度集群中的多个任务调度节点可以对接收到的任务并行进行调度,且任务执行集群中的多个任务执行节点可以对接收到的任务并行进行执行,实现负载均衡,当有更大的任务负载量时,可以高效地对任务进行调度及执行,从而提高任务调度执行的效率,满足快速变更的需求。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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