运行引擎的切换方法及装置与流程

文档序号:26138963发布日期:2021-08-03 14:22阅读:105来源:国知局
运行引擎的切换方法及装置与流程

本发明涉及大数据技术领域,特别涉及一种运行引擎的切换方法及装置。



背景技术:

在大数据系统中,大数据作业的程序代码一般是由开发人员调用运行引擎spark或hive的接口,基于java或scala开发语言直接在spark或hive上编写开发的,如果遇到运行引擎例如hive组件故障时,那么运行在hive上的程序就将无法运行,导致程序代码的调用效率低,直接影响业务功能正常运行。

针对上述问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供一种运行引擎的切换方法,用以实现运行引擎故障时的灵活切换,提高程序代码的调用效率,该方法包括:

根据业务需求,确定业务需求相关的程序代码;

配置业务需求相关的程序代码的调用顺序,以及程序代码对应的运行引擎;

向程序代码对应的运行引擎发起连接请求,在程序代码对应的运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在程序代码对应的运行引擎上调用业务需求相关的程序代码;

在程序代码对应的运行引擎连接失败时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在该任意运行引擎上调用业务需求相关的程序代码。

本发明实施例提供一种运行引擎的切换装置,用以实现运行引擎故障时的灵活切换,提高程序代码的调用效率,该装置包括:

程序代码组装模块,用于根据业务需求,确定业务需求相关的程序代码;

程序代码配置模块,用于配置业务需求相关的程序代码的调用顺序,以及程序代码对应的运行引擎;

运行引擎检测模块,用于向程序代码对应的运行引擎发起连接请求,在程序代码对应的运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在程序代码对应的运行引擎上调用业务需求相关的程序代码;

运行引擎切换模块,用于在程序代码对应的运行引擎连接失败时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在该任意运行引擎上调用业务需求相关的程序代码。

本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述运行引擎的切换方法。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有执行上述运行引擎的切换方法。

本发明实施例通过:根据业务需求,确定业务需求相关的程序代码;配置业务需求相关的程序代码的调用顺序,以及程序代码对应的运行引擎;向程序代码对应的运行引擎发起连接请求,在程序代码对应的运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在程序代码对应的运行引擎上调用业务需求相关的程序代码;在程序代码对应的运行引擎连接失败时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在该任意运行引擎上调用业务需求相关的程序代码,本发明能够使得程序代码独立于运行引擎,在调用程序代码之前,通过预先检测和切换运行引擎,能够保障在正常的运行引擎上调用程序代码,实现了运行引擎故障时的灵活切换,提高了程序代码的调用效率。

附图说明

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

图1为本发明实施例中运行引擎的切换方法流程的示意图;

图2为图1中步骤101具体流程的示意图;

图3为本发明实施例中运行引擎的切换方法另一流程的示意图;

图4为本发明实施例中运行引擎的切换装置结构的示意图;

图5为程序代码组装模块具体结构的示意图;

图6为本发明实施例中运行引擎的切换装置另一结构的示意图。

具体实施方式

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

本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、方法或计算机程序产品。因此,本发明公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

本发明实施例提供一种运行引擎的切换方法,用以实现运行引擎故障时的灵活切换,提高程序代码的调用效率,图1为本发明实施例中运行引擎的切换方法流程的示意图,如图1所示,该方法包括:

步骤101:根据业务需求,确定业务需求相关的程序代码;

步骤102:配置业务需求相关的程序代码的调用顺序,以及程序代码对应的运行引擎;

步骤103:向程序代码对应的运行引擎发起连接请求,在程序代码对应的运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在程序代码对应的运行引擎上调用业务需求相关的程序代码;

步骤104:在程序代码对应的运行引擎连接失败时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在该任意运行引擎上调用业务需求相关的程序代码。

如图1所示,本发明实施例通过:根据业务需求,确定业务需求相关的程序代码;配置业务需求相关的程序代码的调用顺序,以及程序代码对应的运行引擎;向程序代码对应的运行引擎发起连接请求,在程序代码对应的运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在程序代码对应的运行引擎上调用业务需求相关的程序代码;在程序代码对应的运行引擎连接失败时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在该任意运行引擎上调用业务需求相关的程序代码,本发明能够使得程序代码独立于运行引擎,在调用程序代码之前,通过预先检测和切换运行引擎,能够保障在正常的运行引擎上调用程序代码,实现了运行引擎故障时的灵活切换,提高了程序代码的调用效率。

图2为图1中步骤101具体流程的示意图,如图2所示,在一个实施例中,步骤101中,根据业务需求,确定业务需求相关的程序代码,可以包括:

步骤201:根据业务需求,查询业务需求相关的元数据;

步骤202:根据元数据,确定业务需求相关的数据表的映射关系;

