CN114020446A - 一种跨多引擎的路由处理方法、装置、设备及存储介质 - Google Patents

一种跨多引擎的路由处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114020446A
CN114020446A CN202111121165.0A CN202111121165A CN114020446A CN 114020446 A CN114020446 A CN 114020446A CN 202111121165 A CN202111121165 A CN 202111121165A CN 114020446 A CN114020446 A CN 114020446A
Authority
CN
China
Prior art keywords
analysis task
engine
task request
request
analysis
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111121165.0A
Other languages
English (en)
Inventor
唐云
徐帅
张志彪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bigo Technology Pte Ltd
Original Assignee
Bigo Technology Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bigo Technology Pte Ltd filed Critical Bigo Technology Pte Ltd
Priority to CN202111121165.0A priority Critical patent/CN114020446A/zh
Publication of CN114020446A publication Critical patent/CN114020446A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种跨多引擎的路由处理方法、装置、设备及存储介质。本申请实施例提供的技术方案通过接收客户端发出的分析任务请求,并基于设定的引擎选择策略确定用于执行分析任务的目标引擎,并向该目标引擎发送分析任务请求,由该目标引擎对分析任务请求进行响应,在生成分析任务请求时,不需要先确定用于执行任务的目标引擎,客户端可基于设定的路由服务协议生成分析任务请求,不需要针对不同的计算引擎的语法协议生成分析任务请求,实现跨多引擎的数据分析处理下,统一的计算引擎访问方式以及计算引擎的合理分配,实现了计算引擎入口的统一,减少了针对不同计算引擎的重复开发,提高数据分析处理效率。

Description

