任务流程的执行方法和装置与流程

文档序号:13164096阅读:319来源:国知局
任务流程的执行方法和装置与流程

本发明涉及云计算的技术领域,尤其是涉及一种任务流程的执行方法和装置。



背景技术:

进入二十世纪以来,随着互联网的普及和移动互联的发展,网络中的数据体量成几何式增长。为了对如此庞大的数据集进行分析及存储,大数据技术应运而生。而由apache基金会主导的项目mesos分布式资源管理框架,又被称为分布式系统的内核,就是为管理计算资源的使用而生的。

在mesos的集群场景下,支持多个分布式框架同时运行。当在mesos环境上面运行多个任务的时候,任务之前不单单有简单的依赖关系(例如,成功继续执行,失败不继续执行),同时任务的执行过程中需要很多的先决条件(例如,文件是否存在,数据库字段是否正确),且任务的某个参数可能需要临时变更,因此,需要一个可以对任务集进行编排及调度的工具。

目前,这种工具为属的编排及调度工具,如oozie和nifi等,此类工具专为大数据任务所订制,内部包含了很多大数据任务相关的参数,方便对大数据任务的编排及调度,但是该类工具的通用性不强,在非大数据任务上面的功能不全面,并且对分布式系统内核的要求比较高,兼容性不强。



技术实现要素:

有鉴于此,本发明的目的在于提供一种任务流程的执行方法和装置,以缓解了现有的任务编排和调度工具通用性较差的技术问题。

第一方面,本发明实施例提供了一种任务流程的执行方法,包括:获取用户发送的第一配置文件和第一任务请求类型,其中,所述第一配置文件为xml格式的配置文件,且所述第一配置文件中包括用户请求操作的目标任务的任务信息;对所述第一配置文件和所述第一任务请求类型进行格式转换处理,处理得到第二配置文件和第二任务请求类型,其中,所述第二配置文件为json格式的文件,且所述第二配置文件和所述第二任务请求类型均能够被作业调度器chronos识别;向所述作业调度器chronos提交所述第二配置文件和所述第二任务请求类型,以使所述作业调度器chronos在mesos集群场景中运行所述目标任务。

进一步地,对所述第一配置文件进行格式转换处理,处理得到第二配置文件包括:在所述第一配置文件中查找先决任务的配置信息,并基于查找到的所述先决任务的配置信息生成所述先决任务的第一json文件;在所述第一配置文件中查找分支任务的配置信息,并基于查找到的所述分支任务的配置信息生成所述分支任务的第二json文件;基于所述第一配置文件中的剩余配置信息生成第三json文件,其中,所述剩余配置信息为所述第一配置文件中除所述查找先决任务的配置信息和所述分支任务的配置信息之外的配置信息;对所述第一json文件,所述第二json文件和所述第三json文件进行合成,得到所述第二配置文件。

进一步地,在所述第一配置文件中查找先决任务的配置信息,并基于查找到的所述先决任务的配置信息生成所述先决任务的第一json文件包括:在所述第一配置文件中查找第一字段;如果在所述第一配置文件中查找到所述第一字段,则生成所述先决任务,其中,所述先决任务的任务内容与所述第一字段的内容相关联;在生成所述先决任务之后,生成所述先决任务的第一json文件。

进一步地,在所述第一配置文件中查找分支任务的配置信息,并基于查找到的所述分支任务的配置信息生成所述分支任务的第二json文件包括:在所述第一配置文件中查找第二字段;如果在所述第一配置文件中查找到所述第二字段,则生成分支判断任务,其中,所述分支判断任务用于在对应的分支任务执行之前,判断所述对应的分支任务是否执行,所述分支判断任务与所述分支任务一一对应;在生成所述分支判断任务之后,生成所述第二json文件。

进一步地,如果所述第一任务请求类型为创建请求,则在获取用户发送的第一配置文件和第一任务请求类型之后,所述方法还包括:在数据库中为任务参数分配目标字段,以在所述目标字段创建字段变量,所述字段变量用于指示所述任务参数;其中,当执行所述目标任务时,则从所述数据库中读取所述字段变量,以获取所述任务参数;当更新所述字段变量时,则向所述数据库发送更新指令,以使所述数据库按照更新指令中更新之后的任务参数对所述字段变量进行更新。