步骤203:根据业务需求相关的数据表的映射关系,确定业务需求相关的程序代码。

在一个实施例中,在步骤201根据业务需求,查询业务需求相关的元数据之前,还包括:

根据各个数据表的元数据,建立元数据库;

其中,元数据至少包括:数据表名、数据表中各个字段的字段名、字段类型、字段长度和字段取值范围;

步骤201中,根据业务需求,查询业务需求相关的元数据,包括:

根据业务需求,从元数据库中查询业务需求相关的元数据。

具体实施时,步骤101中,可以对大数据系统中的各个数据表的元数据进行管理,元数据例如可以包括:表中文名、表英文名、字段中文名、字段英文名、字段类型、字段长度、字段取值范围,根据各个数据表的元数据,建立元数据库,可以使得所有表的定义都集中在一处,都存储于同一个元数据库中,然后,在接收到业务请求时,可以根据业务需求,从元数据库中查询业务需求相关的元数据,接着,根据业务需求相关的元数据,基于sql、java等开发语言预先建立业务需求相关的数据表的映射关系,数据映射关系例如可以是:数据表1为客户表,存储了客户的基本信息,数据表2为账户表,存储了客户的账户信息,数据表1和数据表2中都包含客户id,则数据表1和数据表2可以通过客户id进行映射,建立好业务需求相关的数据表的映射关系后可以存储于mysql等关系型数据库中,用于后续程序代码的动态组装,最后,可以从mysql数据库中查询业务需求相关的数据表的映射关系,按照数据表的映射关系的映射顺序和逻辑关系动态组装程序代码,形成可运行的程序代码,这样一方面实现了程序代码的自动组装,另一方面能够将程序代码在系统层面组装,使得程序代码独立于运行引擎,提高程序代码的灵活性。

步骤102中,可以将程序代码按照具体的作业要求进行配置,形成可直接供调度器执行的作业,具体的,可以配置业务需求相关的程序代码的调用顺序,以及程序代码对应的运行引擎,运行引擎可以包括hive或spark,还可以包括其他类型的运行引擎,本发明不以此为限定。

为了尽可能的避免调用程序代码时因运行引擎出现故障,影响程序代码的调用进程,本发明实施例在调用程序代码之前,首先可以对程序代码对应的运行引擎进行故障检测,具体的,步骤103中,可以向程序代码对应的运行引擎(hive或spark)发起连接请求,在程序代码对应的运行引擎连接成功时,说明程序代码对应的运行引擎正常运行,则可以根据业务需求相关的程序代码的调用顺序,在程序代码对应的运行引擎上调用业务需求相关的程序代码。

在程序代码对应的运行引擎连接失败时,说明程序代码对应的运行引擎存在故障,此时需要向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,进行运行引擎的切换,将程序代码的运行引擎切换为该连接成功的任意运行引擎,然后,根据业务需求相关的程序代码的调用顺序,在该任意运行引擎上调用业务需求相关的程序代码,这样通过调用程序代码前的运行引擎故障检测和切换,能够保障在正常的运行引擎上调用程序代码,实现了运行引擎故障时的灵活切换,提高了程序代码的调用效率。

图3为本发明实施例中运行引擎的切换方法另一流程的示意图,如图3所示,在一个实施例中,调用业务需求相关的程序代码之后,还包括:

步骤105:在程序代码所在的运行引擎故障时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,在该任意运行引擎上调用业务需求相关的程序代码。

如图3所示,在一个实施例中,该方法还包括:

步骤106:在与系统内的全部运行引擎连接失败时,返回业务需求相关的程序代码调用失败的信息。

具体实施时,在程序代码对应的运行引擎连接失败时,向系统内的其他运行引擎发起连接请求,若与系统内的全部运行引擎连接失败,表明此时系统的状态无法调用程序,则返回业务需求相关的程序代码调用失败的信息,工作人员可以进行后续的修复。

在调用业务需求相关的程序代码之后,也存在程序代码所在的运行引擎故障的情况,此时,同样可以向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,在该任意运行引擎上调用业务需求相关的程序代码,在调用业务需求相关的程序代码的过程中可以随时切换运行引擎,并且切换运行引擎不会影响作业的正常运行,因其切换延迟时间可以忽略不计。

应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

基于同一发明构思,本发明实施例中还提供了一种运行引擎的切换装置,如下面的实施例。由于运行引擎的切换装置解决问题的原理与运行引擎的切换方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

本发明实施例提供一种运行引擎的切换装置,用以实现运行引擎故障时的灵活切换,提高程序代码的调用效率,图4为本发明实施例中运行引擎的切换装置结构的示意图,如图4所示,该装置包括:

程序代码组装模块01,用于根据业务需求,确定业务需求相关的程序代码;

程序代码配置模块02,用于配置业务需求相关的程序代码的调用顺序,以及程序代码对应的运行引擎;

