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

文档序号:15981091发布日期:2018-11-17 00:20阅读:170来源:国知局

本发明涉及计算机技术领域,特别是涉及一种分布式调度系统及方法。

背景技术

海姆达尔是一个具有完全自主知识产权的海量数据挖掘与分析系统,该系统可以实现对海量数据的挖掘和处理,并提供方便易用的工具供数据挖掘人员和运营分析人员使用。目前分析人员采用该系统在查询文件时,查找到的是文件通常是原始日志,因此还需要对原始日志进行再次加工、处理、分析等,这无疑会增加分析人员的工作量,不利于提高分析人员的工作效率,此时为了能够为分析人员等提供便利,需要在海姆达尔系统中直接实现原始日志的进一步抽取、细化。

但是,目前在使用该系统进行数据挖掘处理或数据抽取任务时,都是基于脚本/计算平台/硬编码的方式串起整个流程。该种方式中,所有调度任务都由中央设备来统一完成,数据处理任务调度信息集中汇总到中央设备这一管理节点上,导致信息流拥挤,若该管理节点出现故障会影响整个系统的数据处理任务,此外,当前系统的任务处理效率低,无法满足用户需求。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的分布式调度系统和相应的方法。

依据本发明的一个方面,提供了一种分布式调度系统,包括调度部、运行部以及存储部,所述调度部包括至少一个调度单元,所述运行部包括多个运行单元,所述存储部包括至少一个存储单元,

所述调度单元,适于从文件系统中提取待处理任务,并将所述待处理任务分为多个子任务;

所述调度单元,还适于将所述多个子任务分发至相应的运行单元,并由所述运行单元执行对应子任务;

所述调度单元,还适于记录各子任务的执行过程生成记录信息,并将所述记录信息存储于存储单元。

可选地,所述系统还包括:

前端部,包括至少一个前端单元,所述前端单元适于开发获取代码,并根据所述代码生成对应的待处理任务;

将所述待处理任务上传至文件系统进行存储。

可选地,所述调度单元,还适于:

结合所述待处理任务的来源将所述待处理任务分为多个子任务,并根据各运行单元的运行状态将所述多个子任务分发至相应的运行单元。

可选地,所述运行单元,还适于:

根据所接收的对应子任务创建相应的运行环境,并在所述运行环境中执行该子任务。

可选地,所述调度单元,还适于:

监控并记录各运行单元中子任务的执行过程,并在监控到任一子任务执行异常时,自动启动其他运行单元继续执行该子任务。

可选地,所述调度单元,还适于:

从各子任务的执行过程中提取各子任务的元信息以及临时信息,其中,所述元信息包括子任务标识信息和/或子任务类型,所述临时信息包括子任务数量和/或执行时间;

利用所述元信息以及临时信息生成记录信息。

可选地,所述存储单元,还适于:

若所述存储单元包括etcd数据库、mysql数据库以及redis数据库,则将所述元信息存储至所述etcd数据库和/或mysql数据库中,以及将所述临时信息存储至所述redis数据库中。

可选地,所述前端单元,还适于:

显示各子任务的执行过程,并监控该显示状态,在所述显示状态异常时执行报警通知。

可选地,所述前端单元,还适于:

接收用户的触发以暂停所执行的子任务或启动所需执行的子任务。

依据本发明的另一个方面,还提供了一种分布式调度方法,包括:

从文件系统中提取待处理任务,并将所述待处理任务分为多个子任务;

将所述多个子任务分发至相应的运行单元,并由所述运行单元执行对应子任务;

记录各子任务的执行过程生成记录信息,并将所述记录信息存储于存储单元。

可选地,从文件系统中提取待处理任务之前,还包括:

开发获取代码,并根据所述代码生成对应的待处理任务;

将所述待处理任务上传至文件系统进行存储。

可选地,将所述待处理任务分为多个子任务,包括:

结合所述待处理任务的来源将所述待处理任务分为多个子任务。

可选地,将所述多个子任务分发至相应的运行单元,包括:

根据各运行单元的运行状态将所述多个子任务分发至相应的运行单元。

可选地,由所述运行单元执行对应子任务,包括:

由所述运行单元根据所接收的对应子任务创建相应的运行环境,并在所述运行环境中执行该子任务。

可选地,所述方法,还包括:

监控并记录各运行单元中子任务的执行过程,并在监控到任一子任务执行异常时,自动启动其他运行单元继续执行该子任务。

可选地,记录各子任务的执行过程生成记录信息,包括:

从各子任务执行过程中提取各子任务的元信息以及临时信息,其中,所述元信息包括子任务标识信息和/或子任务类型,所述临时信息包括子任务数量和/或执行时间;

利用所述元信息以及临时信息生成记录信息。

可选地,将所述记录信息存储至存储单元,包括:

若所述存储单元包括etcd数据库、mysql数据库以及redis数据库,则将所述元信息存储至所述etcd数据库和/或mysql数据库中,以及将所述临时信息存储至所述redis数据库中。

可选地,所述方法还包括:

显示各子任务的执行过程,并监控该显示状态,在所述显示状态异常时执行报警通知。

可选地,所述方法,还包括:

接收用户的触发以暂停所执行的子任务或启动所需执行的子任务。

依据本发明的另一个方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算机上运行时,导致所述计算机执行上述任一项所述的分布式调度方法。

依据本发明的另一个方面,还提供了一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行上述任一项所述的分布式调度方法。

本发明的分布式调度系统包括调度部、运行部以及存储部,其中,调度部包括至少一个调度单元,运行部包括多个运行单元,存储部包括至少一个存储单元。具体地,首先由调度单元从文件系统中提取待处理任务,并将待处理任务分为多个子任务。其次,由调度单元将多个子任务分发至相应的运行单元,待运行单元接收到相应的子任务后执行对应子任务。进一步,由调度单元记录各子任务的执行过程并生成记录信息,进而将记录信息存储于存储单元。由此可见,本发明通过至少一个调度单元、多个运行单元以及至少一个存储单元的分布式架构,由调度单元将所获取的待处理任务分为多个子任务,并由多个运行单元并行执行对应的子任务,解决了现有技术中由中央设备集中处理任务而造成的单点问题,并且,采用多节点并行执行任务的结构,当任务失败或执行设备出现故障,可以由其他设备节点继续执行,实现了任务失败自动多机重试,保证了任务的及时、正确运行。另一方面,本发明通过对将所记录信息进行实时存储,便于后续分析人员或其他处理设备查找获取对应信息,从侧面进一步提升了任务处理的及时性。此外,本发明提供的分布式调度系统还可以自动将所提取的任务代码分类发放,方便各任务的处理,无需用户进一步关心任务代码如何运行,只需将其上传至本发明的调度系统,即可将所需运行的代码自动分类并调度到合适的机器上运行,进一步实现任务失败自动重试的功能。更多地,当任务执行过程中出现其他问题还可以通过该系统向用户进行报警通知。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1是根据本发明一个实施例的分布式调度系统的结构示意图;

图2是根据本发明一个实施例的分布式调度系统的另一个结构示意图;

图3是根据本发明一个实施例的分布式调度系统的设计结构示意图;以及

图4是根据本发明一个实施例的分布式调度方法的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

为了解决上述技术问题,本发明实施例提供了一种分布式调度系统。图1示出了根据本发明一个实施例的分布式调度系统的结构示意图。参见图1,本实施例的分布式调度系统包括调度部、运行部以及存储部。其中,调度部包括至少一个调度单元10,运行部包括多个运行单元20,存储部包括至少一个存储单元30。

现介绍本发明实施例的基于分布式调度系统的各组成单元的功能以及各部分间的连接关系:

调度单元10,适于从文件系统中提取待处理任务,并将所获取的待处理任务分为多个子任务,进一步将该多个子任务分发至相应的运行单元20;

运行单元20,与调度单元10耦合,适于接收并执行调度单元10分发的对应子任务;

存储单元30,与调度单元10耦合,适于在调度单元10记录各子任务的执行过程并生成记录信息之后,接收并保存该记录信息。