进一步地,在向所述作业调度器chronos提交所述第二配置文件和所述第二任务请求类型,以使所述作业调度器chronos在mesos集群场景中运行所述目标任务之后,所述方法还包括:获取所述目标任务的运行结果;判断所述运行结果是否为运行失败的结果;如果判断出所述运行结果是运行失败的结果,则将运行失败信息写入非关系型数据库的报警频道中;其中,当监控脚本监控到所述运行失败信息时,通过监控服务器将所述运行失败信息发送至监控人员。

进一步地,在获取所述目标任务的运行结果之后,所述方法还包括:将所述运行结果保存至mysql数据库中。

进一步地,在得到第二配置文件和第二任务请求类型之后,所述方法还包括:将所述第二配置文件和所述第二任务请求类型保存至mysql数据库中。

第二方面,本发明实施例还提供一种任务流程的执行装置,包括:获取单元,用于获取用户发送的第一配置文件和第一任务请求类型,其中,所述第一配置文件为xml格式的配置文件,且所述第一配置文件中包括用户请求操作的目标任务的任务信息;转换单元,用于对所述第一配置文件和所述第一任务请求类型进行格式转换处理,处理得到第二配置文件和第二任务请求类型,其中,所述第二配置文件为json格式的文件,且所述第二配置文件和所述第二任务请求类型均能够被作业调度器chronos识别;发送单元,用于向所述作业调度器chronos提交所述第二配置文件和所述第二任务请求类型,以使所述作业调度器chronos在mesos集群场景中运行所述目标任务。

进一步地,所述转换单元包括:第一查找模块,用于在所述第一配置文件中查找先决任务的配置信息,并基于查找到的所述先决任务的配置信息生成所述先决任务的第一json文件;第二查找模块,用于在所述第一配置文件中查找分支任务的配置信息,并基于查找到的所述分支任务的配置信息生成所述分支任务的第二json文件;生成模块,用于基于所述第一配置文件中的剩余配置信息生成第三json文件,其中,所述剩余配置信息为所述第一配置文件中除所述查找先决任务的配置信息和所述分支任务的配置信息之外的配置信息;合成模块,用于对所述第一json文件,所述第二json文件和所述第三json文件进行合成,得到所述第二配置文件。

在本发明实施例中,首先获取用户发送的第一配置文件和第一任务请求类型,其中,第一配置文件为xml格式的配置文件;然后,对第一配置文件和第一任务请求类型进行格式转换处理,得到第二配置文件和第二任务请求类型;最后,向作业调度器提交第二配置文件和第二任务请求类型,以使作业调度器chronos在mesos集群场景中运行所述目标任务。在本发明实施例中,用户只需要提交一个xml格式的配置文件,就能够完成创建一个完整任务的工作,相对于现有的任务编排和调度工具,本发明实施例提供的方法,达到了提高任务编排和调度工具的通用型的目的,进而缓解了现有的任务编排和调度工具通用性较差的技术问题。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

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

图1是根据本发明实施例的一种任务流程的执行方法的流程图;

图2是根据本发明实施例的一种任务执行分支的示意图;

图3是根据本发明实施例的一种任务流程的执行方法的示意图;

图4是根据本发明实施例的一种任务流程的执行装置的示意图;

图5是根据本发明实施例的另一种任务流程的执行装置的示意图;

图6是根据本发明实施例的另一种任务流程的执行装置的示意图。

具体实施方式

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

实施例一:

根据本发明实施例,提供了一种任务流程的执行方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的一种任务流程的执行方法的流程图,如图1所示,该方法包括如下步骤:

步骤s102,获取用户发送的第一配置文件和第一任务请求类型,其中,第一配置文件为xml格式的配置文件,且第一配置文件中包括用户请求操作的目标任务的任务信息;

在本发明实施例中,第一任务请求类型可以为创建任务的请求,可以为删除任务的请求,可以为更改任务的请求,还可以为触发任务的请求。

如果第一任务请求类型为创建任务的请求,那么在第一配置文件中将包含完整的任务信息,该任务信息为待创建任务的信息。

步骤s104,对第一配置文件和第一任务请求类型进行格式转换处理,处理得到第二配置文件和第二任务请求类型,其中,第二配置文件为json格式的文件,且第二配置文件和第二任务请求类型均能够被作业调度器chronos识别;

步骤s106,向作业调度器chronos提交第二配置文件和第二任务请求类型,以使作业调度器chronos在mesos集群场景中运行目标任务。

