CN116781586A - 一种gRPC流量解析方法、装置、设备及介质 - Google Patents
一种gRPC流量解析方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116781586A CN116781586A CN202310833477.7A CN202310833477A CN116781586A CN 116781586 A CN116781586 A CN 116781586A CN 202310833477 A CN202310833477 A CN 202310833477A CN 116781586 A CN116781586 A CN 116781586A
- Authority
- CN
- China
- Prior art keywords
- service message
- rule
- layer
- service
- grpc
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000005206 flow analysis Methods 0.000 title abstract description 18
- 238000004458 analytical method Methods 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims description 19
- 238000004573 interface analysis Methods 0.000 claims description 9
- 238000005516 engineering process Methods 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及计算机技术领域,尤其涉及一种gRPC流量解析方法、装置、设备及介质。该方法中,接收来自客户端的业务消息,基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息,其中,字节码是客户端根据预设的编码规则对业务消息进行字节码编码得到的,基于预先配置的规则集合逐层解析被拦截的业务消息,其中,规则集合中包含多个规则,每个规则与业务消息中每层的首部字段存在对应关系。上述方案,相较于现有技术中无法采用现有UNIX工具直接解析业务消息造成解析效率低的问题,本申请通过预设的编码规则得到的字节码确定业务消息是否存在gRPC流量的方式,可以提高识别和解析gRPC流量的效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种gRPC流量解析方法、装置、设备及介质。
背景技术
gRPC是Google开发的一个高性能、通用的开源RPC框架,主要面向移动应用开发且基于HTTP/2协议标准而设计,同时支持大多数流行的编程语言。由于gRPC协议是二进制协议,而二进制协议可读性差,部分技术场景可读性实现复杂。无法采用现有UNIX工具直接进行解析。如何提高识别和解析gRPC流量的效率成为需要解决的问题。
发明内容
本申请实施例提供一种gRPC流量解析方法、装置、设备及介质,用以提供一种提高识别和解析gRPC协议的解析效率。
第一方面,本申请实施例提供一种gRPC流量解析方法,包括:
接收来自客户端的业务消息;
基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息,其中,字节码是客户端根据预设的编码规则对业务消息进行字节码编码得到的;
基于预先配置的规则集合逐层解析被拦截的业务消息,其中,规则集合中包含多个规则,每个规则与业务消息中每层的首部字段存在对应关系。
上述方法中,相较于现有技术中无法采用现有UNIX工具直接解析业务消息造成解析效率低的问题,本申请通过预设的编码规则得到的字节码确定业务消息是否存在gRPC流量的方式,可以提高识别和解析gRPC流量的效率。
可选的,基于预先配置的规则集合逐层解析业务消息,具体包括:
基于预先配置的规则集合对业务消息进行包解析、服务解析、接口解析、数据内容解析。
上述方法中,介绍了本申请实施例中基于预先配置的规则集合逐层解析业务消息时,业务消息的各个层级。
可选的,基于预先配置的规则集合逐层解析被拦截的业务消息,具体包括:
根据业务消息中每层的首部字段与规则的对应关系,从规则集合中确定解析业务消息的规则;
根据解析业务消息的规则,逐层解析业务消息。
上述方法中,更加具体的介绍了本申请实施例中基于预先配置的规则集合逐层解析被拦截的业务消息的方法。
可选的,根据业务消息中每层的首部字段与规则的对应关系,从规则集合中确定解析业务消息的规则,具体包括:
基于package字段从规则集合中确定包解析的规则;
基于service字段从规则集合中确定服务解析的规则;
基于rpc字段从规则集合中确定接口解析的规则;
基于对象字段从规则集合中确定数据内容解析的规则。
上述方法中,更加具体的介绍了本申请实施例中根据业务消息中每层的首部字段与规则的对应关系,从规则集合中确定解析业务消息规则的方法。
可选的,基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息,具体包括:
将业务消息传递给内核态的eBPF模块;
eBPF模块基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息。
上述方法中,利用高效的扩展包过滤器(eBPF)技术,在Linux内核层对gRPC协议进行识别和解析,无需在用户层重新对协议包进行组装,可以大大提高了识别和解析gRPC流量的效率。同时,基于Linux内核的eBPF技术是操作系统的内核层技术。由于eBPF技术支持在内核态直接处理数据,因此可以减少用户态和内核态的数据拷贝,有利于降低应用的开销。
第二方面,本申请实施例一种gRPC流量解析的装置,包括:
收发模块,用于接收来自客户端的业务消息;
处理模块,用于基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息,其中,字节码是客户端根据预设的编码规则对业务消息进行字节码编码得到的;
解析模块,用于基于预先配置的规则集合逐层解析被拦截的业务消息,其中,规则集合中包含多个规则,每个规则与业务消息中每层的首部字段存在对应关系。
可选的,基于预先配置的规则集合逐层解析业务消息,解析模块具体用于:
基于预先配置的规则集合对业务消息进行包解析、服务解析、接口解析、数据内容解析。
可选的,基于预先配置的规则集合逐层解析被拦截的业务消息,解析模块具体用于:
根据业务消息中每层的首部字段与规则的对应关系,从规则集合中确定解析业务消息的规则;
根据解析业务消息的规则,逐层解析业务消息。
可选的,根据业务消息中每层的首部字段与规则的对应关系,从规则集合中确定解析业务消息的规则,解析模块具体用于:
基于package字段从规则集合中确定包解析的规则;
基于service字段从规则集合中确定服务解析的规则;
基于rpc字段从规则集合中确定接口解析的规则;
基于对象字段从规则集合中确定数据内容解析的规则。
可选的,基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息,处理模块具体用于:
将业务消息传递给内核态的eBPF模块;
eBPF模块基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息。
第三方面,本申请实施例提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为执行指令,以实现如上述第一方面中任一项的gRPC流量解析方法。
第四方面,本申请实施例一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述第一方面中任一项的gRPC流量解析方法。
第五方面,本申请实施例提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行以实现如上述第一方面中任一项的gRPC流量解析方法。
第二方面至第五方面中任意一种实现方式所带来的技术效果可参见第一方面对应的实现方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种可选的gRPC流量解析方法的应用场景示意图;
图2为本申请实施例提供的一种gRPC流量解析方法流程图;
图3为本申请实施例提供的一种业务消息示意图;
图4为本申请实施例提供的一种gRPC流量解析方法流程图;
图5为本申请实施例提供的一种gRPC流量解析的装置示意图;
图6为本申请实施例提供的另一种gRPC流量解析的装置示意图;
图7为本申请实施例提供的电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请实施例描述的应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。其中,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
扩展包过滤(Extended Berkeley Packet Filter,eBPF)近年来被视为操作系统内核(linux)的革命性技术,它允许开发者在linux的内核里动态实时地加载自己编写的沙盒程序,无需更改内核源码,并且用户态的程序可以通过系统调用和内核中的数据结构(bpf map)结构与内核中的eBPF程序实时交换数据。
gRPC是谷歌(Google)开发的一个高性能、通用的开源远程过程调用(RemoteProcedure Call,RPC)框架,主要面向移动应用开发且基于超文本传输协议第2版(HTTP/2)标准而设计,同时支持大多数流行的编程语言,类似JS对象简谱(JavaScript ObjectNotation,JSON)、可扩展标记语言(Extensible Markup Language,XML),但是数据交换的性能更高。
gRPC可以实现流式传输。同一个gRPC请求的不同消息可以共用HTTP头信息。共用HTTP头信息的gRPC请求的不同消息中,需要给每个消息单独加一个五字节的前缀来表示压缩和长度信息。由于这五个字节,不管数据存储格式是payload是Protobuf还是JSON,gRPC流量都是二进制协议。所以UNIX下常用的文本工具都无法很好地处理gRPC的通信内容。
由于二进制协议无现成的解析工具,且二进制协议解析复杂:二进制协议可读性差,现有技术中解析二进制协议实现复杂。例如,首先要获取二进制流,可能还需要进行拆包与粘包工作,从而获得二进制数据。再根据协议,一条条地解析命令字与数据域。并且传统流量采集方法把数据存储在缓冲器(buffer)里,然后传送到用户态解析的方式速度相对慢,因此,如何提高解析gRPC协议的效率就显得很有必要。
为了解决上述问题,本申请提供一种gRPC流量解析方法,接收来自客户端的业务消息。基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息。其中,字节码是客户端根据预设的编码规则对业务消息进行字节码编码得到的。基于预先配置的规则集合逐层解析被拦截的业务消息。其中,规则集合中包含多个规则,每个规则与业务消息中每层的首部字段存在对应关系。
本申请实施例可以通过客户端向服务端发送业务消息,在服务端进行gRPC流量解析。
如图1所示,本申请实施例一种可选的gRPC流量解析方法的应用场景示意图,包括服务端100以及终端101,服务端100与终端101之间可以通过网络实现可通信的连接,以实现本申请的gRPC流量解析方法。
用户可以使用服务端100通过网络与终端101交互,例如接收或发送消息等。终端101上可以安装有各种客户端应用程序,例如程序编写类应用、网页浏览器应用、搜索类应用等。终端101可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、台式计算机等等。
服务端100用于接收来自客户端的业务消息。基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息,其中,字节码是客户端根据预设的编码规则对业务消息进行字节码编码得到的。基于预先配置的规则集合逐层解析被拦截的业务消息,其中,规则集合中包含多个规则,每个规则与业务消息中每层的首部字段存在对应关系。其中,服务端100可以为独立的服务器或者是多个服务器组成的服务器集群来实现。
如图2所示,本申请实施例提供的一种gRPC流量解析方法流程图,具体可以包括以下步骤:
步骤S201、接收来自客户端的业务消息;
可选的,在用户提交业务请求时,客户端将用户提交的至少一个业务请求转化为二进制数据得到业务消息,将二进制处理后得到的至少一个业务消息根据预设的编码规则进行字节码编码后,得到包含字节码的业务消息。并将上述包含字节码的业务消息发送给服务端,由服务端执行gRPC流量解析。
针对任意一个业务请求,本申请实施例根据下列方式生成业务请求对应的业务消息:
例如,业务客户端可以接收提交的业务请求。由于通过序列化处理业务请求的方式便于在客户端与服务端之间传输业务消息。消息装载器可以将业务请求中的业务字段存储在业务对象数据库中,并将业务字段进行序列化处理。消息编码处理器选择业务请求对应的消息,并进行消息序列化处理。在业务消息包含gRPC流量的情况下,消息编码处理器将业务消息通过gRPC编译器进行编译。代码生成器根据预设的编码规则,对业务消息进行字节码编码,得到业务消息的字节码。即代码生成器可以将业务消息的二进制数据,通过编译器编译成系支持的字节码。业务客户端调用gRPC客户端程序文件(stub)发送gRPC消息,通过与服务端建立的长连接通道,将上述包括字节码的业务消息发送到服务端。
可选的,为了便于后续进行数据分析,消息装载器还可以将业务字段进行反序列化处理,将业务请求中的业务字段存储在业务对象数据库中。
可以理解的是,本申请实施例中预设的编码规则可以是本领域技术人员预先设置的。本领域技术人员也可以根据具体的应用场景进行更改上述预设的编码规则。例如,客户端根据预设的编码规则对业务消息进行字节码编码可以得到socket代码。又例如,客户端根据预设的编码规则对业务消息进行字节码编码可以得到BPF代码。序列化处理操作具体是采用序列化平台对业务请求进行序列化处理,对序列化平台不做具体地限定。
客户端将进行至少一个业务消息发送给服务端之后,服务端接收到业务消息。
在一种可能的情况中,服务端还可以通过外部系统接收来自客户端的业务消息。外部系统再将业务消息传递至服务端中的协议解析端。
步骤S202、基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息。
其中,字节码是客户端根据预设的编码规则对业务消息进行字节码编码得到的。
上述方法中,相较于现有技术中无法采用现有UNIX工具直接解析业务消息造成解析效率低的问题,本申请通过预设的编码规则得到的字节码确定业务消息是否存在gRPC流量的方式,可以提高识别和解析gRPC流量的效率。
在一种可选的实施例中,服务端可以通过字节码加载器把生成的BPF代码加载到位于Linux内核态的eBPF模块。eBPF模块基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息。
上述方法中,由于eBPF支持在内核态直接处理数据,比如解码、生成可视化图表等操作。本申请实施例中采用扩展包过滤器技术来实现gRPC协议的拦截和采集,通过eBPF模块确定业务消息中是否存在gRPC流量,从而确定是否拦截业务消息的方式,可以减少用户态和内核态的数据拷贝,有利于降低应用的开销,节省计算资源。
步骤S203、基于预先配置的规则集合逐层解析被拦截的业务消息。
其中,规则集合中包含多个规则,每个规则与业务消息中每层的首部字段存在对应关系。
在一种可选的实施例中,服务端可以根据业务消息中每层的首部字段与规则的对应关系,从规则集合中确定解析业务消息的规则。根据解析业务消息的规则,逐层解析业务消息。其中,基于预先配置的规则集合对业务消息进行包解析、服务解析、接口解析、数据内容解析。
例如,包解析根据proto(服务设计消息文件)文件头部的包(package)字段从规则集合中确定包解析的规则。服务解析根据proto文件的服务(service)字段从规则集合中确定包解析的规则。接口解析根据proto文件的远程过程调用(Remote Procedure Call,RPC)字段从规则集合中确定包解析的规则。数据内容解析根据业务层的对象字段从规则集合中确定包解析的规则。
又例如,用户根据自身业务需求,确定解析业务消息的执行命令可以为:
如图3所示,本申请实施例提供一种业务消息的示意图。图3中业务消息以HTTP2的形式进行传输。在业务消息中包括gRPC流量。由于数据描述语言(ProtoBuf)通过对传输字段的名称、顺序进行预定义,从而在传输结构中只需要顺序的记录每个字段的类型标签和二进制值。其中,gRPC流量中包括头部(Header)字段、服务(Service)字段、消息(Message)字段、数据(Data)字段。包解析根据proto(服务设计消息文件)文件头部的包(package)字段从规则集合中确定包解析的规则。服务解析根据proto文件的服务(service)字段从规则集合中确定包解析的规则。接口解析根据proto文件的远程过程调用(Remote ProcedureCall,RPC)字段从规则集合中确定包解析的规则。数据内容解析根据业务层的对象字段从规则集合中确定包解析的规则。
在一种可选的实施例中,服务端可以根据Proto文件中的由外向内的各个层级,根据业务消息中每层的首部字段与规则的对应关系,从规则集合中确定解析业务消息的规则。根据解析业务消息的规则,逐层解析业务消息。
例如,服务端可以按照包解析、服务解析、接口解析、数据内容解析的顺序,逐层解析业务消息。
可选的,本申请实施例可以应用于多种应用场景中。例如,在Kubernetes平台中,在容器运行时接口中可以使用RPC对集群中运行的进程(Pod),容器,镜像等资源对象进行管理操作。对向应用软件(Kubernetes)平台发出的管理命令进行监控审计或可视化展现。
下面对图2的实施例进行举例说明:
业务客户端可以提交业务请求。消息装载器将业务请求中的业务字段存储在业务对象数据库中,并将业务字段进行序列化处理。消息编码处理器选择对应的消息,并进行消息序列化处理。客户端根据预设的编码规则,对业务消息进行字节码编码,得到业务消息的字节码,即BPF代码。客户端调用gRPC客户端程序文件(stub)发送gRPC消息通过与服务端建立的长连接通道,将上述包括字节码的业务消息发送到服务端。服务端连接的外部系统接收来自客户端的业务消息。将gRPC协议解析需求提交到协议解析端。通过字节码加载器把生成的BPF代码加载到位于Linux内核的eBPF附着模块。当eBPF模块检测到相应的gRPC流量时,触发消息拦截,将拦截的消息存储到解码分析器。基于package字段从规则集合中确定包解析的规则。基于service字段从规则集合中确定服务解析的规则。基于rpc字段从规则集合中确定接口解析的规则。基于对象字段从规则集合中确定数据内容解析的规则。根据解析业务消息的规则,按照包解析、服务解析、接口解析、数据内容解析的顺序逐层解析业务消息。
如图4所示,本申请实施例提供一种gRPC流量解析方法的整体流程图。
步骤S401、接收来自客户端的业务消息;
步骤S402、基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息,其中,字节码是客户端根据预设的编码规则对业务消息进行字节码编码得到的;
步骤S403、基于package字段从规则集合中确定包解析的规则;
步骤S404、基于service字段从规则集合中确定服务解析的规则;
步骤S405、基于rpc字段从规则集合中确定接口解析的规则;
步骤S406、基于对象字段从规则集合中确定数据内容解析的规则;
步骤S407、根据解析业务消息的规则,按照包解析、服务解析、接口解析、数据内容解析的顺序逐层解析业务消息。
本申请实施例提供了一种gRPC流量解析的装置,如图5所示,该装置包括:收发模块501、处理模块502、解析模块503,其中:
收发模块501,用于接收来自客户端的业务消息;
处理模块502,用于基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息,其中,字节码是客户端根据预设的编码规则对业务消息进行字节码编码得到的;
解析模块503,用于基于预先配置的规则集合逐层解析被拦截的业务消息,其中,规则集合中包含多个规则,每个规则与业务消息中每层的首部字段存在对应关系。
基于预先配置的规则集合逐层解析业务消息,解析模块503具体用于:
基于预先配置的规则集合对业务消息进行包解析、服务解析、接口解析、数据内容解析。
可选的,基于预先配置的规则集合逐层解析被拦截的业务消息,解析模块503具体用于:
根据业务消息中每层的首部字段与规则的对应关系,从规则集合中确定解析业务消息的规则;
根据解析业务消息的规则,逐层解析业务消息。
可选的,根据业务消息中每层的首部字段与规则的对应关系,从规则集合中确定解析业务消息的规则,解析模块503具体用于:
基于package字段从规则集合中确定包解析的规则;
基于service字段从规则集合中确定服务解析的规则;
基于rpc字段从规则集合中确定接口解析的规则;
基于对象字段从规则集合中确定数据内容解析的规则。
可选的,如图6所示,gRPC流量解析的装置还可以包括eBPF模块504,基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息,处理模块502具体用于:
将业务消息传递给内核态的eBPF模块;
eBPF模块504,用于基于业务消息的字节码确定业务消息存在gRPC流量的情况下,拦截业务消息。
图7为本申请实施例提供的电子设备的结构示意图。
至少一个处理器701,以及与至少一个处理器701连接的存储器702,本申请实施例中不限定处理器701与存储器702之间的具体连接介质,图7中是以处理器701和存储器702之间通过总线700连接为例。总线700在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线700可以分为地址总线、数据总线、控制总线等,为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器701也可以称为控制器,对于名称不做限制。
在本申请实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以执行前文论述的一种基于物联数据的指标确定方法。处理器701可以实现图4所示的装置中各个模块的功能。
其中,处理器701是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。
在一种可能的设计中,处理器701可包括一个或多个处理单元,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、驾驶人员界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器701可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的一种gRPC流量解析方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器701进行设计编程,可以将前述实施例中介绍的一种基于物联数据的指标确定方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图2所示的实施例的一种gRPC流量解析方法。如何对处理器701进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
在此需要说明的是,本申请实施例提供的上述通电子设备,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行上述实施例中的一种基于物联数据的指标确定方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,包括计算机程序,计算机程序被处理器701执行时实现如本申请提供的gRPC流量解析方法的任一方法。
在示例性实施例中,本申请提供的一种gRPC流量解析方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的gRPC流量解析方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的用于gRPC流量解析方法的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务端上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络,例如局域网(LAN)或广域网(WAN),连接到用户电子设备,或者,可以连接到外部电子设备,例如利用因特网服务提供商来通过因特网连接。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程图像缩放设备的处理器以产生一个机器,使得通过计算机或其他可编程图像缩放设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程图像缩放设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程图像缩放设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种gRPC流量解析方法,其特征在于,所述方法包括:
接收来自客户端的业务消息;
基于所述业务消息的字节码确定所述业务消息存在gRPC流量的情况下,拦截所述业务消息,其中,所述字节码是客户端根据预设的编码规则对所述业务消息进行字节码编码得到的;
基于预先配置的规则集合逐层解析被拦截的业务消息,其中,规则集合中包含多个规则,每个规则与所述业务消息中每层的首部字段存在对应关系。
2.根据权利要求1所述的方法,其特征在于,所述基于预先配置的规则集合逐层解析所述业务消息,具体包括:
基于预先配置的规则集合对所述业务消息进行包解析、服务解析、接口解析、数据内容解析。
3.根据权利要求1所述的方法,其特征在于,所述基于预先配置的规则集合逐层解析被拦截的业务消息,具体包括:
根据所述业务消息中每层的首部字段与所述规则的对应关系,从所述规则集合中确定解析所述业务消息的规则;
根据所述解析业务消息的规则,逐层解析所述业务消息。
4.根据权利要求1或3所述的方法,其特征在于,所述根据所述业务消息中每层的首部字段与所述规则的对应关系,从所述规则集合中确定解析所述业务消息的规则,具体包括:
基于package字段从所述规则集合中确定包解析的规则;
基于service字段从所述规则集合中确定服务解析的规则;
基于rpc字段从所述规则集合中确定接口解析的规则;
基于对象字段从所述规则集合中确定数据内容解析的规则。
5.根据权利要求1所述的方法,其特征在于,所述基于所述业务消息的字节码确定所述业务消息存在gRPC流量的情况下,拦截所述业务消息,具体包括:
将所述业务消息传递给内核态的eBPF模块;
所述eBPF模块基于所述业务消息的字节码确定所述业务消息存在gRPC流量的情况下,拦截所述业务消息。
6.一种gRPC流量解析的装置,其特征在于,包括:
收发模块,用于接收来自客户端的业务消息;
处理模块,用于基于所述业务消息的字节码确定所述业务消息存在gRPC流量的情况下,拦截所述业务消息,其中,所述字节码是客户端根据预设的编码规则对所述业务消息进行字节码编码得到的;
解析模块,用于基于预先配置的规则集合逐层解析被拦截的业务消息,其中,规则集合中包含多个规则,每个规则与所述业务消息中每层的首部字段存在对应关系。
7.根据权利要求6所述的装置,其特征在于,所述基于预先配置的规则集合逐层解析所述业务消息,所述解析模块具体用于:
基于预先配置的规则集合对所述业务消息进行包解析、服务解析、接口解析、数据内容解析。
8.根据权利要求6所述的装置,其特征在于,所述基于预先配置的规则集合逐层解析被拦截的业务消息,所述解析模块具体用于:
根据所述业务消息中每层的首部字段与所述规则的对应关系,从所述规则集合中确定解析所述业务消息的规则;
根据所述解析业务消息的规则,逐层解析所述业务消息。
9.根据权利要求6或8所述的装置,其特征在于,所述根据所述业务消息中每层的首部字段与所述规则的对应关系,从所述规则集合中确定解析所述业务消息的规则,所述解析模块具体用于:
基于package字段从所述规则集合中确定包解析的规则;
基于service字段从所述规则集合中确定服务解析的规则;
基于rpc字段从所述规则集合中确定接口解析的规则;
基于对象字段从所述规则集合中确定数据内容解析的规则。
10.根据权利要求1所述的方法,其特征在于,所述基于所述业务消息的字节码确定所述业务消息存在gRPC流量的情况下,拦截所述业务消息,所述处理模块具体用于:
将所述业务消息传递给内核态的eBPF模块;
所述eBPF模块基于所述业务消息的字节码确定所述业务消息存在gRPC流量的情况下,拦截所述业务消息。
11.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-5中任一项所述的gRPC流量解析方法。
12.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-5中任一项所述的gRPC流量解析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310833477.7A CN116781586A (zh) | 2023-07-07 | 2023-07-07 | 一种gRPC流量解析方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310833477.7A CN116781586A (zh) | 2023-07-07 | 2023-07-07 | 一种gRPC流量解析方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116781586A true CN116781586A (zh) | 2023-09-19 |
Family
ID=88006334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310833477.7A Pending CN116781586A (zh) | 2023-07-07 | 2023-07-07 | 一种gRPC流量解析方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116781586A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118034959A (zh) * | 2024-04-10 | 2024-05-14 | 腾讯科技(深圳)有限公司 | 远程过程调用rpc服务调用方法、装置及电子设备 |
-
2023
- 2023-07-07 CN CN202310833477.7A patent/CN116781586A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118034959A (zh) * | 2024-04-10 | 2024-05-14 | 腾讯科技(深圳)有限公司 | 远程过程调用rpc服务调用方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176626B (zh) | 跨编程语言的代码调用方法及装置、介质、设备 | |
US7870482B2 (en) | Web browser extension for simplified utilization of web services | |
CN111338623B (zh) | 一种开发用户界面的方法、装置、介质和电子设备 | |
CN110457144B (zh) | 一种实现前端应用的方法、装置、介质和设备 | |
CN106909361B (zh) | 基于模版引擎的web开发方法和装置 | |
CN109873735B (zh) | H5页面的性能测试方法、装置和计算机设备 | |
CN110895471A (zh) | 安装包生成方法、装置、介质及电子设备 | |
CN112395098B (zh) | 应用程序接口调用方法、装置、存储介质和电子设备 | |
CN116781586A (zh) | 一种gRPC流量解析方法、装置、设备及介质 | |
CN112417016B (zh) | 一种数据交换方法、系统、设备及存储介质 | |
CN112015384A (zh) | 一种接口映射方法和装置 | |
CN113761871A (zh) | 富文本渲染方法、装置、电子设备以及存储介质 | |
CN111600920A (zh) | 基于js的数据请求代理方法、装置、设备及可读存储介质 | |
CN116561013B (zh) | 基于目标服务框架的测试方法、装置、电子设备和介质 | |
CN110377273B (zh) | 一种数据处理的方法、装置、介质和电子设备 | |
CN111414154A (zh) | 前端开发的方法、装置、电子设备和存储介质 | |
CN111767498A (zh) | 一种实现文件信息共享的方法和装置 | |
CN112346774A (zh) | 一种应用安装包的生成方法和装置 | |
CN115374207A (zh) | 业务处理方法及装置、电子设备和计算机可读存储介质 | |
CN109669720B (zh) | 基于Promise的链式异步请求处理方法、装置及电子设备 | |
CN113377376A (zh) | 数据包生成方法、数据包生成装置、电子设备及存储介质 | |
WO2021146895A1 (zh) | 车载图像显示的优化方法、装置、计算机设备和存储介质 | |
CN112818267A (zh) | 数据处理方法、装置、计算机可读存储介质及电子设备 | |
CN110858240A (zh) | 一种前端模块加载方法和装置 | |
CN112688863B (zh) | 网关数据处理方法、装置及电子设备 |
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 |