一种跨多引擎的路由处理方法、装置、设备及存储介质
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种跨多引擎的路由处理方法、装置、设备及存储介质。
背景技术
随着互联网的高度普及,用户数量的增长越来越快,产生了大量的用户日志数据,各种对用户日志数据进行统计分析的计算引擎也应运而生。
客户端在需要利用计算引擎去对用户日志数据做数据分析时,一般是根据需要调用的计算引擎生成相应的分析任务请求,并向计算引擎发送,由计算引擎对该计算请求进行响应。但是互联网业务较为复杂,对不同数据也具有不同的分析需求,不可避免的需要使用到多个计算引擎,需要根据分析需求确定计算引擎,再针对具体的计算引擎生成分析任务请求,导致数据分析处理效率较低,平台维护成本较高。
发明内容
本申请实施例提供一种跨多引擎的路由处理方法、装置、设备及存储介质,以解决现有技术中需要根据分析需求确定计算引擎,再针对具体的计算引擎生成分析任务请求,导致数据分析处理效率较低,平台维护成本较高的技术问题,实现跨多引擎的数据分析处理下,统一的计算引擎访问方式以及计算引擎的合理分配。
在第一方面,本申请实施例提供了一种跨多引擎的路由处理方法,包括:
接收客户端发出的分析任务请求,所述分析任务请求由所述客户端基于设定的路由服务协议生成;
基于设定的引擎选择策略,确定用于执行分析任务的目标引擎;
向所述目标引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应。
在第二方面,本申请实施例提供了一种跨多引擎的路由处理装置,包括请求接收模块、引擎选择模块和请求转发模块,其中:
所述请求接收模块,用于接收客户端发出的分析任务请求,所述分析任务请求由所述客户端基于设定的路由服务协议生成;
所述引擎选择模块,用于基于设定的引擎选择策略,确定用于执行分析任务的目标引擎;
所述请求转发模块,用于向所述目标引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应。
在第三方面,本申请实施例提供了一种跨多引擎的路由处理设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的跨多引擎的路由处理方法。
在第四方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的跨多引擎的路由处理方法。
本申请实施例通过接收客户端发出的分析任务请求,并基于设定的引擎选择策略确定用于执行分析任务的目标引擎,并向该目标引擎发送分析任务请求,由该目标引擎对分析任务请求进行响应,在生成分析任务请求时,不需要先确定用于执行任务的目标引擎,客户端可基于设定的路由服务协议生成分析任务请求,不需要针对不同的计算引擎的语法协议生成分析任务请求,解决了现有技术中需要根据分析需求确定计算引擎,再针对具体的计算引擎生成分析任务请求,导致数据分析处理效率较低,平台维护成本较高的技术问题,实现跨多引擎的数据分析处理下,统一的计算引擎访问方式以及计算引擎的合理分配,实现了计算引擎入口的统一,减少了针对不同计算引擎的重复开发,提高数据分析处理效率。
附图说明
图1是本申请实施例提供的一种跨多引擎的路由处理方法的流程图;
图2是本申请实施例提供的另一种跨多引擎的路由处理方法的流程图;
图3是本申请实施例提供的一种跨多引擎的路由处理系统的系统架构示意图;
图4是本申请实施例提供的另一种跨多引擎的路由处理方法的流程图;
图5是本申请实施例提供的另一种跨多引擎的路由处理方法的流程图;
图6是本申请实施例提供的一种跨多引擎的路由处理装置的结构示意图;
图7是本申请实施例提供的一种跨多引擎的路由处理设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1给出了本申请实施例提供的一种跨多引擎的路由处理方法的流程图,本申请实施例提供的跨多引擎的路由处理方法可以由跨多引擎的路由处理装置来执行,该跨多引擎的路由处理装置可以通过硬件和/或软件的方式实现,并集成在跨多引擎的路由处理设备中。
下述以跨多引擎的路由处理装置执行跨多引擎的路由处理方法为例进行描述。参考图1,该跨多引擎的路由处理方法包括:
S101:接收客户端发出的分析任务请求,所述分析任务请求由所述客户端基于设定的路由服务协议生成。
其中,设定的路由服务协议为不同计算引擎之间通用的交互协议。例如,计算引擎可以是Hive计算引擎、Spark计算引擎、Flink计算引擎、Presto计算引擎、Clickhouse计算引擎、Doris计算引擎、Kudu计算引擎、Kyuubi计算引擎、HS计算引擎等,并且这些计算引擎都支持通过以sql请求的方式提交分析任务请求,可将sql交互协议设定为统一的路由服务协议,即各个客户端生成分析任务请求时,可基于统一的sql交互协议生成sql请求,并将sql请求作为分析任务请求。
可以理解的是,请求计算引擎进行数据分析的客户端可能是bi web平台,也可能是多语言的jdbc客户端,还可能是命令行工具,在面对众多的计算引擎时,需要开发人员针对所有计算引擎为客户端开发一套代码,开发量巨大。本方案通过设定路由服务协议,各个客户端在开发引擎调用策略时,客户端只需要支持统一的路由服务协议,并基于统一的路由服务协议进行代码开发即可,不需要针对不同的计算引擎分别开发代码,大量降低开发量。
示例性的,客户端在需要调用计算引擎进行数据分析时,基于设定的路由服务协议生成分析任务请求,并将分析任务请求发送给本实施例提供的跨多引擎的路由处理装置。跨多引擎的路由处理装置接入各个计算引擎的入口,作为各个计算引擎的统一入口,接收客户端发送的分析任务请求,向客户端和各计算引擎提供统一路由服务。
S102:基于设定的引擎选择策略,确定用于执行分析任务的目标引擎。
本申请实施例提供的跨多引擎的路由处理装置预先设置有引擎选择策略,其中引擎选择策略用于从当前所接入的计算引擎中,选择执行分析任务请求所要求的分析任务的目标引擎。在一个可能的实施例中,跨多引擎的路由处理装置当前所接入的计算引擎可通过路由列表进行确定。例如,在跨多引擎的路由处理装置中设置路由列表,该路由列表用于记录跨多引擎的路由处理装置当前所接入的计算引擎,以及各个计算引擎所包含的集群,并且在添加或摘除计算引擎或集群时,同步更新路由列表。
示例性的,在接收到客户端上传的分析任务请求时,基于设定的引擎选择策略,确定适用于执行分析任务的引擎类型,并按照该引擎类型,在当前所接入的计算引擎中,确定用于执行分析任务的目标引擎。
S103:向所述目标引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应。
示例性的,在确定目标引擎后,向目标引擎发送分析任务请求,由目标引擎对分析任务请求进行响应。目标引擎在接收到分析任务请求后,对分析任务请求进行解析,确定分析任务请求所要求的分析任务。进一步的,按照分析任务,对用户日志数据进行分析处理得到处理结果,并将处理结果反馈给跨多引擎的路由处理装置,由跨多引擎的路由处理装置将处理结果转发给客户端。
上述,通过接收客户端发出的分析任务请求,并基于设定的引擎选择策略确定用于执行分析任务的目标引擎,并向该目标引擎发送分析任务请求,由该目标引擎对分析任务请求进行响应,在生成分析任务请求时,不需要先确定用于执行任务的目标引擎,客户端可基于设定的路由服务协议生成分析任务请求,不需要针对不同的计算引擎的语法协议生成分析任务请求,实现跨多引擎的数据分析处理下,统一的计算引擎访问方式以及计算引擎的合理分配,实现了计算引擎入口的统一,减少了针对不同计算引擎的重复开发,提高数据分析处理效率。
在上述实施例的基础上,图2给出了本申请实施例提供的另一种跨多引擎的路由处理方法的流程图,该跨多引擎的路由处理方法是对上述跨多引擎的路由处理方法的具体化。参考图2,该跨多引擎的路由处理方法包括:
S201:接收客户端发出的分析任务请求,所述分析任务请求由所述客户端基于设定的路由服务协议生成。
S202:根据所述分析任务请求需要访问的目标数据内容,对所述分析任务请求进行鉴权分析。
在接收到客户端发出的分析任务请求时,对分析任务请求进行解析,确定分析任务请求提交到目标引擎之后,会访问到的数据位置(数据库、表、字段等数据位置),并对分析任务请求进行鉴权分析,判断客户端是否具备对相应数据位置进行增删查改的权限。若客户端具备相应权限,则生成指示所述分析任务请求具备权限的鉴权分析结果,并执行下一步骤的基于设定的引擎选择策略,确定用于执行分析任务的目标引擎。
而在客户端不具备对相应数据位置进行增删查改的权限时,生成指示所述分析任务请求不具备权限的鉴权分析结果。在鉴权分析结果指示所述分析任务请求不具备权限时,拦截所述分析任务请求,不需要对该分析任务请求进行响应。通过跨多引擎的路由处理装置统一对客户端进行鉴权分析,不需要各个计算引擎各自实现一套鉴权机制,实现对客户端鉴权机制的统一管理,有效降低计算引擎管理和平台维护成本。
S203:基于设定的引擎选择策略,确定用于执行分析任务的目标引擎。
本实施例提供的引擎选择策略包括引擎路由策略、语法路由策略、配置路由策略和历史路由策略中的一种或多种的组合。在具体执行中,可选择其中一个引擎选择策略进行目标引擎的确定,或者是根据各个引擎选择策略之前的优先级顺序,依次利用引擎选择策略进行目标引擎的确定,直至确定目标引擎,还可以是根据多种引擎选择策略分别确定目标引擎,根据多个目标引擎确定结果,选择重合度或权重得分最高的目标引擎。通过不同的引擎选择策略对目标引擎进行选择,可更大程度地结合不同分析任务的业务特点以及计算引擎的特点,提高对不同计算引擎的利用效率和效果。
基于此,本实施例在基于设定的引擎选择策略,确定用于执行分析任务的目标引擎时,包括步骤S2031-S2034中的至少一种:
S2031:基于引擎路由策略,确定各个计算引擎的计算特性,根据所述计算特性确定用于执行分析任务的目标引擎。
可以理解的是,不同类型的计算引擎具有不同的计算特性,其对不同类型的分析任务的处理能力也不同。本实施例在跨多引擎的路由处理装置中,对不同类型计算引擎的计算特性进行判断,确定各种计算引擎所适合的分析任务类型。其中,不同计算引擎对应的计算特性,可根据计算引擎自身的引擎特点进行确定,还可根据各个计算引擎在处理不同类型的分析任务时的处理效率或效果进行确定。
具体的,对于引擎路由策略,在接收到客户端发出的分析任务请求时,对分析任务请求进行解析,并确定分析任务请求所对应的分析任务类型。进一步的,确定各个类型的计算引擎的计算特性,根据各个类型的计算引擎的计算特性确定更适用于分析任务请求所对应的分析任务类型的计算引擎,并将该计算引擎作为目标引擎,以将分析任务请求路由到该目标引擎中进行响应处理。例如对于Spark计算引擎,其计算特性是适合于stage特别多、扫描数据量特别大的分析任务,在接收到stage特别多、扫描数据量特别大的分析任务请求时,则将Spark计算引擎作为执行该分析任务请求对应的分析任务的目标引擎。
S2032:基于语法路由策略,确定所述分析任务请求的语法类型,根据所述语法类型确定用于执行分析任务的目标引擎。
可以理解的是,不同类型的计算引擎对不同语法类型的分析任务请求的处理能力是不同的。本实施例在跨多引擎的路由处理装置中,对不同语法类型的所适用的引擎类型进行记录。其中,不同语法类型的所适用的引擎类型,可根据各类型的计算引擎自身的引擎特点进行确定,还可根据各个计算引擎在处理不同语法类型的分析任务请求时的处理效率或效果进行确定。
具体的,对于语法路由策略,在接收到客户端发出的分析任务请求时,分析该分析任务类型的语法类型,确定该语法类型所适用的引擎类型,并在该引擎类型的计算引擎中确定用于执行分析任务的目标引擎。例如,对于包含较多ddl语法类型的分析任务请求,ddl语法类型主要是用于执行建表、添加字段、删除字段、展示表元信息等非计算类型的任务,Hive计算引擎能够比较完善的支持这种分析任务请求,则将Hive计算引擎作为执行该分析任务请求对应的分析任务的目标引擎。
S2033:基于配置路由策略,确定所述分析任务请求的配置要求,根据所述配置要求确定用于执行分析任务的目标引擎。
其中,客户端在需要指定用于执行分析任务的计算引擎时,在生成的分析任务请求中配置指定的计算引擎。对于配置路由策略,在接收到客户端发出的分析任务请求时,对分析任务请求进行解析,判断分析任务请求中是否携带有指定的计算引擎,若有,则将指定的计算引擎作为执行该分析任务的目标引擎。
S2034:基于历史路由策略,将所述分析任务请求进行参数化,得到参数化请求,并确定所述参数化请求的特征信息,根据所述特征信息与各个计算引擎的历史任务特征之间的对应关系,确定用于执行分析任务的目标引擎。
其中,将分析任务请求进行参数化,可理解为将分析任务请求中的常数参数替换为预设的字符,并保留常数参数之外的字符。对于相似的分析任务请求,除了分析任务请求中的常数参数之外,分析任务请求的代码是一样的,相应的,对相似的分析任务请求进行参数化得到的参数化请求是一样的。另外,在对分析任务请求进行参数化时,还可对分析任务请求中的空白符和注释进行删除处理,减少因不同的代码编写习惯,导致相近分析任务请求对应的参数化请求不同的情况。进一步的,确定参数化请求对应的特征信息,根据特征信息与各个计算引擎的历史任务特征关系,确定用于执行分析任务的目标引擎。
具体的,本申请实施例以哈希值作为参数化请求的特征信息,基于此,本实施例在执行步骤S2034时,具体包括步骤S20341-S20344:
S20341:将所述分析任务请求中的常数参数替换为设定字符,得到参数化请求。
示例性的,在接收到客户端发送的分析任务请求时,确定分析任务请求中的常数参数,并将常数参数替换为设定字符,得到参数化请求。例如,假设一个分析任务请求为:select col from tbl where day=’2021-01-01’,该分析任务请求对应的常数参数为:2021-01-01,假设设定字符为:?,则将该分析任务请求对应的常数参数“2021-01-01”替换为设定字符“?”,得到的参数化请求为:select col from tbl where day=’?’。
在一个可能的实施例中,可利用抽象语法树进行分析任务请求的参数化,基于此,将所述分析任务请求中的常数参数替换为设定字符,得到参数化请求,具体包括:
将所述分析任务请求解析为抽象语法树,将所述抽象语法树中的常数参数替换为设定字符,得到参数化抽象语法树;按照设定的路由服务协议,将所述参数化语法树格式化为参数化请求。
具体的,将基于sql交互协议生成的分析任务请求解析成抽象语法树(AST,Abstract Syntax Tree),并将抽象语法树中的常数参数节点替换为设定字符,得到参数化抽象语法树。
示例性的,对分析任务请求进行词法分析和语法分析后,得到抽象语法树。在进行词法分析是,先读取分析任务请求对应的sql代码,然后按照预定的规则将sql代码合并成多个标识(tokens),同时,移除sql代码中的空白符、注释等信息,最后,将整个sql代码分割进一个tokens列表(一维数组)。在进行语法分析时,将词法分析出来的tokens列表转化成树形的表达形式,得到抽象语法树,同时,对抽象语法树的语法进行错误验证,如果语法有错,则抛出语法错误,另外,当生成抽象语法树的时候,会删除一些没必要的标识(比如不完整的括号)。
利用抽象语法树进行分析任务请求的参数化,通常相似逻辑的sql请求参数化之后会得到完全相同的参数化sql,可减少相似分析任务请求由于部分描述不一致,导致生成的参数化请求不一致的情况,保证分析任务请求被分配到合适的计算引擎。
S20342:计算所述参数化请求的哈希值,将所述哈希值作为特征信息。
对分析任务请求进行参数化得到参数化请求后,计算参数化请求的哈希值,并将哈希值作为特征信息。可以理解的是,在对分析任务请求进行参数化后,相似分析任务请求对应的参数化请求是相同的,对应得到的哈希值也相同,可根据计算得到的哈希值判断分析任务请求所对应的类型。
以sql请求作为分析任务请求为例,假设两个相似的分析任务请求分别为:selectcol from tbl where day=’2021-01-01’和select col from tbl where day=’2021-01-02’,对应的常数参数分别为:2021-01-01和2021-01-02,假设设定字符为:?,那么对这两个分析任务请求进行参数化后,得到的参数化请求都是:select col from tbl whereday=’?’。进一步的,计算参数化请求的哈希值,以md5哈希算法为例,对select col fromtbl where day=’?’计算得到的哈希值为“12255261dcf7ebec837425ff7617a4b8”,该哈希值即为上述两个分析任务请求的特征信息。
在确定所述参数化请求的特征信息后,进一步根据所述特征信息与各个计算引擎的历史任务特征之间的对应关系,确定用于执行分析任务的目标引擎。具体的,记录各个计算引擎每次响应分析任务请求并执行对应分析任务时的任务处理特征,并根据历史中记录的任务处理特征,形成各个计算引擎对应不同特征信息下的历史任务特征,并将各个计算引擎的历史任务特征记录在历史任务特征统计表中。其中任务处理特征可以是任务执行时间、任务数据量、内存使用量、CPU消耗量、sql执行次数等,各个计算引擎对应的历史任务特征分别为任务平均执行时间、任务平均数据量、平均内存使用量、平均CPU消耗量、引擎sql执行次数,并分别针对各个计算引擎,将不同特征信息与历史任务特征之间的对应关系记录在历史任务特征统计表中。其中一个计算引擎的历史任务特征统计表如下表所示:
Figure BDA0003277077710000091
在确定分析任务请求对应的特征信息(哈希值)后,根据该特征信息在各个计算引擎的历史任务特征统计表中查找历史任务特征,并根据各个计算引擎在历史任务特征确定用于执行当前分析任务的目标引擎。可选的,在确定目标引擎时,可以是根据具体的历史任务特征排序进行确定,或者是根据对不同类型的历史任务特征进行加权求和结果的排序进行确定。
例如,假如我们分析发现select col from tbl where day=’2021-01-01’这个任务在Presto计算引擎上的任务平均执行时间比较短,那么说明这类分析任务请求适合Presto计算引擎,可以将接下来的类似分析任务请求都尽量路由到Presto计算引擎执行,优化任务执行速度,另外还可以通过相似分析任务请求以及历史上相似分析任务请求的资源消耗情况预测新任务消耗资源的情况,再根据各个引擎资源空闲情况进行分发。
S204:向所述目标引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应。
图3是本申请实施例提供的一种跨多引擎的路由处理系统的系统架构示意图,如图3所示,该跨多引擎的路由处理系统包括跨多引擎的路由处理装置、客户端和多个计算引擎,其中跨多引擎的路由处理装置作为统一路由服务,接入各个计算引擎,其中计算引擎可以是Presto计算引擎、Flink计算引擎等,并且每个计算引擎对应有多个集群,例如Presto计算引擎中的集群Presto1、Presto2,其中,跨多引擎的路由处理装置和各个计算引擎可以布置在同一个服务器中,也可布置在不同的服务器中。客户端接入跨多引擎的路由处理装置中,并在需要利用计算引擎分析日志数据时,基于设定的路由服务协议(例如sql交互协议)生成分析任务请求,并发送给跨多引擎的路由处理装置。跨多引擎的路由处理装置在进行鉴权分析通过后,基于设定的引擎选择策略确定用于执行分析任务的目标引擎,并向目标引擎发送该分析任务请求,由该目标引擎对响应该分析任务请求,并将目标引擎返回的处理结果发送给客户端,完成对分析任务请求的响应处理。
上述,通过接收客户端发出的分析任务请求,并基于设定的引擎选择策略确定用于执行分析任务的目标引擎,并向该目标引擎发送分析任务请求,由该目标引擎对分析任务请求进行响应,在生成分析任务请求时,不需要先确定用于执行任务的目标引擎,客户端可基于设定的路由服务协议生成分析任务请求,不需要针对不同的计算引擎的语法协议生成分析任务请求,实现跨多引擎的数据分析处理下,统一的计算引擎访问方式以及计算引擎的合理分配,实现了计算引擎入口的统一,减少了针对不同计算引擎的重复开发,提高数据分析处理效率。通过智能的引擎选择策略,减少了用户在多计算引擎上进行选择的难题,基于设定的路由服务协议生成分析任务请求,即可自动为分析任务请求分配合适的计算引擎,不同用户也能够合理使用各种计算引擎。并且在推出新的计算引擎时,同步更新路由列表,可自动向客户端分配更合适的计算引擎,计算引擎的更新换代过程可以对用户完全透明,让用户无感知的情况下切换到更强大的计算引擎,降低了计算引擎的使用门槛。同时,通过不同的引擎选择策略对目标引擎进行选择,可更大程度地结合不同分析任务的业务特点以及计算引擎的特点,提高对不同计算引擎的利用效率和效果。并且对客户端进行统一的鉴权分析,不需要各个计算引擎各自实现一套鉴权机制,实现对客户端鉴权机制的统一管理,有效降低计算引擎管理和平台维护成本。
在上述实施例的基础上,图4给出了本申请实施例提供的另一种跨多引擎的路由处理方法的流程图,该跨多引擎的路由处理方法是对上述跨多引擎的路由处理方法的具体化。参考图4,该跨多引擎的路由处理方法包括:
S301:接收客户端发出的分析任务请求,所述分析任务请求由所述客户端基于设定的路由服务协议生成。
S302:基于设定的引擎选择策略,确定用于执行分析任务的目标引擎。
S303:根据各个计算引擎中不同集群的资源空闲程度,对所述各个计算引擎中不同集群进行排序。
S304:根据排序结果确定目标引擎中,用于执行分析任务的目标集群。
具体的,实时统计各个计算引擎中不同集群的资源空闲程度,按照资源空闲程度从高到低的顺序,对各个计算引擎中不同集群进行排序。在确定用于执行分析任务的目标引擎后,根据该目标引擎中各个集群的排序,确定资源空闲程度最高的集群作为执行分析任务的目标集群。在后续向所述目标引擎发送所述分析任务请求时,目标引擎将该分析任务请求分发到该目标集群中,由该目标集群处理分析任务。
在一个可能的实施例中,在统计各个计算引擎中不同集群的资源空闲程度是,对于资源空闲程度低于设定阈值的集群或计算引擎,可将这些集群或者计算引擎从跨多引擎的路由装置中摘除(并同步更新路由列表)。进一步的,还可手动配置集群的可用资源,充分利用服务器的空闲资源,并且在某个计算引擎的集群资源紧张时,可以临时搭建新的集群,并加入路由列表中,实现对计算引擎和集群的弹性快速扩容。
S305:向所述目标引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应。
上述,通过接收客户端发出的分析任务请求,并基于设定的引擎选择策略确定用于执行分析任务的目标引擎,并向该目标引擎发送分析任务请求,由该目标引擎对分析任务请求进行响应,在生成分析任务请求时,不需要先确定用于执行任务的目标引擎,客户端可基于设定的路由服务协议生成分析任务请求,不需要针对不同的计算引擎的语法协议生成分析任务请求,实现跨多引擎的数据分析处理下,统一的计算引擎访问方式以及计算引擎的合理分配,实现了计算引擎入口的统一,减少了针对不同计算引擎的重复开发,提高数据分析处理效率。同时,通过弹性合理调度用于执行分析任务的集群,更加合理的使用资源,减少了某个计算引擎排队严重,而另外的计算引擎空跑浪费计算资源的情况,充分地利用计算引擎所占据的计算资源,减少集群资源的浪费。
在上述实施例的基础上,图5给出了本申请实施例提供的另一种跨多引擎的路由处理方法的流程图,该跨多引擎的路由处理方法是对上述跨多引擎的路由处理方法的具体化。参考图5,该跨多引擎的路由处理方法包括:
S401:接收客户端发出的分析任务请求,所述分析任务请求由所述客户端基于设定的路由服务协议生成。
S402:基于设定的引擎选择策略,确定用于执行分析任务的目标引擎。
S403:按照设定的容错识别策略,对所述分析任务请求进行容错识别,以确定是否对所述分析任务请求进行容错处理。
S404:在确定对所述分析任务请求进行容错处理时,按照设定的重写策略,对所述分析任务请求进行重写。
具体的,在接收到分析任务请求后,按照设定的容错识别策略,对分析任务请求进行容错识别,以确定是否需要对该分析任务请求进行容错处理。若不需要对分析任务请求进行容错处理,则直接向目标引擎发送分析任务请求。若确定需要对分析任务请求进行容错处理时,则按照设定的重写策略,对分析任务请求进行重写,并向目标引擎发送更新后的分析任务请求。
其中,容错识别策略可以是判断是否需要对分析任务请求进行重写,并在确定需要对分析任务请求进行重写时,则根据设定的重写策略重写分析任务请求。例如,基于容错识别策略对分析任务请求对应的任务查询数据量进行判断,当任务查询数据量比较大,但是分析任务请求中没加限制条件时,可以按照设定的重写策略,在分析任务请求中添加上限制条件(例如对查询任务加上limit xxx,其中xxx为限制条件对应的数据量阈值,可基于设定的重写策略进行确定),合理限制任务查询的数据量。或者是判断分析任务请求是否为不合理sql请求,即对分析任务请求进行分析,确定分析任务是否会使用过多资源或者是否存在失败风险,对于使用过多资源或者会有失败风险的分析任务进行提前预警。
S405:向所述目标引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应。
S406:在所述分析任务请求响应失败时,基于设定的重试策略,确定在当前重试次数中,用于重新执行分析任务的目标引擎。
S407:向所述引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应,直至所述分析任务请求响应成功。
目标引擎在执行分析任务过程中,如果分析任务失败,会向跨多引擎的路由处理装置反馈任务失败消息,由跨多引擎的路由处理装置确定进行重试的方式。在目标引擎反映分析任务请求响应失败时,跨多引擎的路由处理装置将基于设定的重试策略,确定在当前重试次数中,用于重新执行分析任务的目标引擎。基于设定的重试策略,可以指定重试次数、重试使用的计算引擎,或者指定不同重试次数使用不同计算引擎执行任务。在确定当前重试次数中对应的目标引擎后,向引擎发送分析任务请求,由新确定的目标引擎重新对分析任务请求进行响应,直至分析任务请求响应成功。
在一个可能的实施例中,跨多引擎的路由处理装置根据计算引擎或集群的工作状态,动态摘除或添加计算引擎或集群。例如,当某个计算引擎或集群需要维护时,可动态关闭对应计算引擎或集群,分析任务请求就不会路由到关闭的计算引擎或集群,直至计算引擎或集群维护完毕并重新加入跨多引擎的路由处理装置,在整个维护过程中,用户对计算引擎或集群的摘除或添加是无感知的,不会对用户的正常工作造成影响。
在一个可能的实施例中,多引擎的路由处理装置对各个计算引擎或集群的工作状态进行见识,在分析任务的执行过程中出现个别计算引擎或集群不可用时,多引擎的路由处理装置将摘除对应的计算引擎或集群,并发出引擎或集群不可用的告警,减少分析任务的执行受个别引擎或集群故障的影响的情况,实现引擎或集群的高可用支持。
上述,通过接收客户端发出的分析任务请求,并基于设定的引擎选择策略确定用于执行分析任务的目标引擎,并向该目标引擎发送分析任务请求,由该目标引擎对分析任务请求进行响应,在生成分析任务请求时,不需要先确定用于执行任务的目标引擎,客户端可基于设定的路由服务协议生成分析任务请求,不需要针对不同的计算引擎的语法协议生成分析任务请求,实现跨多引擎的数据分析处理下,统一的计算引擎访问方式以及计算引擎的合理分配,实现了计算引擎入口的统一,减少了针对不同计算引擎的重复开发,提高数据分析处理效率。同时,基于容错识别策略对分析任务请求进行容错处理,最大程度的保证任务的成功率,节省用户时间,保证业务稳定。
图6给出了本申请实施例提供的一种跨多引擎的路由处理装置的结构示意图。参考图6,该跨多引擎的路由处理装置包括请求接收模块31、引擎选择模块32和请求转发模块33。
其中,所述请求接收模块31,用于接收客户端发出的分析任务请求,所述分析任务请求由所述客户端基于设定的路由服务协议生成;所述引擎选择模块32,用于基于设定的引擎选择策略,确定用于执行分析任务的目标引擎;所述请求转发模块33,用于向所述目标引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应。
上述,通过接收客户端发出的分析任务请求,并基于设定的引擎选择策略确定用于执行分析任务的目标引擎,并向该目标引擎发送分析任务请求,由该目标引擎对分析任务请求进行响应,在生成分析任务请求时,不需要先确定用于执行任务的目标引擎,客户端可基于设定的路由服务协议生成分析任务请求,不需要针对不同的计算引擎的语法协议生成分析任务请求,实现跨多引擎的数据分析处理下,统一的计算引擎访问方式以及计算引擎的合理分配,实现了计算引擎入口的统一,减少了针对不同计算引擎的重复开发,提高数据分析处理效率。
本申请实施例还提供了一种跨多引擎的路由处理设备,该跨多引擎的路由处理设备可集成本申请实施例提供的跨多引擎的路由处理装置。图7是本申请实施例提供的一种跨多引擎的路由处理设备的结构示意图。参考图7,该跨多引擎的路由处理设备包括:输入装置43、输出装置44、存储器42以及一个或多个处理器41;所述存储器42,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器41执行,使得所述一个或多个处理器41实现如上述实施例提供的跨多引擎的路由处理方法。上述提供的跨多引擎的路由处理装置、设备和计算机可用于执行上述任意实施例提供的跨多引擎的路由处理方法,具备相应的功能和有益效果。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的跨多引擎的路由处理方法。当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的跨多引擎的路由处理方法,还可以执行本申请任意实施例所提供的跨多引擎的路由处理方法中的相关操作。上述实施例中提供的跨多引擎的路由处理装置、设备及存储介质可执行本申请任意实施例所提供的跨多引擎的路由处理方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的跨多引擎的路由处理方法。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。