在本发明实施例中,首先获取用户发送的第一配置文件和第一任务请求类型,其中,第一配置文件为xml格式的配置文件;然后,对第一配置文件和第一任务请求类型进行格式转换处理,得到第二配置文件和第二任务请求类型;最后,向作业调度器提交第二配置文件和第二任务请求类型,以使作业调度器chronos在mesos集群场景中运行目标任务。在本发明实施例中,用户只需要提交一个xml格式的配置文件,就能够完成创建一个完整任务的工作,相对于现有的任务编排和调度工具,本发明实施例提供的方法,达到了提高任务编排和调度工具的通用型的目的,进而缓解了现有的任务编排和调度工具通用性较差的技术问题。

在本发明实施例的一个可选实施方式中,上述步骤s104,对第一配置文件进行格式转换处理,处理得到第二配置文件包括如下步骤:

步骤s1041,在第一配置文件中查找先决任务的配置信息,并基于查找到的先决任务的配置信息生成先决任务的第一json文件;

步骤s1042,在第一配置文件中查找分支任务的配置信息,并基于查找到的分支任务的配置信息生成分支任务的第二json文件;

步骤s1043,基于第一配置文件中的剩余配置信息生成第三json文件,其中,剩余配置信息为第一配置文件中除查找先决任务的配置信息和分支任务的配置信息之外的配置信息;

步骤s1044,对第一json文件,第二json文件和第三json文件进行合成,得到第二配置文件。

具体地,在本发明实施例中,如果在第一配置文件中,存在先决任务,那么就需要生成先决任务的json文件(即,上述第一json文件);如果在第一配置文件中,有分支任务的判断,就需要生成分支任务的json文件(即,上述第二json文件);如果没有特殊的配置,就生成普通json文件(即,上述第三json文件)。需要说明的是,特殊的配置即为上述分支任务的配置信息和先决任务的配置信息。

最后,通过将上述第一json文件,第二json文件和第三json文件进行合并,得到第二配置文件。在合并得到第二配置文件之后,就可以将第二配置文件和第二任务请求类型一起,提交给作业调度器chronos进行执行。

相对于传统的oozie编排和调度工具,在本发明实施例提供的方法中,以chronos为基础带来了两个好处。首先,是chronos的自身属性所决定的,其本身支持mesos分布式资源管理框架,而oozie无法运行在mesos环境下。其次,是在对任务解析的时候,oozie必须把任务转化为mapreduce任务进行解析,而chronos可以直接执行任务,少了一次的任务转换的消耗。

在另一个可选的实施方式中,上述步骤s1041,即在第一配置文件中查找先决任务的配置信息,并基于查找到的先决任务的配置信息生成先决任务的第一json文件包括如下步骤:

步骤s11,在第一配置文件中查找第一字段;

步骤s12,如果在第一配置文件中查找到第一字段,则生成先决任务,其中,先决任务的任务内容与第一字段的内容相关联;

步骤s13,在生成先决任务之后,生成先决任务的第一json文件。

在本发明实施例中,在对第一配置文件进行转换,得到第二配置文件的过程中,对第一配置文件中的字段进行遍历,然后,根据第一配置文件中相应的字段生成json文件。但是,在第一配置文件中包含一些特殊的字段,例如,(pre)字段和(branch)字段,其中,(pre)字段即为上述第一字段,(branch)字段即为下述第二字段。

当在第一配置文件查找到第一字段时,就要生成先决任务。也就是说在需要执行的任务之前,再生成一个先决任务。这个先决任务的任务内容可能是判断某个文件是否存在,也可能判断某个数据库字段是否正确。具体任务内容是根据(pre)字段当中的内容确定的。在生成先决任务之后,同时生成这个先决任务的json配置文件(即,第一json文件)。

需要说明的是,通过上述步骤s11至步骤s13所描述的处理方式,本发明实施例提供的方法达到了第一个目的,即:任务执行前的先决条件的判断。如果用户在某个任务执行之前,需要进行某个判断,在chronos中,用户需要为这个判断提交一个任务,这个任务的执行内容就是这个判断,这种增加判断的方式非常繁琐。但是,在本发明实施例所提供的方法中,用户只需要提交一条特定的xml配置(即,上述第一配置文件),就可以完成创建一个完整任务的工作。

在另一个可选的实施方式中,上述步骤s1041,即在第一配置文件中查找分支任务的配置信息,并基于查找到的分支任务的配置信息生成分支任务的第二json文件包括如下步骤:

步骤s21,在第一配置文件中查找第二字段;

步骤s22,如果在第一配置文件中查找到第二字段,则生成分支判断任务,其中,分支判断任务用于在对应的分支任务执行之前,判断对应的分支任务是否执行,分支判断任务与分支任务一一对应;

步骤s23,在生成分支判断任务之后,生成第二json文件。

在本发明实施例中,首先根据第一配置文件中的字段内容进行判断是否存在第二字段(即,(branch)字段)。如果判断出在第一配置文件的字段内容当中包含(branch)字段,就要生成分支判断任务。也就是说,在每一个分支的任务之前,需要生成一个分支判断任务,判断当前分支任务是否执行。

具体地,分支判断任务生成的判断,需要在(branch)字段的(com)中进行设置,有几个分支,就要根据不同的分支分别设置判断条件,进而,生成不同的分支判断任务。最后生成所有分支任务的json文件(即,第二json文件)。

如果在对第一配置文件中的字段进行遍历时,不属于第一字段,也不属于第二字段,此时,需要根据相应的字段生成相应的json文件(即,第三json文件),不需要特殊的指定。只需要根据第一配置文件中相关字段,对应到第三json文件对应的字段即可。

当第一json文件,第二json文件和第三json文件生成之后,需要对所有的json文件进行整合,生成完整的json文件(即,上述第二配置文件),用于在chronos上面进行任务的创建。

需要说明的是,通过上述步骤s21至步骤s23所描述的处理方式,本发明实施例所提供的方法达到了第二个目的,即:任务执行分支的判断。在chronos中,只支持简单的依赖,如图2所示。判断步骤p201为真,则执行b和c,判断为假,则不执行b和c。但是很多时候需要分支判断的效果,此时如果用户自己去增加p202和p203的判断,但是,该操作过程过于繁琐。在本发明实施例所提供的方法中,用户只需要提交一条特定的xml配置(即,第二配置文件),就可以完成创建一个完整任务的工作。

在本发明实施例的另一个可选实施方式中,如果第一任务请求类型为创建请求,则在获取用户发送的第一配置文件和第一任务请求类型之后,还可以在数据库中为任务参数分配目标字段,以在目标字段创建字段变量,字段变量用于指示任务参数。

其中,当执行目标任务时,则从数据库中读取字段变量,以获取任务参数;当更新字段变量时,则向数据库发送更新指令,以使数据库按照更新指令中更新之后的任务参数对字段变量进行更新。

在执行大数据任务的时候,经常会遇到任务失败的场景,当任务失败后,需要从新执行之前的任务,可是这个时候,之前的参数可能就无效了,需要人工指定参数,这个时候就需要任务动态参数的使用。

在使用动态参数时,在获取用户发送的第一配置文件和第一任务请求类型之后,且在创建目标任务的时候,可以提前在数据库中指定动态参数所对应的数据库字段。在创建目标任务的时候,就会在数据库当中创建相应的字段变量,以获取任务参数;在用户执行目标任务的时候,需要从数据库读出字段变量,再执行任务;当更新字段变量时,则向数据库发送更新指令,以使数据库按照更新指令中更新之后的任务参数对字段变量进行更新,通过上述设置方式就使得任务参数达到了动态参数的效果。

需要说明的是,在本发明实施例中,通过该设置方式达到了第三个目的,即:任务执行过程中参数的传递。在某些情况下,需要手动执行某些计划任务,并且在执行的时候,需要变更任务的某些参数,在传统的情况下,是无法满足的。但是,在本发明实施例中,通过将任务参数赋予数据库的某个字段内容(即,字段变量),当需要变更参数的时候,直接更改数据库内容即可,以实现动态参数。

在本发明实施例的另一个可选实施方式中,在向作业调度器chronos提交第二配置文件和第二任务请求类型,以使作业调度器chronos在mesos集群场景中运行目标任务之后,该方法还包括如下步骤:

步骤s108,获取目标任务的运行结果;

步骤s110,判断运行结果是否为运行失败的结果;

步骤s112,如果判断出运行结果是运行失败的结果,则将运行失败信息写入非关系型数据库的报警频道中;其中,当监控脚本监控到运行失败信息时,通过监控服务器将运行失败信息发送至监控人员。