需要说明的是,在本实施例中,为了描述方便及清楚,图1仅示出了一个调度单元10与其他各部分的连接关系,应当知晓,本实施例的分布式调度系统中其他任一调度单元10均与该实施例中例举的调度单元10具备相同的结构与功能,其各个连接关系与图1示例中相同,在此不再过多赘述,图中有关其他调度单元10的连接关系也不再示出。

本发明通过至少一个调度单元10、多个运行单元20以及至少一个存储单元30的分布式架构,由调度单元将所获取的待处理任务分为多个子任务,并由多个运行单元20并行执行对应的子任务,解决了现有技术中由中央设备集中处理任务而造成的单点问题,并且,采用多节点并行执行任务的结构,当任务失败或执行设备出现故障,可以由其他设备节点继续执行,实现了任务失败自动多机重试,保证了任务的及时、正确运行。另一方面,本发明通过对将所记录信息进行实时存储,便于后续分析人员或其他处理设备查找获取对应信息,从侧面进一步提升了任务处理的及时性。此外,本发明提供的分布式调度系统还可以自动将所提取的任务代码分类发放,方便各任务的处理,无需用户进一步关心任务代码如何运行,只需将其上传至本发明的调度系统,即可将所需运行的代码自动分类并调度到合适的机器上运行,进一步实现任务失败自动重试的功能。更多地,当任务执行过程中出现其他问题还可以通过该系统向用户进行报警通知。

更进一步地,图2示出了根据本发明一个实施例的分布式调度系统的另一个结构示意图,如图2所示,本实施的分布式调度系统还包括前端部,该前端部包括至少一个前端单元40。本实施例的前端单元40,与调度单元10耦合,适于由数据处理人员开发代码,并根据所获取的代码生成对应的待处理任务,并将该待处理任务上传至文件系统进行存储。

该实施例中,文件系统可以是存储有海量日志的hdfs(hadoopdistributedfilesystem,分布式文件系统)、s3(simplestorageservice,简单存储服务)等文件系统,当然还可以是其他的文件系统。在本实施例的文件存储系统中存储的待处理任务可以是数据转化任务也可能是其他任务,本实施例对此不作具体限定。

当调度单元10从文件系统中提取待处理任务之后,可以根据所获取的待处理任务的来源将其分为多个子任务。当然调度单元10还可以根据其他任意可行的规则对待处理任务进行分类,通过将待处理任务分为多个子任务将基于脚本\计算平台\硬编码的方式串起整个流程的方案做了实质的改进,将整个流程分模块处理,使得各任务模块间可以并行处理,不但提升了任务处理效率,并且避免了系统的单点故障问题,使得任务可以及时、稳定地处理。

在本实施例中,当调度单元10将所获取的待处理任务分为多个子任务后,还可以结合各运行单元20的状态,将多个子任务分发至相应的运行单元20,进而由各运行单元20并行执行各子任务。具体地,在根据各运行单元20的状态对多个子任务进行分发时,可以首先判断各运行单元20当前是否正在执行任务。若分布式调度系统处于刚启动状态时,通常情况下,运行部的大部分运行单元20处于空闲状态,此时,若调度单元10从文件系统获取到待处理任务并将其分为多个子任务后,可以在多个处于空闲状态的运行单元20中任意选取所需个数的运行单元20以待接收,还可以依据各运行单元20的地址信息或其他唯一标识信息对各运行单元20进行排序,进而由调度单元10将多个子任务分发至已排序的预设数目个运行单元20中。需要说明的是,本实施例的上述说明仅为例举,并不构成对本发明的限定。

当运行单元20接收到对应子任务后,可以执行该子任务。具体地,在本实施例中,可以首先由运行单元20根据所接收的子任务创建相应的运行环境,进一步在所创建的运行环境中执行对应的子任务。在本实施例中,当运行单元20执行子任务时,调度单元10可以监控并记录各运行单元20中子任务的执行过程,并在监控到任一子任务执行异常时,自动启动其他运行单元20继续执行该子任务。具体地,在自动启动其他运行单元20时,可以随机启动任一运行单元20继续执行该子任务,还可以进一步结合其他运行单元20的状态信息选择合适的运行单元20继续执行,还可以根据预先设定的规则选取对应的运行单元20执行该子任务,本实施例只需在任一运行单元20中子任务执行异常时,自动启动其他运行单元20继续执行该子任务以保证该子任务能够及时、正确地处理即可。