Claims (12)

1.一种跨多引擎的路由处理方法,其特征在于,包括:
接收客户端发出的分析任务请求,所述分析任务请求由所述客户端基于设定的路由服务协议生成;
基于设定的引擎选择策略,确定用于执行分析任务的目标引擎;
向所述目标引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应。
2.根据权利要求1所述的跨多引擎的路由处理方法,其特征在于,所述引擎选择策略包括引擎路由策略、语法路由策略、配置路由策略和历史路由策略中的一种或多种的组合。
3.根据权利要求2所述的跨多引擎的路由处理方法,其特征在于,所述基于设定的引擎选择策略,确定用于执行分析任务的目标引擎,包括下述至少一种:
基于引擎路由策略,确定各个计算引擎的计算特性,根据所述计算特性确定用于执行分析任务的目标引擎;
基于语法路由策略,确定所述分析任务请求的语法类型,根据所述语法类型确定用于执行分析任务的目标引擎;
基于配置路由策略,确定所述分析任务请求的配置要求,根据所述配置要求确定用于执行分析任务的目标引擎;
基于历史路由策略,将所述分析任务请求进行参数化,得到参数化请求,并确定所述参数化请求的特征信息,根据所述特征信息与各个计算引擎的历史任务特征之间的对应关系,确定用于执行分析任务的目标引擎。
4.根据权利要求3所述的跨多引擎的路由处理方法,其特征在于,所述将所述分析任务请求进行参数化,得到参数化请求,并确定所述参数化请求的特征信息,包括:
将所述分析任务请求中的常数参数替换为设定字符,得到参数化请求;
计算所述参数化请求的哈希值,将所述哈希值作为特征信息。
5.根据权利要求4所述的跨多引擎的路由处理方法,其特征在于,所述将所述分析任务请求中的常数参数替换为设定字符,得到参数化请求,包括:
将所述分析任务请求解析为抽象语法树,将所述抽象语法树中的常数参数替换为设定字符,得到参数化抽象语法树;
按照设定的路由服务协议,将所述参数化语法树格式化为参数化请求。
6.根据权利要求1所述的跨多引擎的路由处理方法,其特征在于,所述基于设定的引擎选择策略,确定用于执行分析任务的目标引擎之前,还包括:
根据所述分析任务请求需要访问的目标数据内容,对所述分析任务请求进行鉴权分析;
在鉴权分析结果指示所述分析任务请求不具备权限时,拦截所述分析任务请求。
7.根据权利要求1所述的跨多引擎的路由处理方法,其特征在于,所述向所述目标引擎发送所述分析任务请求之前,还包括:
根据各个计算引擎中不同集群的资源空闲程度,对所述各个计算引擎中不同集群进行排序;
根据排序结果确定目标引擎中,用于执行分析任务的目标集群。
8.根据权利要求1所述的跨多引擎的路由处理方法,其特征在于,所述向所述目标引擎发送所述分析任务请求之前,还包括:
按照设定的容错识别策略,对所述分析任务请求进行容错识别,以确定是否对所述分析任务请求进行容错处理;
在确定对所述分析任务请求进行容错处理时,按照设定的重写策略,对所述分析任务请求进行重写。
9.根据权利要求1所述的跨多引擎的路由处理方法,其特征在于,所述方法还包括:
在所述分析任务请求响应失败时,基于设定的重试策略,确定在当前重试次数中,用于重新执行分析任务的目标引擎;
向所述引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应,直至所述分析任务请求响应成功。
10.一种跨多引擎的路由处理装置,其特征在于,包括请求接收模块、引擎选择模块和请求转发模块,其中:
所述请求接收模块,用于接收客户端发出的分析任务请求,所述分析任务请求由所述客户端基于设定的路由服务协议生成;
所述引擎选择模块,用于基于设定的引擎选择策略,确定用于执行分析任务的目标引擎;
所述请求转发模块,用于向所述目标引擎发送所述分析任务请求,由所述目标引擎对所述分析任务请求进行响应。
11.一种跨多引擎的路由处理设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9任一项所述的跨多引擎的路由处理方法。
12.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-9任一项所述的跨多引擎的路由处理方法。
CN202111121165.0A 2021-09-24 2021-09-24 一种跨多引擎的路由处理方法、装置、设备及存储介质 Pending CN114020446A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111121165.0A CN114020446A (zh) 2021-09-24 2021-09-24 一种跨多引擎的路由处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111121165.0A CN114020446A (zh) 2021-09-24 2021-09-24 一种跨多引擎的路由处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114020446A true CN114020446A (zh) 2022-02-08