具体地,非关系型数据库redis自身提供了订阅发布的功能,在redis当中,设置了一个报警频道,当有任务失败的时候,运行失败信息就会被写入到这个报警频道当中。同时,本发明还部署了一个监控脚本,该脚本每隔两分钟中就会检查报警频道里面的运行失败信息。当监控到运行失败信息时,通过监控服务器nagios等监控工具,将运行失败信息发送给相关的人员。

对比oozie编排和调度工具,其并没有提供此功能,而本发明实施例中,通过redis非关系型数据库的订阅发布功能的使用,并结合nagios,可以在任务失败后两分钟内将失败任务发送给nagios监控,并进行相关人员的报警。

需要说明的是,在本发明实施例中,通过该设置方式达到了第四个目的,即:结合监控服务器等监控工具,对失败任务建立报警机制。对于那些执行失败的任务,chronos只提供简单的邮件报警是远远不够的,通过将任务执行结果发布到redis数据库当中,结合当前流行的报警软件,就可以进行全方位的报警设置。

在本发明实施例中,在获取目标任务的运行结果之后,还可以将运行结果保存至mysql数据库中。

在本发明实施例中,在得到第二配置文件和第二任务请求类型之后,还可以将第二配置文件和第二任务请求类型保存至mysql数据库中。

需要说明的是,在本发明实施例中,达到第五个目的,即:对历史任务执行状态信息的保存。具体地,体现在将运行结果保存至mysql数据库中,以及将第二配置文件和第二任务请求类型保存至mysql数据库中。由于chronos并没有对历史任务的状态提供查询的功能。也就是说,多次执行任务的情况下,新状态会覆盖老的状态。因此,在本发明实施例中,通过对mysql数据库的引用,达到了保存历史执行状态的功能。

综上,在现有技术中,目前业界最常用的任务执行流程进行编排及调度的方法为oozie,即把多个map/reduce作业组合到一个逻辑工作单元中,从而完成更大型的任务。本发明实施例提供地的方法与oozie的最大区别为:

第一、在本发明实施例提供的方法应用于mesos集群场景下;

第二、在本发明实施例提供的方法直接使用chronos进行一次调度,而不同于oozie需要使用mapreduce(一种编程模型)进行二次调度才能执行任务;

第三、在本发明实施例提供的方法结合了报警频道进行使用,当遇到异常的时候,可以及时地通过多种报警方式进行预警。

采用本发明实施例所提供的方法,大大降低了任务创建的复杂度,并且可以满足很多专项需求,类似于之前提到的目的之一/目的之二/目的之三就是大数据任务经常会遇到的问题,与此同时,由于底层保留了chronos的主体功能,使得整体架构的兼容和稳定性又得到了保障。由于引入了数据库机制,保证了历史数据的可用,可查,使整体功能更加完善。

综上各实施例提供的任务流程的执行方法,为了直观理解上述过程,以图3所示的任务流程的执行方法的示意图为例进行说明,该方法主要包括:

获取用户提交的任务信息,其中,任务信息中包括xml格式的配置文件(即,上述第一配置文件)和请求类型(即,上述第一任务请求类型);根据任务信息生成chronos能够识别的任务信息,其中,能够识别的任务信息中包括json格式的文件(即,上述第二配置文件)和请求类型(即,上述第二任务请求类型);作业调度器chronos在mesos集群场景中运行目标任务;将chronos能够识别的任务信息写入mysql数据库中,以及将目标任务的运行结果写入mysql数据库中;将运行失败信息写入非关系型数据库的报警频道中。具体实现过程如上,这里不再赘述。

实施例二:

本发明实施例还提供了一种任务流程的执行装置,该任务流程的执行装置主要用于执行本发明实施例上述内容所提供的任务流程的执行方法,以下对本发明实施例提供的任务流程的执行装置做具体介绍。

图4是根据本发明实施例的一种任务流程的执行装置的示意图,如图4所示,该任务流程的执行装置主要包括:第一获取单元41,转换单元42和发送单元43,其中:

第一获取单元41,用于获取用户发送的第一配置文件和第一任务请求类型,其中,第一配置文件为xml格式的配置文件,且第一配置文件中包括用户请求操作的目标任务的任务信息;

转换单元42,用于对第一配置文件和第一任务请求类型进行格式转换处理,处理得到第二配置文件和第二任务请求类型,其中,第二配置文件为json格式的文件,且第二配置文件和第二任务请求类型均能够被作业调度器chronos识别;

发送单元43,用于向作业调度器chronos提交第二配置文件和第二任务请求类型,以使作业调度器chronos在mesos集群场景中运行目标任务。

在本发明实施例中,首先获取用户发送的第一配置文件和第一任务请求类型,其中,第一配置文件为xml格式的配置文件;然后,对第一配置文件和第一任务请求类型进行格式转换处理,得到第二配置文件和第二任务请求类型;最后,向作业调度器提交第二配置文件和第二任务请求类型,以使作业调度器chronos在mesos集群场景中运行所述目标任务。在本发明实施例中,用户只需要提交一个xml格式的配置文件,就能够完成创建一个完整任务的工作,相对于现有的任务编排和调度工具,本发明实施例提供的方法,达到了提高任务编排和调度工具的通用型的目的,进而缓解了现有的任务编排和调度工具通用性较差的技术问题。

可选地,转换单元包括:第一查找模块,用于在第一配置文件中查找先决任务的配置信息,并基于查找到的先决任务的配置信息生成先决任务的第一json文件;第二查找模块,用于在第一配置文件中查找分支任务的配置信息,并基于查找到的分支任务的配置信息生成分支任务的第二json文件;生成模块,用于基于第一配置文件中的剩余配置信息生成第三json文件,其中,剩余配置信息为第一配置文件中除查找先决任务的配置信息和分支任务的配置信息之外的配置信息;合成模块,用于对第一json文件,第二json文件和第三json文件进行合成,得到第二配置文件。

可选地,第一查找模块用于:在第一配置文件中查找第一字段;如果在第一配置文件中查找到第一字段,则生成先决任务,其中,先决任务的任务内容与第一字段的内容相关联;在生成先决任务之后,生成先决任务的第一json文件。

可选地,第二查找模块用于:在第一配置文件中查找第二字段;如果在第一配置文件中查找到第二字段,则生成分支判断任务,其中,分支判断任务用于在对应的分支任务执行之前,判断对应的分支任务是否执行,分支判断任务与分支任务一一对应;在生成分支判断任务之后,生成第二json文件。

可选地,该装置还包括:分配单元,用于在第一任务请求类型为创建请求的情况下,且在获取用户发送的第一配置文件和第一任务请求类型之后,在数据库中为任务参数分配目标字段,以在目标字段创建字段变量,字段变量用于指示任务参数;其中,当执行目标任务时,则从数据库中读取字段变量,以获取任务参数;当更新字段变量时,则向数据库发送更新指令,以使数据库按照更新指令中更新之后的任务参数对字段变量进行更新。

可选地,该装置还包括:第二获取单元,用于在向作业调度器chronos提交第二配置文件和第二任务请求类型,以使作业调度器chronos在mesos集群场景中运行目标任务之后,获取目标任务的运行结果;判断单元,用于判断运行结果是否为运行失败的结果;写入单元,用于在判断出运行结果是运行失败的结果的情况下,将运行失败信息写入非关系型数据库的报警频道中;其中,当监控脚本监控到运行失败信息时,通过监控服务器将运行失败信息发送至监控人员。

可选地,该装置还包括:第一保存单元,用于在获取目标任务的运行结果之后,将运行结果保存至mysql数据库中。

可选地,该装置还包括:第二保存单元,用于在得到第二配置文件和第二任务请求类型之后,将第二配置文件和第二任务请求类型保存至mysql数据库中。

实施例三:

图5是根据本发明实施例的另一种任务流程的执行装置的示意图,如图5所示,该任务流程的执行装置主要包括:xml解析模块51,先决任务生成模块52,分支任务判断生成模块53,普通任务生成模块54,json文件合成模块55和chronos任务提交模块56。

