分布式调度系统、方法与流程

文档序号:12363131阅读:176来源:国知局
分布式调度系统、方法与流程

本发明实施例涉及计算机技术领域,尤其涉及一种分布式调度系统、方法。



背景技术:

ETL(Extract-Transform-Load,数据仓库技术数据处理)是构建数据仓库的重要一环,是指用户从数据源抽取(extract)出所需的数据,经过数据清洗、转换(transform),最终按照预先定义好的数据仓库模型,将数据加载(load)到数据仓库中去的过程。

在离线ETL中,通常按照各个数据仓库模型架构,开发各个层的ETL任务,而这些任务通常是发布到ETL任务调度系统进行运行,需要一个高可用的调度系统,来保证任务及时,准确的运行。

现有调度系统实现方法通常包括两种,一是集中式的,另一个是单master/slave(主/从)结构。集中式调度系统是一个大型的中央系统,其终端是客户机,所有的调度任务都由该大型的中央系统完成,终端只是用来输入和输出。然而,发明人在实现本发明的过程中发现,集中式调度的缺陷在于,一方面,数据处理任务调度信息集中汇总到中央系统这一管理节点上,导致信息流拥挤;另一方面,管理节点发生故障会影响整个调度系统的正常工作。

在master/slave(主/从)结构的调度系统中,Master提供web接口让用户来管理job(作为一个单元处理的作业)和slave,job可以运行在master本机或者被分配到slave上运行。一个master可以关联多个slave用来为不同的job或相同的job的不同配置来服务。发明人在实现本发明的过程中发现,单master/slave(主/从)结构会存在master扩展性问题和单点故障问题,这些问题同样会影响调度系统的任务处理的及时性与正确性。

因此,一种新的分布式调度系统亟待提出。



技术实现要素:

本发明实施例提供一种分布式调度系统、方法,用以解决现有技术中调度系统数据处理任务的及时性与正确性无法保障的缺陷,实现了调度系统的高可用,保证了调度任务及时,准确的运行。

本发明实施例提供一种分布式调度系统,包括:

所述前端层,包含至少一个调度前端,所述调度前端用于开发前端数据处理任务,向所述中心层申请上线所述数据处理任务;在接收所述中心层的上线允许之后上线并展示所述数据处理任务;

所述中心层,包含至少一个调度中心,所述调度中心用于在接收到所述调度前端发出的上线请求时判断是否允许所述数据处理任务上线,并根据所述数据处理任务的用户来源分发所述数据处理任务至相应的运行分组;

所述运行层,包含至少一个所述运行分组,所述运行分组用于执行所述调度中心分发的所述数据处理任务。

本发明实施例提供一种分布式调度方法,包括:

调用前端层的调度前端开发前端数据处理任务并向中心层申请上线所述数据处理任务;

调用所述中心层的调度中心判断是否允许所述数据处理任务上线;

在接收所述调度中心的上线允许后,调用所述调度中心根据所述数据处理任务的用户来源分发所述数据处理任务至相应的运行分组;

调用所述调度前端,上线并展示所述数据处理任务;

调用运行层的所述运行分组执行所述调度中心分发的所述数据处理任务。

本发明实施例提供的分布式调度系统、方法,通过将调度系统进行分层,并在每一层中采用分布式的方式进行部署,为调度系统实现了无限扩展的可能性;中心层包含至少一个调度中心,调度中心的分布式设计,改变了现有技术中进行分布式调度时,信息流拥挤、扩展性差以及单点故障导致的调度系统无法保障数据处理任务的及时性与正确性的缺陷,现了调度系统的高可用,保证了调度任务及时,准确的运行;与此同时,运行层采用不同的分组方式,每一分组对应不同的用户,做到了各个用户之间的数据处理任务互不影响,提高了调度任务处理的准确性以及稳定性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例分布式调度系统的架构示意图;

图2为申请实施例的分布式调度方法位于前端层的技术流程图;

图3为申请实施例的分布式调度方法位于中心层的技术流程图;

图4为申请实施例的分布式调度方法位于运行层的技术流程图;

图5为申请实施例的分布式调度方法整体的技术流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本申请实施提供的一种分布式调度系统的架构示意图,系统包括三层:前端层10、中心层20以及运行层30。其中,所述前端层包含至少一个调度前端11,所述中心层包含至少一个调度中心21,所述运行层包含至少一个运行分组31,每个运行分组中包含至少一个运行节点311。本申请实施例中,调度系统的每一层都是分布式架构,从而保证了调度系统的高可用性。

其中,所述调度前端11用于开发前端数据处理任务,向所述中心层申请上线所述数据处理任务;在接收所述中心层的上线允许之后上线并展示所述数据处理任务;

具体地,当所述前端层10包含至少一个所述调度前端11时,每一所述调度端11可以分别用于开发不同的前端数据处理任务,如SQL(结构化查询语言(Structured Query Language))任务、Shell脚本任务、Hive(基于Hadoop的一个数据仓库工具)任务等等。多个调度前端的并行开发,在数据处理任务量大或某一调度前端故障时,不会造成任务开发需求的堆积,提高了调度系统的效率;与此同时,针对不同类型的数据处理任务,分别由不同的调度前端来开发,进一步保证了数据处理任务的开发质量。进一步地,所述调度前端11还用于,在上线展示所述数据处理任务的同时监控所述前端层的展示状态,从而根据所述展示状态实时预警。所述前端层有一个显示界面,用于展示所有数据处理任务的当前状态,用户可以通过这一显示界面进行实时地观察。在展示的同时,所述调度前端启用一个线程监控所述前端层的展示状态,当发现所述展示状态有异常时(例如,数据处理超时、数据处理失败等等),启动预警,所述预警可以包括,重启所述数据处理任务、向所述中心层申请更换运行分组或通过预设的邮件或者消息发送地址向调度系统管理员发出故障通知。

所述调度中心21用于在接收到所述调度前端发出的上线请求时判断是否允许所述数据处理任务上线,并根据所述数据处理任务的用户来源分发所述数据处理任务至相应的运行分组;

所述中心层20包含有多个所述调度中心21,多个所述调度中心21之间采用分布式的架构进行数据处理任务的调度,不受任务量的限制,所述中心层20可以无限扩展保证实现调度系统的高可用。

进一步地,所述调度中心21还用于,在上线展示所述数据处理任务后监控所述数据处理任务的所述处理状态,当监测到所述处理状态出现异常,则启动同一所述运行分组的任一其他所述运行节点作为备用运行节点继续执行所述数据处理任务。

本申请实施例中,所述中心层20采用quartz集群方式实现,每一所述调度中心相当于quartz集群中的一个节点,是一个独立的quartz应用。在执行数据处理任务调度的过程中,如果当前调度中心执行失败或出现故障,则根据quartz集群的特性,所述数据处理任务的调度将会自动被分配到另一调度中心来处理。在每一所述调度中心执行任务调度的同时,所述中心层会自动检查失效的定时调度,并在发现未成功的定时调度之后,由其他调度中心立刻接续完成定时调度任务。所述中心层20在整个调度系统中承上启下,在上与所述前端层10连接,并接受所述前端层发送的数据处理任务的上线请求。接收到所述上线请求后,需对所述上线请求进行审批,判断是否允许上线。在允许上线之后,根据所述数据处理任务的用户来源选择执行所述数据处理任务的执行环境。在本申请实施例中,所述运行层的运行节点是分组的,每一分组的的执行环境不同,以满足不同来源用户不同的数据处理需求。

根据所述数据处理任务的用户来源分发所述数据处理任务至相应的运行分组,有如下两种可行的方法:其一,预设所述用户来源与所述运行分组的对应关系表;当所述调度中心允许所述调度前端发送的上线请求时,所述调度中心获取所述数据处理任务的用户来源,并查询所述对应关系表,根据查表的结果将所述数据处理任务分发至相应的运行分组。