运行引擎检测模块03,用于向程序代码对应的运行引擎发起连接请求,在程序代码对应的运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在程序代码对应的运行引擎上调用业务需求相关的程序代码;

运行引擎切换模块04,用于在程序代码对应的运行引擎连接失败时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在该任意运行引擎上调用业务需求相关的程序代码。

图5为程序代码组装模块具体结构的示意图,如图5所示,在一个实施例中,程序代码组装模块01,包括:

元数据查询单元011,用于根据业务需求,查询业务需求相关的元数据;

数据映射单元012,用于根据元数据,确定业务需求相关的数据表的映射关系;

程序代码组装单元013,用于根据业务需求相关的数据表的映射关系,确定业务需求相关的程序代码。

图6为本发明实施例中运行引擎的切换装置另一结构的示意图,如图6所示,在一个实施例中,该装置还包括:元数据库建立模块05,用于:

在根据业务需求,查询业务需求相关的元数据之前,根据各个数据表的元数据,建立元数据库;

其中,元数据至少包括:数据表名、数据表中各个字段的字段名、字段类型、字段长度和字段取值范围;

元数据查询单,011,具体用于:

根据业务需求,从元数据库中查询业务需求相关的元数据。

如图6所示,在一个实施例中,该装置还包括:调用失败返回模块06,用于:

在与系统内的全部运行引擎连接失败时,返回业务需求相关的程序代码调用失败的信息。

如图6所示,在一个实施例中,该装置还包括:调用时故障切换模块07,用于:

在程序代码对应的运行引擎上调用业务需求相关的程序代码后,还包括:

调用业务需求相关的程序代码之后,在程序代码所在的运行引擎故障时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,在该任意运行引擎上调用业务需求相关的程序代码。

本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述运行引擎的切换方法。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有执行上述运行引擎的切换方法。

下面举一个具体的例子,以便于理解本发明如何实施。

第一步:启动大数据系统,大数据系统中的各个数据表的元数据进行管理,根据各个数据表的元数据,建立元数据库;

第二步:在接收到业务请求时,根据业务需求,从元数据库中查询业务需求相关的元数据;

第三步:根据业务需求相关的元数据,基于sql、java等开发语言建立业务需求相关的数据表的映射关系,存储于mysql关系型数据库中;

第四步:从mysql数据库中查询业务需求相关的数据表的映射关系,按照数据表的映射关系的映射顺序和逻辑关系动态组装程序代码,形成可运行的程序代码;

第五步:配置业务需求相关的程序代码的调用顺序,以及程序代码对应的运行引擎(hive或spark);

第六步:对程序代码对应的运行引擎进行故障检测,向程序代码对应的运行引擎(hive或spark)发起连接请求,在程序代码对应的运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在程序代码对应的运行引擎上调用业务需求相关的程序代码;

第七步:在程序代码对应的运行引擎连接失败时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,进行运行引擎的切换,将程序代码的运行引擎切换为该连接成功的任意运行引擎,根据业务需求相关的程序代码的调用顺序,在该任意运行引擎上调用业务需求相关的程序代码;

第八步:若与系统内的全部运行引擎连接失败,返回业务需求相关的程序代码调用失败的信息,工作人员进行运行引擎的修复;

第九步:在调用业务需求相关的程序代码之后,程序代码所在的运行引擎故障时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,在该任意运行引擎上调用业务需求相关的程序代码。

综上所述,本发明实施例通过:根据业务需求,确定业务需求相关的程序代码;配置业务需求相关的程序代码的调用顺序,以及程序代码对应的运行引擎;向程序代码对应的运行引擎发起连接请求,在程序代码对应的运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在程序代码对应的运行引擎上调用业务需求相关的程序代码;在程序代码对应的运行引擎连接失败时,向系统内的其他运行引擎发起连接请求,在系统内的任意运行引擎连接成功时,根据业务需求相关的程序代码的调用顺序,在该任意运行引擎上调用业务需求相关的程序代码,本发明能够使得程序代码独立于运行引擎,在调用程序代码之前,通过预先检测和切换运行引擎,能够保障在正常的运行引擎上调用程序代码,实现了运行引擎故障时的灵活切换,提高了程序代码的调用效率。

此外,本发明实施例通过将程序代码独立于运行引擎,使得程序代码不用只依赖于一个具体的运行引擎(hive或spark),可以在多个运行引擎之间按需切换,也不用等待某一个运行引擎故障修复好了之后才能继续运行程序,一个运行引擎故障后其他运行引擎也可以很快切换顶替,并且切换运行引擎不会影响作业的正常运行,因其切换延迟时间可以忽略不计。

虽然本发明提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。

本领域技术人员应明白,本说明书的实施例可提供为方法、装置(系统)或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。

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

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