xml解析模块51首先需要解析用户提交任务信息,其中,任务信息中包括xml格式的配置文件(即,上述第一配置文件)和请求类型(即,上述第一任务请求类型。由于所有任务在最终提交给chronos之前,使用的提交任务文件格式都是json,所以首先需要对xml格式的配置文件进行格式转化。转换的相关方式为根据xml格式的配置文件中相应字段,对应到json格式的配置文件中的对应字段,当遇到特殊字段的时候,如(pre)字段,将任务转交给先决任务生成模块52,如(branch)字段,将任务转交给分支任务判断生成模块53。具体实现过程如上,这里不再赘述。

先决任务生成模块52用于根据xml格式的配置文件的字段内容判断,如果字段内容当中包含(pre)字段,就要生成先决任务。也就是说在需要执行的任务之前,再生成一个先决任务。这个先决任务的任务内容可能是判断某个文件是否存在,也可能判断某个数据库字段是否正确。具体任务内容也是根据(pre)字段当中的内容确定的。在生成先决任务之后,同时生成这个先决任务的json配置文件(即,第一json文件)。

分支任务判断生成模块53用于根据xml格式的配置文件中的字段内容进行判断是否存在第二字段(即,(branch)字段)。如果判断出在第一配置文件的字段内容当中包含(branch)字段,就要生成分支判断任务。也就是说,在每一个分支的任务之前,需要生成一个分支判断任务,判断当前分支任务是否执行。具体地,分支判断任务生成的判断,需要在(branch)字段的(com)中进行设置,有几个分支,就要根据不同的分支分别设置判断条件,进而,生成不同的分支判断任务。最后生成所有分支任务的json文件(即,第二json文件)。

普通任务生成模块54,如果在对xml格式的配置文件中的字段进行遍历时,不属于(pre)字段,也不属于(branch)字段,此时,需要根据相应的字段生成相应的json文件(即,第三json文件),不需要特殊的指定。只需要根据第一配置文件中相关字段,对应到第三json文件对应的字段即可。

json文件合成模块55用于在当所有模块的json文件生成完毕之后,需要对所有json文件进行整合,生成完整的json文件,用于在chronos上面进行任务创建。具体地,当第一json文件,第二json文件和第三json文件生成之后,需要对所有的json文件进行整合,生成完整的json文件(即,上述第二配置文件),用于在chronos上面进行任务的创建。

chronos任务提交模块56:当用户在提交xml格式的配置文件(即,上述第一配置文件)的同时,需要提交任务的请求类型(即,上述第一任务请求类型),其中,请求类型包括:如创建,删除,更改,触发任务等。如果用户提交的为创建任务,chronos任务提交模块56会连同创建的json文件(第二配置文件)和请求类型(第二任务请求类型),提交给chronos的restapi接口,通过restapi接口创建任务。如果请求为其他类型,chronos会直接提交任务,而跳过xml解析模块。

图6是根据本发明实施例的另一种任务流程的执行装置的示意图,如图6所示,该任务流程的执行装置主要包括:chronos执行模块61,mysql连接模块62,获取结果模块63,redis连接模块64和运行结果显示模块65。

需要说明的是,chronos任务提交模块56,除了具有上述介绍的功能之外,同时还具有将创建任务(也即,上述目标任务)的任务信息写入mysql数据库的功能。在创建任务的时候,chronos任务提交模块56会通过mysql连接模块62,将任务信息(即,第二配置文件和第二任务类型请求)写入到mysql数据库当中。获取结果模块63用于在chronos任务执行结束之后,将运行结果写入到mysql数据库当中,同时,还会将数据写入到redis数据库之中,用于报警使用。另redis连接模块64和运行结果显示模块65为连接数据库的两个模块,用于和底层数据库进行数据传输之用。

当用户将第二配置文件和第二任务请求类型提交给chronos任务提交模块56之后,chronos任务提交模块56会进行两步操作。首先,会提交任务给chronos执行模块,如果任务提交成功,会将任务信息写入到mysql数据库当中,并会纪录任务创建时间,如果任务提交失败,则不会将任务信息录入数据库中。

chronos执行模块61为chronos自身模块,不做详细说明。

获取结果模块63为对chronos进行了二次开发,获取结果模块63继承了chronos获取任务结果的方法,并将获取到的数据通过数据库的连接模块(例如,mysql连接模块62和redis连接模块64)写入到对应的数据库当中。

运行结果显示模块65为任务结果及信息的展示。当任务结束后,用户可以通过运行结果显示模块65,提交任务名,以获取任务的运行结果。

redis连接模块64为连接redis数据库的模块,非关系型数据库redis自身提供了订阅发布的功能,在redis当中,设置了一个报警频道,当有任务失败的时候,运行失败信息就会被写入到这个报警频道当中。同时,本发明还部署了一个监控脚本,该脚本每隔两分钟中就会检查报警频道里面的运行失败信息。当监控到运行失败信息时,通过监控服务器nagios等监控工具,将运行失败信息发送给相关的人员。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

本发明实施例所提供的进行任务流程的执行方法和装置的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

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

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

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

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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