其二,可以通过查询访问权限来控制每一所述用户来源与所述运行分组的对应关系。例如,当所述数据处理任务来源于用户A时,获取用户A对所述运行分组的访问权限,假设本实施例中,用户A对运行分组A1以及运行分组A2具有访问权限,则所述调度中心根据可将所述数据处理任务分发至运行分组A1或运行分组A2执行。

所述运行分组31用于执行所述调度中心21分发的所述数据处理任务。在所述运行层30中,包含至少一个所述运行分组31,每一所述运行分组31中包含至少一个运行节点311;所述运行节点,用于提供执行所述数据处理任务的执行环境、执行所述数据处理任务并汇报所述数据处理任务的处理状态。

需要说明的是,本申请实施例中,当所述运行层包含两个及两个以上的所述运行分组时,每一所述运行分组之间在执行所述数据处理任务时是相互独立的,互不影响。例如,运行分组A中的运行节点A0宕机,那么这一故障对运行分组B是毫无影响的。这种情况下,调度中心会将A0上正在执行的数据处理任务分发至运行分组中其他的运行节点来执行。

本实施例中,通过将调度系统进行分层,并在每一层中采用分布式的方式进行部署,为调度系统实现了无限扩展的可能性;中心层包含至少一个调度中心,调度中心的分布式设计,改变了现有技术中进行分布式调度时,信息流拥挤、扩展性差以及单点故障导致的调度系统无法保障数据处理任务的及时性与正确性的缺陷,现了调度系统的高可用,保证了调度任务及时,准确的运行;与此同时,运行层采用不同的分组方式,每一分组对应不同的用户,做到了各个用户之间的数据处理任务互不影响,提高了调度任务处理的准确性以及稳定性。图2是本申请实施例一种分布式调度方法的技术流程图,在前端层,包括如下可行的步骤:

步骤S210、开发前端数据处理任务并向调度中心申请上线所述数据处理任务;

步骤S220、在接收所述调度中心的上线允许之后,上线并展示所述数据处理任务;

步骤S230、在上线展示所述数据处理任务的同时监控所述前端层的展示状态,从而根据所述展示状态实时预警。

具体的,在步骤S220中,展示所述数据处理任务,包括展示所述数据处理任务的内容、处理状态以及执行所述数据处理任务的运行分组甚至具体至执行所述数据处理任务的运行节点。用户可以通过前端层的展示获取到所述数据处理任务的当前状态。

具体的,在步骤S230中,所述前端层在展示所述数据处理任务的同时,启用一个线程监控所述前端层的展示状态,当发现所述展示状态有异常时(例如,数据处理超时、数据处理失败等等),根据异常分类启动预警,所述预警可以包括,重启所述数据处理任务、向所述中心层申请更换运行分组或通过预设的邮件或者消息发送地址向调度系统管理员发出故障通知。例如,当所述展示状态的异常为数据处理超时,可重启所述数据处理任务;当所述展示状态的异常为数据处理失败时,可以向所述中心层申请更换运行分组。

本实施例提供的分布式调度方法,在前端层部署多个所述调度前端,多个调度前端的并行开发,在数据处理任务量大或某一调度前端故障时,不会造成任务开发需求的堆积,提高了调度系统的效率;与此同时,针对不同类型的数据处理任务,分别由不同的调度前端来开发,进一步保证了数据处理任务的开发质量。

图3是本申请实施例一种分布式调度方法的技术流程图,在中心层,包括如下可行的步骤:

步骤S310、在接收到所述调度前端发出上线请求时判断是否允许上线;

步骤S320、根据所述数据处理任务的用户来源分发所述数据处理任务至相应的运行分组;

步骤S330、监控所述数据处理任务的所述处理状态。