进一步地,在本实施例中,调度单元10还可以从各子任务的执行过程中提取各子任务的元信息以及临时信息,其中,本实施例的元信息包括子任务的标识信息和/或子任务的类型,临时信息包括子任务的数量和/或执行时间。进而,利用所提取的元信息以及临时信息生成记录信息。

此外,调度单元10在记录各运行单元20中相应子任务的执行过程,并生成记录信息后,还可以将所生成的记录信息存储至存储单元30。具体地,在本实施例中,存储单元30可以包括etcd数据库、mysql数据库以及redis数据库,其中,etcd数据库是一个高可用的键值存储系统,其主要用于共享配置和服务发现;mysql数据库主要用于存储一些数据的元数据信息,如将日志的元数据统计之后存储至mysql数据库中;redis是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库。在本实施例中,当存储单元30包括etcd数据库、mysql数据库以及redis数据库时,则将元信息存储至etcd数据库和/或mysql数据库中,以及将临时信息存储至redis数据库中。通过对所记录的信息进行分类存储,使得分布式调度系统所执行的任务更加明确化,且更便于后续分析人员或数据处理设备对相应信息的查询与提取。

更进一步地,在本实施例中,前端单元40还适于显示各子任务的执行过程,并监控该显示状态,在显示状态异常时向用户执行报警通知。另一方面,前端单元40还可以接收用户的触发以暂停所执行的子任务或启动所需执行的子任务。

下面以一个具体的实施例对本发明的分布式调度系统进行详细介绍。

本实施例的分布式调度系统,其核心是分布式任务调度,任务可能是数据转化任务也可能是其他任务,属于一个基础组件系统。该分布式调度系统是基于masterslave结构设计的,其具有执行任务失败后自动恢复并重试功能,且可以支持多种任务类型,如基于mapreduce模型并采用spark引擎从文件系统的离线日志中提取日志元数据、调度并下载hdfs中的文件、loadstored等。其中,mapreduce模型是一种编程模型,用于大规模数据集(大于1tb)的并行运算,spark引擎是专为大规模数据处理而设计的快速通用的计算引擎。参见图3,现介绍分布式调度系统的具体工作过程。

分布式调度系统中的etcdcluster,即master(即本发明中的调度单元)集群,master集群中具有多个master。任意master可以从文件存储(s3/hdfs)中提取待处理的任务task,并将提取的待处理任务分发至与各自对应的worker(即本发明的运行单元)节点中,例如,masterleader可以将提取的任务分发至与其对应的4个worker节点中,这4个worker节点可以并行的执行任务。

在worker节点执行任务的过程中,master会对当前执行任务和与其对应的各worker节点的执行过程进行记录。此外,master还可以将执行任务过程中产生的task元数据(如日志元数据)存储至etcd、mysql数据库中,并且将产生的其他记录(如任务数量等)、临时信息存储至memory/redis数据库中。

采用本发明实施例的分布式调度系统来调度数据处理任务,可以在一个节点任务失败后其他节点重新执行任务,有效地防止了单点问题,并且,还大大方便了数据处理任务,无需关心任务如何执行,只要将任务上传给分布式调度器,任务就自动调度到合适的机器上运行,且能进行失败重试。

进一步地,本发明实施例还提供了一种分布式数据调度系统,该分布式数据调度系统的核心功能是进行数据的调度与转化,其可以采用上文中的分布式调度系统进行数据分析任务的调度,此任务可以是转化任务,也可以是其他任务。即在采用分布式调度系统调度任务后,如分布式调度系统调度待处理的离线日志,再由分布式数据调度系统对调度的任务进行进一步的数据处理,如提供弹性/可编程的处理流程、数据流监控、简单易用的存储、模块化的数据加工流程等。分布式数据调度系统可以是基于上文中的数据处理框架设计的。