Family

ID=80054757

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111121165.0A Pending CN114020446A (zh) 2021-09-24 2021-09-24 一种跨多引擎的路由处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114020446A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114676067A (zh) * 2022-05-26 2022-06-28 武汉迎风聚智科技有限公司 一种测试脚本的参数化处理方法以及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114676067A (zh) * 2022-05-26 2022-06-28 武汉迎风聚智科技有限公司 一种测试脚本的参数化处理方法以及装置
CN114676067B (zh) * 2022-05-26 2022-08-30 武汉迎风聚智科技有限公司 一种测试脚本的参数化处理方法以及装置

Similar Documents

Publication Publication Date Title
CN110209650B (zh) 数据规整迁移方法、装置、计算机设备和存储介质
CN112905595A (zh) 一种数据查询方法、装置及计算机可读存储介质
US8239369B2 (en) Method and apparatus for enhancing performance of database and environment thereof
CN110147407B (zh) 一种数据处理方法、装置及数据库管理服务器
US20170083573A1 (en) Multi-query optimization
US7853584B2 (en) Multi-partition query governor in a computer database system
CN110795455A (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
US20080065588A1 (en) Selectively Logging Query Data Based On Cost
CN110134738B (zh) 分布式存储系统资源预估方法、装置
CN111930489B (zh) 一种任务调度方法、装置、设备及存储介质
CN113419823A (zh) 一种适用于高并发事务的联盟链系统及其设计方法
CN115373835A (zh) Flink集群的任务资源调整方法、装置及电子设备
CN113157411B (zh) 一种基于Celery的可靠可配置任务系统及装置
CN114090580A (zh) 数据处理方法、装置、设备、存储介质及产品
CN111752945B (zh) 一种基于容器和层次模型的时序数据库数据交互方法和系统
CN112328700A (zh) 一种分布式数据库
CN114020446A (zh) 一种跨多引擎的路由处理方法、装置、设备及存储介质
CN108959952A (zh) 数据平台权限控制方法、装置和设备
CN113568930A (zh) 一种分布式内存数据查询优化的方法和设备
CN113177089A (zh) 一种分布式数据存储引擎调度方法
CN114817311B (zh) 应用于GaussDB数据库存储过程的并行计算方法
CN116089473A (zh) 数据查询方法、装置、电子设备及存储介质
CN116595095A (zh) 分布式数据的重分布方法及其装置、电子设备及存储介质
CN115857938A (zh) 对大数据提交作业进行资源审计的方法及装置
CN116361317A (zh) 一种sql语句的智能处理方法、系统、计算机设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination