一种二进制数据包的解析方法及系统

文档序号:1936830 发布日期:2021-12-07 浏览:18次 >En<

阅读说明:本技术 一种二进制数据包的解析方法及系统 (Binary data packet analysis method and system ) 是由 王宇翔 丁守兵 柴现标 赵凯 杨懿 董月 于 2021-11-10 设计创作,主要内容包括:本发明提供了一种二进制数据包的解析方法及系统,涉及数据处理的技术领域,包括:获取待解析二进制数据包,并基于待解析二进制数据包的类型,确定出待解析二进制数据包对应的配置信息;利用配置信息、向量化引擎和向量归一化引擎,确定出待解析二进制数据包的可执行代码;基于可执行代码和向量化引擎的执行代码,构建字节码,其中,字节码用于表征执行待解析二进制数据包的解析作业;基于服务调度信息,将字节码发送至Spark基础平台,以对待解析二进制数据包进行解析,得到解析结果,解决了现有技术中对二进制数据包进行解析的效率较低的技术问题。(The invention provides a method and a system for analyzing a binary data packet, which relate to the technical field of data processing and comprise the following steps: acquiring a binary data packet to be analyzed, and determining configuration information corresponding to the binary data packet to be analyzed based on the type of the binary data packet to be analyzed; determining an executable code of the binary data packet to be analyzed by utilizing the configuration information, the vectorization engine and the vector normalization engine; constructing byte codes based on the executable codes and the execution codes of the vectorization engine, wherein the byte codes are used for representing and executing the analysis operation of the binary data packet to be analyzed; based on the service scheduling information, the byte codes are sent to a Spark foundation platform to analyze the binary data packet to be analyzed to obtain an analysis result, and the technical problem that the efficiency of analyzing the binary data packet is low in the prior art is solved.)

一种二进制数据包的解析方法及系统

技术领域

本发明涉及数据处理的技术领域,尤其是涉及一种二进制数据包的解析方法及系统。

背景技术

随着大数据时代的来临,数据量与日俱增,计算和存储都面临着巨大的压力,高效传输、存储和数据处理成了亟待解决的问题,由于二进制数据包紧凑、通用、可靠且安全性高,在数据传输和存储方面有显著效果。但是由于二进制数据描述信息少且承载数据多的特点导致在解析二进制数据包时出现了以下问题。

由于二进制数据包可描述信息少,每种二进制数据包都需要有相应的数据接口按照数据字段索引和长度进行切割解析。传统的解析方式是对每种二进制数据包数据接口进行编码支持,缺点是数据接口配置不灵活,大部分以硬编码的形式存在,在数据接口过多时无法进行管理,且代码冗余度高,只需配置二进制包数据接口就能根据描述信息进行解析的方式,通过导入接口灵活配置数据接口,便于管理,减少代码冗余,解放生产力。

在传统解析流程中,二进制包数据源头、数据接口和调度执行信息等相对分散,每个解析任务都不同,各个环节错综复杂,数据描述信息无法进行有效的关联,在解析任务出错时,无法回溯问题;基于实时数据处理,在任务出错时,无法进行重试,新执行的作业状态无法回滚到出问题之前的时间点,不能保证数据exactly-once无丢失,需要高容错的处理流程来解决上述问题。

传统解析二进制包数据方式中每种数据都需要进行编写代码适配,解析流程强依赖代码编程实现,有很多地方需要人为介入,缺点是非自动化工作效率极低,时间浪费在各个流程编码对接上,需要一键式自动化解析全流程实现,只需配置任务描述信息即可自动化解析数据;

二进制数据包承载数据多,二进制数据包往往包含很多子包,每个子包数据解析接口比较复杂,单个数据包数据量比较大,传统方式是单机计算模式或者使用并行计算框架进行解析计算,以并行计算框架为例,当前基于并行计算框架的数据解析其核心思想是把一个数据解析作业拆分成若干个子task,每个子task分布在多个服务器的CPU上执行,并行计算的最小维度在CPU,并行计算的瓶颈卡在CPU的个数上,只能通过增加内存资源和CPU个数来扩展计算资源。缺点是无法高效利用CPU的并行处理机制,在大数据量的数据解析上,计算性能会很差,会造成数据大量积压,数据解析低延时得不到保证。需要高效解析二进制包数据包的方式,单位时间内解析速度变快,即增大数据吞吐量,低延时问题得以解决。

发明内容

有鉴于此,本发明的目的在于提供一种二进制数据包的解析方法及系统,以缓解了现有技术中对二进制数据包进行解析的效率较低的技术问题。

第一方面,本发明实施例提供了一种二进制数据包的解析方法,包括:获取待解析二进制数据包,并基于所述待解析二进制数据包的类型,确定出所述待解析二进制数据包对应的配置信息,其中,所述配置信息包括:所述待解析二进制数据包的描述信息对应的标识,接口信息,服务调度信息,数据源信息;利用所述配置信息、向量化引擎和向量归一化引擎,确定出所述待解析二进制数据包的可执行代码;基于所述可执行代码和所述向量化引擎的执行代码,构建字节码,其中,所述字节码用于表征执行所述待解析二进制数据包的解析作业;基于所述服务调度信息,将所述字节码发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果。

进一步地,所述接口信息包括:接口字段和字段转换股则,其中,所述接口字段包括:数据标识、字段截取索引位置、子包标识、字段长度和解析类型;所述服务调度信息包括:解析任务触发时间和作业调度信息,其中,所述解析任务触发时间为对所述待解析二进制数据包进行解析的开始时间,所述作业调度信息包括:作业定时规则、作业时效类型和资源池标识;所述数据源信息包括:数据协议、数据接入URL和数据频度。

进一步地,所述可执行代码包括:第一可执行代码和第二可执行代码,利用所述配置信息、向量化引擎和向量归一化引擎,确定出所述待解析二进制数据包的可执行代码,包括:利用所述向量化引擎,对所述配置信息进行向量化处理,得到所述第一可执行代码;利用所述向量归一化引擎提取SMID指令集,得到所述第二可执行代码。

进一步地,基于所述可执行代码和所述向量化引擎的执行代码,构建字节码,包括:利用反射机制和所述接口信息,构建树模型,其中,所述树模型用于抽取所述可执行代码和所述向量化引擎的执行代码;基于所述树模型,生成所述字节码。

进一步地,基于所述服务调度信息,将所述字节码发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果,包括:对所述字节码进行打包,得到Spark执行Jar包;基于所述服务调度信息,将所述Spark执行Jar包发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果。

第一方面,本发明实施例提供了一种二进制数据包的解析系统,包括:血缘管理模块,向量化引擎模块,统一解析服务模块和服务模块,其中,所述血缘管理模块,用于获取待解析二进制数据包,并基于所述待解析二进制数据包的类型,确定出所述待解析二进制数据包对应的配置信息,其中,所述配置信息包括:所述待解析二进制数据包的描述信息对应的标识,接口信息,服务调度信息,数据源信息;所述向量化引擎模块,用于利用所述配置信息、向量化引擎和向量归一化引擎,确定出所述待解析二进制数据包的可执行代码;所述统一解析服务模块,用于基于所述可执行代码和所述向量化引擎的执行代码,构建字节码,其中,所述字节码用于表征执行所述待解析二进制数据包的解析作业;所述服务模块,用于基于所述服务调度信息,将所述字节码发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果。

进一步地,所述接口信息包括:接口字段和字段转换股则,其中,所述接口字段包括:数据标识、字段截取索引位置、子包标识、字段长度和解析类型;所述服务调度信息包括:解析任务触发时间和作业调度信息,其中,所述解析任务触发时间为对所述待解析二进制数据包进行解析的开始时间,所述作业调度信息包括:作业定时规则、作业时效类型和资源池标识;所述数据源信息包括:数据协议、数据接入URL和数据频度。

进一步地,所述可执行代码包括:第一可执行代码和第二可执行代码,所述向量化引擎模块,包括:所述向量化引擎和所述向量归一化引擎,其中,所述向量化引擎,用于对所述配置信息进行向量化处理,得到所述第一可执行代码;所述向量归一化引擎,用于提取SMID指令集,得到所述第二可执行代码。

进一步地,所述统一解析服务模块,包括:反射调用模块和字节码生成模块,其中,所述反射调用模块,用于利用反射机制和所述接口信息,构建树模型,其中,所述树模型用于抽取所述可执行代码和所述向量化引擎的执行代码;所述字节码生成模块,用于基于所述树模型,生成所述字节码。

进一步地,所述服务模块,包括:可执行编码服务模块和作业服务调度模块,其中,所述可执行编码服务模块,用于对所述字节码进行打包,得到Spark执行Jar包;所述作业服务调度模块,用于基于所述服务调度信息,将所述Spark执行Jar包发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果。

在本发明实施例中,通过获取待解析二进制数据包,并基于所述待解析二进制数据包的类型,确定出所述待解析二进制数据包对应的配置信息,其中,所述配置信息包括:所述待解析二进制数据包的描述信息对应的标识,接口信息,服务调度信息,数据源信息;利用所述配置信息、向量化引擎和向量归一化引擎,确定出所述待解析二进制数据包的可执行代码;基于所述可执行代码和所述向量化引擎的执行代码,构建字节码,其中,所述字节码用于表征执行所述待解析二进制数据包的解析作业;基于所述服务调度信息,将所述字节码发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果,达到了对二进制代码进行自动化解析的目的,进而解决了现有技术中对二进制数据包进行解析的效率较低的技术问题,从而实现了提高二进制数据包进行解析的效率的技术效果。

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

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

附图说明

为了更清楚地说明本发明

具体实施方式

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

图1为本发明实施例提供的一种二进制数据包的解析系统的示意图;

图2为本发明实施例提供的一种二进制数据包的解析方法的流程图。

具体实施方式

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

实施例一:

根据本发明实施例,提供了一种二进制数据包的解析系统的实施例,图1是根据本发明实施例的一种二进制数据包的解析系统的示意图,如图1所示,该系统包括:血缘管理模块10,向量化引擎模块20,统一解析服务模块30和服务模块40。

所述血缘管理模块10,用于获取待解析二进制数据包,并基于所述待解析二进制数据包的类型,确定出所述待解析二进制数据包对应的配置信息,其中,所述配置信息包括:所述待解析二进制数据包的描述信息对应的标识,接口信息,服务调度信息,数据源信息;

所述向量化引擎模块20,用于利用所述配置信息、向量化引擎和向量归一化引擎,确定出所述待解析二进制数据包的可执行代码;

所述统一解析服务模块30,用于基于所述可执行代码和所述向量化引擎的执行代码,构建字节码,其中,所述字节码用于表征执行所述待解析二进制数据包的解析作业;

所述服务模块40,用于基于所述服务调度信息,将所述字节码发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果。

在本发明实施例中,通过获取待解析二进制数据包,并基于所述待解析二进制数据包的类型,确定出所述待解析二进制数据包对应的配置信息,其中,所述配置信息包括:所述待解析二进制数据包的描述信息对应的标识,接口信息,服务调度信息,数据源信息;利用所述配置信息、向量化引擎和向量归一化引擎,确定出所述待解析二进制数据包的可执行代码;基于所述可执行代码和所述向量化引擎的执行代码,构建字节码,其中,所述字节码用于表征执行所述待解析二进制数据包的解析作业;基于所述服务调度信息,将所述字节码发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果,达到了对二进制代码进行自动化解析的目的,进而解决了现有技术中对二进制数据包进行解析的效率较低的技术问题,从而实现了提高二进制数据包进行解析的效率的技术效果。

需要说明的是,上述系统中的各个模块之间统一采用grpc进行服务通信调用。在血缘管理模块配置任务血缘ID、数据源、接口信息和服务调度信息,任务血缘ID代表此任务所有描述信息的标识,数据源可支持消息队列、数据库、UDP/TCP等多源数据。接口信息包含与要解析二进制数据包所对应的接口字段与解析规则,服务调度信息包含此解析任务触发时间以及作业调度信息。血缘管理模块为任务自动化流程的管理中心,只需要对任务中每一种二进制数据包配置相应数据接口即可实现一键式解析二进制数据包,且上述配置内容以JSON文本 kv形式写入文本文档,通过血缘管理中心INPUT接口把JSON文档导入即可后,根据解析任务链条关系进行一键式血缘管理。

在本发明实施例中,所述向量化引擎模块,包括:所述向量化引擎和所述向量归一化引擎。

所述向量化引擎,用于对所述配置信息进行向量化处理,得到所述第一可执行代码;

所述向量归一化引擎,用于提取SMID指令集,得到所述第二可执行代码。

在本发明实施例中,根据所述解析任务触发时间,在待解析二进制数据包的解析任务触发后,通过grpc调用向量化引擎模块,向量化引擎从血缘管理模块中读取待解析二进制数据包描述信息,基于待解析二进制数据包描述中血缘关系,然后生成待解析二进制数据包由行式转换为列式字节数组的第一可执行代码块。

最后,向量归一化引擎把SMID指令集进行向上抽取实现,生成第二可执行代码块。

在本发明实施例中,述统一解析服务模块,包括:反射调用模块和字节码生成模块。

所述反射调用模块,用于利用反射机制和所述接口信息,构建树模型,其中,所述树模型用于抽取所述可执行代码和所述向量化引擎的执行代码;

所述字节码生成模块,用于基于所述树模型,生成所述字节码。

在本发明实施例中,在向量化引擎模块的可执行代码块生成完成后,通过grpc调用统一解析服务模块,首先反射调用模块通过反射机制对可执行代码以及向量化引擎的执行代码进行抽取调用,由血缘管理模块中所配置接口信息进行抽取代码,生成自动化代码调用树模型并通知字节码生成模块。

然后字节码生成模块根据反射调用模块的树模型,自动生成可以用于解析待解析二进制数据包作业执行的字节码,用于打包执行。

在本发明实施例中,所述服务模块,包括:可执行编码服务模块和作业服务调度模块。

所述可执行编码服务模块,用于对所述字节码进行打包,得到Spark执行Jar包;

所述作业服务调度模块,用于基于所述服务调度信息,将所述Spark执行Jar包发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果。

在本发明实施例中,生成字节码后,由向量化引擎心跳信息通知可执行编码服务获取字节码,首先可执行编码服务模块根据依赖环境对字节码进行打包,生成Spark执行Jar包,然后把执行Jar包分发到作业调度服务模块。

作业调度服务模块通过获取中血缘管理模块中作业调度信息,根据作业调度信息中作业定时规则、作业时效类型和资源池标识,分配作业执行资源,任务可调度为实时流或批处理执行。

在作业调度服务模块在调度注入信息完成后,作业调度服务模块会把Spark执行Jar包在Spark基础平台分发运行,此平台提供Spark作业执行环境,以Spark RDD有向无环图,在CPU基础之上,调用向量归一化引擎完成数据解析流程。

本发明实施例中所述的二进制数据包的解析系统,首先通过血缘管理模块,把需要解析的二进制数据包的数据接口进行配置管理,然后注册配置解析任务定时调度信息,生成血缘关系模型。待定时任务触发时,根据触发的任务调度信息,向量化引擎模块获取基于二进制数据包描述信息的血缘关系,把向量化的操作固化为字节码,结合向量归一化生成的执行引擎字节码,可高效利用单CPU的并行机制,之后统一解析模块通过反射机制调用解析基础代码和向量化引擎字节码,生成解析流程可执行字节码,可执行字节码会被可执行编码服务模块打包成Spark作业执行jar包,通过作业调度服务模块在Spark基础平台模块分发执行作业,完成二进制数据包的解析。

综上所述,本发明实施例中所述的二进制数据包的解析系统的优点包括:

可灵活配置数据接口,通过血缘管理元数据服务进行配置,可直接通过JSON文件导入配置,统一管理,即可支持对相应数据包解析。

自动化,本系统只需要构建以数据描述信息和任务调度信息的血缘关系模型,即可自动化生成执行代码包,全流程解析,摆脱重复编码。

高容错性,基于二进制数据包血缘关联关系和checkpoint机制的高可用,保证数据解析链路的可追溯性,解析数据过程中在遇到错误失败时,可进行重试,保证exactly-once数据无丢失。

低延时,基于Spark流式处理微批次并行计算的数据解析,以及接入向量化引擎的高效执行,可大幅提高数据吞吐量,能支持解析大数据量二进制数据包,保持低延迟运行。

实施例二:

本发明实施例还提供了一种二进制数据包的解析方法,如图2所示,图2为上述二进制数据包的解析方法的流程图,该二进制数据包的解析方法包括如下步骤:

步骤S102,获取待解析二进制数据包,并基于所述待解析二进制数据包的类型,确定出所述待解析二进制数据包对应的配置信息,其中,所述配置信息包括:所述待解析二进制数据包的描述信息对应的标识,接口信息,服务调度信息,数据源信息;

步骤S104,利用所述配置信息、向量化引擎和向量归一化引擎,确定出所述待解析二进制数据包的可执行代码;

步骤S106,基于所述可执行代码和所述向量化引擎的执行代码,构建字节码,其中,所述字节码用于表征执行所述待解析二进制数据包的解析作业;

步骤S108,基于所述服务调度信息,将所述字节码发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果。

在本发明实施例中,通过获取待解析二进制数据包,并基于所述待解析二进制数据包的类型,确定出所述待解析二进制数据包对应的配置信息,其中,所述配置信息包括:所述待解析二进制数据包的描述信息对应的标识,接口信息,服务调度信息,数据源信息;利用所述配置信息、向量化引擎和向量归一化引擎,确定出所述待解析二进制数据包的可执行代码;基于所述可执行代码和所述向量化引擎的执行代码,构建字节码,其中,所述字节码用于表征执行所述待解析二进制数据包的解析作业;基于所述服务调度信息,将所述字节码发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果,达到了对二进制代码进行自动化解析的目的,进而解决了现有技术中对二进制数据包进行解析的效率较低的技术问题,从而实现了提高二进制数据包进行解析的效率的技术效果。

进一步地,所述接口信息包括:接口字段和字段转换股则,其中,所述接口字段包括:数据标识、字段截取索引位置、子包标识、字段长度和解析类型;所述服务调度信息包括:解析任务触发时间和作业调度信息,其中,所述解析任务触发时间为对所述待解析二进制数据包进行解析的开始时间,所述作业调度信息包括:作业定时规则、作业时效类型和资源池标识;所述数据源信息包括:数据协议、数据接入URL和数据频度。

进一步地,所述可执行代码包括:第一可执行代码和第二可执行代码,利用所述配置信息、向量化引擎和向量归一化引擎,确定出所述待解析二进制数据包的可执行代码,包括:利用所述向量化引擎,对所述配置信息进行向量化处理,得到所述第一可执行代码;利用所述向量归一化引擎提取SMID指令集,得到所述第二可执行代码。

进一步地,基于所述可执行代码和所述向量化引擎的执行代码,构建字节码,包括:利用反射机制和所述接口信息,构建树模型,其中,所述树模型用于抽取所述可执行代码和所述向量化引擎的执行代码;基于所述树模型,生成所述字节码。

进一步地,基于所述服务调度信息,将所述字节码发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果,包括:对所述字节码进行打包,得到Spark执行Jar包;基于所述服务调度信息,将所述Spark执行Jar包发送至Spark基础平台,以对所述待解析二进制数据包进行解析,得到解析结果。

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

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

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

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

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

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

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种UVC设备防错误访问方法、系统、终端及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!