具体的,在步骤S320中,根据所述数据处理任务的用户来源分发所述数据处理任务至相应的运行分组,有如下两种可行的方法:其一,预设所述用户来源与所述运行分组的对应关系表;当所述调度中心允许所述调度前端发送的上线请求时,所述调度中心获取所述数据处理任务的用户来源,并查询所述对应关系表,根据查表的结果将所述数据处理任务分发至相应的运行分组。

其二,可以通过查询访问权限来控制每一所述用户来源与所述运行分组的对应关系。例如,当所述数据处理任务来源于用户A时,获取用户A对所述运行分组的访问权限,假设本实施例中,用户A对运行分组A1以及运行分组A2具有访问权限,则所述调度中心根据可将所述数据处理任务分发至运行分组A1或运行分组A2执行。

具体的,在步骤S330中,监测所述处理状态,具体可以通过对运行层的运行日志进行分析实现,或者,接收运行层发送的所述数据处理任务的执行状态,对所述执行状态进行分析实现所述处理状态的监控。当监测到所述处理状态出现异常时,启动同一所述运行分组的任一其他所述运行节点作为备用运行节点继续执行所述数据处理任务。

本实施例提供的分布式调度方法,在中心层包含至少一个所述调度中心,所述调度中心的分布式设计,改变了现有技术中进行分布式调度时,信息流拥挤、扩展性差以及单点故障导致的调度系统无法保障数据处理任务的及时性与正确性的缺陷,现了调度系统的高可用,保证了调度任务及时,准确的运行。

图4是本申请实施例一种分布式调度方法的技术流程图,在运行层,包括如下可行的步骤:

步骤S410、根据分组类型创建相应的运行环境;

步骤S420、接收调度中心分发的数据处理任务并执行所述数据处理任务;

步骤S430、写所述数据处理任务的运行日志并向所述调度中心汇报所述数据处理任务的执行状态。

具体的,在步骤410中,需要说明的是,针对不同类型的或不同用户来源的数据处理任务,执行时,运行节点需要的运行环境有所不同。预先根据分组类型创建相应的运行环境,当有多个分组类型时,调度系统中将包含多个不同的运行环境,进一步提升了调度系统的可用性。

本实施例提供的分布式调度方法,运行层采用不同的分组方式,每一分组对应不同的用户,做到了各个用户之间的数据处理任务互不影响,提高了调度任务处理的准确性以及稳定性。

图5是本申请实施例一种分布式调度方法的技术流程图,在整个调度系统运行的角度进一步描述本申请实施例技术方案的执行过程,主要包括如下的步骤:

步骤S510、所述运行分组根据分组类型创建相应的运行环境;

步骤S520、调度前端开发前端数据处理任务并向中心层申请上线所述数据处理任务;

步骤S530、调度中心在接收到所述调度前端发出上线请求时判断是否允许上线;

步骤S540、所述调度中心根据所述数据处理任务的用户来源分发所述数据处理任务至相应的运行分组;

步骤S550、所述调度前端在接收所述调度中心的上线允许之后,上线并展示所述数据处理任务;

所述调度前端在上线展示所述数据处理任务的同时监控所述前端层的展示状态,从而根据所述展示状态实时预警。

步骤S560、所述运行分组接收调度中心分发的数据处理任务并执行所述数据处理任务;

步骤S570、所述调度中心监控所述数据处理任务的所述处理状态。

当监测到所述处理状态出现异常,则启动同一所述运行分组的任一其他所述运行节点作为备用运行节点继续执行所述数据处理任务。本实施例提供的分布式调度方法,通过将调度系统进行分层,并在每一层中采用分布式的方式进行部署,为调度系统实现了无限扩展的可能性;中心层包含至少一个调度中心,调度中心的分布式设计,改变了现有技术中进行分布式调度时,信息流拥挤、扩展性差以及单点故障导致的调度系统无法保障数据处理任务的及时性与正确性的缺陷,现了调度系统的高可用,保证了调度任务及时,准确的运行;与此同时,运行层采用不同的分组方式,每一分组对应不同的用户,做到了各个用户之间的数据处理任务互不影响,提高了调度任务处理的准确性以及稳定性。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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