该实施例中,分布式数据调度系统把任务重新进行了定义,如node、rdd、meta,其中,node可以代表一种数据处理收集的方式,一个node的输出可以作为下一个node的输入,每一个node都是逻辑独立的,但是可以通过配置/xml串起来。node可以包括如下类型:

filter,过滤类型的node,可以自定义过滤条件以处理输入的rdd;

event,事件类型的node,可以自定义根据自定义事件抽取结果;

fill,补完类型的node,可以自定义补完规则以处理输入的rdd;

map/reduce,通过map/reduce程序进行数据处理的node;

spark,通过spark程序进行数据处理的node;

script,通过脚本进行数据处理的node。

rdd取自spark的概念,弹性分布式数据集,node的一个结果集合就是rdd,rdd可自定义存储,或者可以定义数据量自动选择存储,此外,rdd也可定义裁剪的规则,裁剪输出。

meta元数据,每个node能处理的数据类型,比如处理样本,可以把样本的数据结构定义成上文介绍的虚拟表的形式。

由此可以得到分布式数据调度系统其核心功能是在单个节点根据node配置执行相应的业务逻辑。

下面以一个简单的例子来描述数据抽取任务。例如数据抽取任务为提取百度的样本。

首先,从云查杀日志中提取md5(message-digestalgorithm5,信息摘要算法5)和sha1(securehashalgorithm,安全哈希算法),然后,根据提取的md5、sha1值计算对应样本每天的pv(pageview,页面浏览量)/uv(uniquevisitor,独立访客),并获取pv/uv大于100w的样本的parent_url(parent_uniformresourcelocator,父级统一资源定位符)。如果包含百度的样本,则获取其所有子进程,并提取前一百条子进程的详细信息展示出来。

采用本发明实施例的分布式数据调度器执行上述数据抽取任务的具体执行步骤可以是:

step1、监控pv大于1000000的样本;具体代码可以是

step2、拉取样本的parent_url属性;具体代码可以是

step3、过滤出parent_url包含百度的样本;具体代码可以是

{filterrdd

计算preent_url是否包含百度}

step4、过滤所有子进程样本;具体代码可以是

step5、在前端展示前一百条子进程的样本。

本发明实施例中,分布式数据调度系统实现逻辑的调度核心可以根据整体的配置将上述各step串起来,并负责管理rdd相关的存储,把每个node的任务分发到各个节点执行。该实施例中,单个的node可独立执行。

此外,数据处理系统通过设置前端页面,还可以提供可视化编辑的功能,把可视化编辑配置生成json格式的conf(配置文件)提交到调度核心。并且,前端页面不仅可以展示每个node的进度,还可以提供由用户手动启动停止单个node的任务的功能。

本发明通过至少一个调度单元、多个运行单元以及至少一个存储单元的分布式架构,由调度单元将所获取的待处理任务分为多个子任务,并由多个运行单元并行执行对应的子任务,解决了现有技术中由中央设备集中处理任务而造成的单点问题,并且,采用多节点并行执行任务的结构,当任务失败或执行设备出现故障,可以由其他设备节点继续执行,实现了任务失败自动多机重试,保证了任务的及时、正确运行。另一方面,本发明通过对将所记录信息进行实时存储,便于后续分析人员或其他处理设备查找获取对应信息,从侧面进一步提升了任务处理的及时性。此外,本发明提供的分布式调度系统还可以自动将所提取的任务代码分类发放,方便各任务的处理,无需用户进一步关心任务代码如何运行,只需将其上传至本发明的调度系统,即可将所需运行的代码自动分类并调度到合适的机器上运行,进一步实现任务失败自动重试的功能。更多地,当任务执行过程中出现其他问题还可以通过该系统向用户进行报警通知。

基于同一发明构思,本发明实施例还提供了一种分布式调度方法,图4示出了根据本发明一个实施例的分布式调度方法的流程图。如图4所示,该分布式调度方法至少包括步骤s402至步骤s406:

步骤s402、从文件系统中提取待处理任务,并将待处理任务分为多个子任务;

步骤s404、将多个子任务分发至相应的运行单元,并由运行单元执行对应子任务;

步骤s406、记录各子任务的执行过程生成记录信息,并将记录信息存储于存储单元。

