一种支持实时解析GRPC请求的代理系统和方法技术方案

技术编号:31168544 阅读:18 留言:0更新日期:2021-12-04 13:27
本申请实施例请提供了一种支持实时解析GRPC协议请求的代理方法和系统,所述方法包括:获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;在本地解析所述请求的header报文头中的字段,并通过规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;其中,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的协议约束文件生成的。本申请实施例可以支持对GRPC协议请求的实时解析,以便于可以支持实时查看或修改GRPC协议请求的内容。时查看或修改GRPC协议请求的内容。时查看或修改GRPC协议请求的内容。

【技术实现步骤摘要】
一种支持实时解析GRPC请求的代理系统和方法


[0001]本申请实施例涉及计算机
,尤其涉及一种支持实时解析GRPC请求的代理系统和方法、计算机设备及计算机可读存储介质。

技术介绍

[0002]RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
[0003]RPC采用客户端/服务器模式。请求程序就是一个客户端,而服务提供程序就是一个服务器。首先,客户端调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
[0004]GRPC是在RPC框架的基础上,使用Protobuf进行数据编码,提高数据压缩率的一款语言中立、平台中立、开源的协议。
[0005]protobuf是一款用C++开发的跨语言、二进制编码的数据序列化协议,以超高的压缩率著称。protobuf协议需要双方维护一个协议约束文件,以.proto结尾,使用编译命令,比如proto命令对文件进行解析,会生成对应的Stub程序(语言子程序),客户端和服务端都需要保存这份Stub程序用来进行编解码。本文的protobuf多指的是.proto文件。
[0006]代理服务器可以在转发经过它的流量时,对其进行拦截、查看或修改。目前,一种免费开源的交互式的代理工具可以提供基于python的二次开发,可以修改和查看大多数的协议请求,但是,对于基于GRPC协议的请求(简称GRPC请求),由于客户端/服务器的双方维护特定的协议约束文件,而并非公开的、相对比较固定的协议格式和约束,所以目前的代理服务器均不能支持对GRPC协议请求的实时解析。

技术实现思路

[0007]本申请实施例的目的是提供一种支持实时解析GRPC协议请求的代理系统和方法、计算机设备及计算机可读存储介质,可以支持对GRPC协议请求的实时解析,以便于可以支持实时查看或修改GRPC协议请求的内容。
[0008]本申请实施例的一个方面提供了一种支持实时解析GRPC协议请求的代理方法,包括:
[0009]获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;
[0010]在本地解析所述请求的header报文头中的字段,并通过规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;
[0011]其中,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的
协议约束文件生成的。
[0012]可选的,所述方法还包括:
[0013]将本地和所述规则服务器的解析结果返回给客户端,用户通过所述客户端的前端页面查看所述解析结果。
[0014]可选的,在所述确定该请求的目标服务器的标识后,还包括:
[0015]对所述目标服务器的域名进行规则匹配;若所述目标服务器的域名匹配到请求流量修改规则,则对所述请求根据预定设置进行修改:
[0016]将本地解析出的所述请求的header报文头中的字段,根据预定设置进行修改,得到修改后的header报文头;
[0017]通知所述规则服务器解析所述请求的body报文体中的字段,进而针对解析结果按预定设置对body报文体进行修改,得到修改后的body报文体;
[0018]将本地得到的修改后的header报文头,与从所述规则服务器获取的修改后的body报文体,组合成完整的修改后的GRPC请求。
[0019]可选的,在所述确定该请求的目标服务器的标识后,还包括:
[0020]若所述域名匹配到返回流量修改规则,则通知所述规则服务器根据解析出所述请求的body报文体中的字段,生成相应的响应信息的body报文体;
[0021]之后将通过所述规则服务器生成的响应信息的body报文体,与本地根据解析出的所述请求的header报文头中的字段生成的响应信息的header报文头,组合成完整的响应信息;
[0022]将所述响应信息替换掉由所述目标服务器返回的信息,发送给所述客户端。
[0023]本申请实施例的一个方面又提供了一种支持实时解析GRPC协议请求的代理系统,包括:
[0024]代理服务器和规则服务器;其中
[0025]所述代理服务器用于获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;并在本地解析所述请求的header报文头中的字段;
[0026]所述规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;
[0027]其中,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的协议约束文件生成的。
[0028]本申请实施例的一个方面又提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的支持实时解析GRPC协议请求的代理方法的步骤。
[0029]本申请实施例的一个方面又提供了一种计算机可读存储介质,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的支持实时解析GRPC协议请求的代理方法的步骤。
[0030]本申请实施例提供的支持实时解析GRPC协议请求的代理系统和方法、设备及计算机可读存储介质,代理服务器用于获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;并在本地解析所述请求的header报文头中的字段;规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;其中,所述与所述标识相应的程序是
所述规则服务器预先根据与所述标识对应的协议约束文件生成的。由于规则服务器预先根据协议约束文件生成相应的程序,因此,可以应用预先生成的程序对于代理服务器在线截获的请求进行解析;这样,代理服务器可以实现对GRPC协议请求的实时解析,以便于可以支持实时查看或修改GRPC协议请求的内容。
附图说明
[0031]图1示意性示出了根据本申请实施例的支持实时解析GRPC协议请求的代理方法的应用环境图;
[0032]图2示意性示出了根据本申请实施例一的支持实时解析GRPC协议请求的代理系统的架构图;
[0033]图3示意性示出了根据本申请实施例二的支持实时解析GRPC协议请求的代理方法的流程图;
[0034]图4示意性示出了根据本申请实施例三的支持实时解析GRPC协议请求的代理方法的流程图;
[0035]图5示意性示出了根据本申请实施例四的规则服本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种支持实时解析GRPC请求的代理方法,其特征在于,包括:获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;在本地解析所述请求的header报文头中的字段,并通过规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;其中,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的协议约束文件生成的。2.根据权利要求1所述的方法,其特征在于,还包括:将本地和所述规则服务器的解析结果返回给客户端,用户通过所述客户端的前端页面查看所述解析结果。3.根据权利要求1所述的方法,其特征在于,在所述确定该请求的目标服务器的标识后,还包括:对所述目标服务器的域名进行规则匹配;若所述目标服务器的域名匹配到请求流量修改规则,则对所述请求根据预定设置进行修改:将本地解析出的所述请求的header报文头中的字段,根据预定设置进行修改,得到修改后的header报文头;通知所述规则服务器解析所述请求的body报文体中的字段,进而针对解析结果按预定设置对body报文体进行修改,得到修改后的body报文体;将本地得到的修改后的header报文头,与从所述规则服务器获取的修改后的body报文体,组合成完整的修改后的GRPC请求。4.根据权利要求3所述的方法,其特征在于,在所述确定该请求的目标服务器的标识后,还包括:若所述域名匹配到返回流量修改规则,则通知所述规则服务器根据解析出的所述请求的body报文体中的字段,生成相应的响应信息的body报文体;之后将通过所述规则服务器生成的响应信息的body报文体,与本地根据解析出的所述请求的header报文头中的字段生成的响应信息的header报文头,组合成完整的响应信息;将所述响应信息替换掉由所述目标服务器返回的信息,发送给所述客户端。5.根据权利要求2所述的方法,其特征在于,在所述确定该请求的...

【专利技术属性】
技术研发人员:沈煜超
申请(专利权)人:上海幻电信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1