在本发明一实施例中,在执行步骤s402之前,还可以由数据开发人员开发代码,并由前端单元根据代码生成对应的待处理任务,进一步将该生成的待处理任务上传至文件系统进行存储。

在本发明一实施例中,执行步骤s404将待处理任务分为多个子任务时,可以结合待处理任务的来源将该待处理任务分为多个子任务,进一步根据各运行单元的运行状态将多个子任务分发至相应的运行单元。由运行单元根据所接收的对应子任务创建相应的运行环境,并在运行环境中执行该子任务。

在本发明一实施例中,上述步骤执行过程中,调度单元还可以监控并记录各运行单元中子任务的执行过程,并在监控到任一子任务执行异常时,自动启动其他运行单元继续执行该子任务。具体地,在记录各子任务的执行过程生成记录信息时,可以从各子任务执行过程中提取各子任务的元信息以及临时信息,其中,在本实施例中,元信息包括子任务标识信息和/或子任务类型,临时信息包括子任务数量和/或执行时间。在获取到元信息以及临时信息之后,可以利用所获取的元信息以及临时信息生成记录信息。

进一步地,在本发明一实施例中,在执行步骤s406时,可以根据记录信息的类型对其进行选择性存储。具体地,若存储单元包括etcd数据库、mysql数据库以及redis数据库,则将元信息存储至etcd数据库和/或mysql数据库中,以及将临时信息存储至redis数据库中。

此外,在上述步骤执行过程中,还可以通过前端单元显示各子任务的执行过程,并监控该显示状态,还可以在显示状态异常时执行报警通知。在另一个可选的实施例中,前端单元还可以接收用户的触发以暂停所执行的子任务或启动所需执行的子任务。

本发明实施例还提供了一种计算机存储介质,计算机存储介质存储有计算机程序代码,当计算机程序代码在计算设备上运行时,导致计算设备执行上文任一实施例中的分布式调度方法。

另外,本发明实施例还提供了一种计算设备,包括处理器;存储有计算机程序代码的存储器;当计算机程序代码被处理器运行时,导致计算设备执行上文任一实施例中的分布式调度方法。

根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:

本发明通过至少一个调度单元、多个运行单元以及至少一个存储单元的分布式架构,由调度单元将所获取的待处理任务分为多个子任务,并由多个运行单元并行执行对应的子任务,解决了现有技术中由中央设备集中处理任务而造成的单点问题,并且,采用多节点并行执行任务的结构,当任务失败或执行设备出现故障,可以由其他设备节点继续执行,实现了任务失败自动多机重试,保证了任务的及时、正确运行。另一方面,本发明通过对将所记录信息进行实时存储,便于后续分析人员或其他处理设备查找获取对应信息,从侧面进一步提升了任务处理的及时性。此外,本发明提供的分布式调度系统还可以自动将所提取的任务代码分类发放,方便各任务的处理,无需用户进一步关心任务代码如何运行,只需将其上传至本发明的调度系统,即可将所需运行的代码自动分类并调度到合适的机器上运行,进一步实现任务失败自动重试的功能。更多地,当任务执行过程中出现其他问题还可以通过该系统向用户进行报警通知。

所属领域的技术人员可以清楚地了解到,上述描述的系统、设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。

另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。

本领域普通技术人员可以理解:集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络等)在运行指令时执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom)、随机存取存储器(ram),磁碟或者光盘等各种可以存储程序代码的介质。

或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。

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

基于本发明的一个方面,提供了a1.一种分布式调度系统,包括调度部、运行部以及存储部,所述调度部包括至少一个调度单元,所述运行部包括多个运行单元,所述存储部包括至少一个存储单元,

所述调度单元,适于从文件系统中提取待处理任务,并将所述待处理任务分为多个子任务;

所述调度单元,还适于将所述多个子任务分发至相应的运行单元,并由所述运行单元执行对应子任务;

所述调度单元,还适于记录各子任务的执行过程生成记录信息,并将所述记录信息存储于存储单元。

a2.根据a1所述的系统,其中,还包括:

前端部,包括至少一个前端单元,所述前端单元适于开发获取代码,并根据所述代码生成对应的待处理任务;

将所述待处理任务上传至文件系统进行存储。

a3.根据a1或a2所述的系统,其中,所述调度单元,还适于:

结合所述待处理任务的来源将所述待处理任务分为多个子任务,并根据各运行单元的运行状态将所述多个子任务分发至相应的运行单元。

a4.根据a1或a2所述的系统,其中,所述运行单元,还适于:

根据所接收的对应子任务创建相应的运行环境,并在所述运行环境中执行该子任务。

a5.根据a4所述的系统,其中,所述调度单元,还适于:

监控并记录各运行单元中子任务的执行过程,并在监控到任一子任务执行异常时,自动启动其他运行单元继续执行该子任务。

a6.根据a5所述的系统,其中,所述调度单元,还适于:

从各子任务的执行过程中提取各子任务的元信息以及临时信息,其中,所述元信息包括子任务标识信息和/或子任务类型,所述临时信息包括子任务数量和/或执行时间;

利用所述元信息以及临时信息生成记录信息。

a7.根据a6所述的系统,其中,所述存储单元,还适于:

若所述存储单元包括etcd数据库、mysql数据库以及redis数据库,则将所述元信息存储至所述etcd数据库和/或mysql数据库中,以及将所述临时信息存储至所述redis数据库中。

a8.根据a7所述的系统,其中,所述前端单元,还适于:

显示各子任务的执行过程,并监控该显示状态,在所述显示状态异常时执行报警通知。

a9.根据a8所述的系统,其中,所述前端单元,还适于:

接收用户的触发以暂停所执行的子任务或启动所需执行的子任务。

基于本发明的另一个方面,提供了b10.一种分布式调度方法,包括:

从文件系统中提取待处理任务,并将所述待处理任务分为多个子任务;

将所述多个子任务分发至相应的运行单元,并由所述运行单元执行对应子任务;

记录各子任务的执行过程生成记录信息,并将所述记录信息存储于存储单元。

b11.根据b10所述的方法,其中,从文件系统中提取待处理任务之前,还包括:

开发获取代码,并根据所述代码生成对应的待处理任务;

将所述待处理任务上传至文件系统进行存储。

b12.根据b10或b11所述的方法,其中,将所述待处理任务分为多个子任务,包括:

结合所述待处理任务的来源将所述待处理任务分为多个子任务。

b13.根据b12所述的方法,其中,将所述多个子任务分发至相应的运行单元,包括:

根据各运行单元的运行状态将所述多个子任务分发至相应的运行单元。

b14.根据b10或b11所述的方法,其中,由所述运行单元执行对应子任务,包括:

由所述运行单元根据所接收的对应子任务创建相应的运行环境,并在所述运行环境中执行该子任务。

b15.根据b14所述的方法,其中,还包括:

监控并记录各运行单元中子任务的执行过程,并在监控到任一子任务执行异常时,自动启动其他运行单元继续执行该子任务。

b16.根据b15所述的方法,其中,记录各子任务的执行过程生成记录信息,包括:

从各子任务执行过程中提取各子任务的元信息以及临时信息,其中,所述元信息包括子任务标识信息和/或子任务类型,所述临时信息包括子任务数量和/或执行时间;

利用所述元信息以及临时信息生成记录信息。

b17.根据b16所述的方法,其中,将所述记录信息存储至存储单元,包括:

若所述存储单元包括etcd数据库、mysql数据库以及redis数据库,则将所述元信息存储至所述etcd数据库和/或mysql数据库中,以及将所述临时信息存储至所述redis数据库中。

b18.根据b17所述的方法,其中,还包括:

显示各子任务的执行过程,并监控该显示状态,在所述显示状态异常时执行报警通知。

b19.根据b18所述的方法,其中,还包括:

接收用户的触发以暂停所执行的子任务或启动所需执行的子任务。

基于本发明的又一个方面,还提供了c20.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算机上运行时,导致所述计算机执行上述b10-b19任一项所述的分布式调度方法。

基于本发明的又一个方面,还提供了d21.一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行权利要求b10-b19任一项所述的分布式调度方法。

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