CN113746851B - 一种支持实时解析grpc请求的代理系统和方法 - Google Patents
一种支持实时解析grpc请求的代理系统和方法 Download PDFInfo
- Publication number
- CN113746851B CN113746851B CN202111048870.2A CN202111048870A CN113746851B CN 113746851 B CN113746851 B CN 113746851B CN 202111048870 A CN202111048870 A CN 202111048870A CN 113746851 B CN113746851 B CN 113746851B
- Authority
- CN
- China
- Prior art keywords
- request
- server
- rule
- grpc
- proxy
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例请提供了一种支持实时解析GRPC协议请求的代理方法和系统,所述方法包括:获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;在本地解析所述请求的header报文头中的字段,并通过规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;其中,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的协议约束文件生成的。本申请实施例可以支持对GRPC协议请求的实时解析,以便于可以支持实时查看或修改GRPC协议请求的内容。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种支持实时解析GRPC请求的代理系统和方法、计算机设备及计算机可读存储介质。
背景技术
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户端/服务器模式。请求程序就是一个客户端,而服务提供程序就是一个服务器。首先,客户端调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
GRPC是在RPC框架的基础上,使用Protobuf进行数据编码,提高数据压缩率的一款语言中立、平台中立、开源的协议。
protobuf是一款用C++开发的跨语言、二进制编码的数据序列化协议,以超高的压缩率著称。protobuf协议需要双方维护一个协议约束文件,以.proto结尾,使用编译命令,比如proto命令对文件进行解析,会生成对应的Stub程序(语言子程序),客户端和服务端都需要保存这份Stub程序用来进行编解码。本文的protobuf多指的是.proto文件。
代理服务器可以在转发经过它的流量时,对其进行拦截、查看或修改。目前,一种免费开源的交互式的代理工具可以提供基于python的二次开发,可以修改和查看大多数的协议请求,但是,对于基于GRPC协议的请求(简称GRPC请求),由于客户端/服务器的双方维护特定的协议约束文件,而并非公开的、相对比较固定的协议格式和约束,所以目前的代理服务器均不能支持对GRPC协议请求的实时解析。
发明内容
本申请实施例的目的是提供一种支持实时解析GRPC协议请求的代理系统和方法、计算机设备及计算机可读存储介质,可以支持对GRPC协议请求的实时解析,以便于可以支持实时查看或修改GRPC协议请求的内容。
本申请实施例的一个方面提供了一种支持实时解析GRPC协议请求的代理方法,包括:
获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;
在本地解析所述请求的header报文头中的字段,并通过规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;
其中,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的协议约束文件生成的。
可选的,所述方法还包括:
将本地和所述规则服务器的解析结果返回给客户端,用户通过所述客户端的前端页面查看所述解析结果。
可选的,在所述确定该请求的目标服务器的标识后,还包括:
对所述目标服务器的域名进行规则匹配;若所述目标服务器的域名匹配到请求流量修改规则,则对所述请求根据预定设置进行修改:
将本地解析出的所述请求的header报文头中的字段,根据预定设置进行修改,得到修改后的header报文头;
通知所述规则服务器解析所述请求的body报文体中的字段,进而针对解析结果按预定设置对body报文体进行修改,得到修改后的body报文体;
将本地得到的修改后的header报文头,与从所述规则服务器获取的修改后的body报文体,组合成完整的修改后的GRPC请求。
可选的,在所述确定该请求的目标服务器的标识后,还包括:
若所述域名匹配到返回流量修改规则,则通知所述规则服务器根据解析出所述请求的body报文体中的字段,生成相应的响应信息的body报文体;
之后将通过所述规则服务器生成的响应信息的body报文体,与本地根据解析出的所述请求的header报文头中的字段生成的响应信息的header报文头,组合成完整的响应信息;
将所述响应信息替换掉由所述目标服务器返回的信息,发送给所述客户端。
本申请实施例的一个方面又提供了一种支持实时解析GRPC协议请求的代理系统,包括:
代理服务器和规则服务器;其中
所述代理服务器用于获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;并在本地解析所述请求的header报文头中的字段;
所述规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;
其中,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的协议约束文件生成的。
本申请实施例的一个方面又提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的支持实时解析GRPC协议请求的代理方法的步骤。
本申请实施例的一个方面又提供了一种计算机可读存储介质,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的支持实时解析GRPC协议请求的代理方法的步骤。
本申请实施例提供的支持实时解析GRPC协议请求的代理系统和方法、设备及计算机可读存储介质,代理服务器用于获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;并在本地解析所述请求的header报文头中的字段;规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;其中,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的协议约束文件生成的。由于规则服务器预先根据协议约束文件生成相应的程序,因此,可以应用预先生成的程序对于代理服务器在线截获的请求进行解析;这样,代理服务器可以实现对GRPC协议请求的实时解析,以便于可以支持实时查看或修改GRPC协议请求的内容。
附图说明
图1示意性示出了根据本申请实施例的支持实时解析GRPC协议请求的代理方法的应用环境图;
图2示意性示出了根据本申请实施例一的支持实时解析GRPC协议请求的代理系统的架构图;
图3示意性示出了根据本申请实施例二的支持实时解析GRPC协议请求的代理方法的流程图;
图4示意性示出了根据本申请实施例三的支持实时解析GRPC协议请求的代理方法的流程图;
图5示意性示出了根据本申请实施例四的规则服务器生成用于解析GRPC请求的程序的方法流程图;
图6示意性示出了根据本申请实施例五的适于实现支持实时解析GRPC协议请求的代理方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
图1示意性示出了根据本申请实施例的环境应用示意图。如图1所示:
代理服务器2可以通过网络4连接多个终端设备6。
代理服务器2可以为终端设备6提供代理服务。代理服务可以包括诸如转发终端设备6的请求,对终端设备6的请求进行拦截、查看或修改。例如,代理服务器2可以提供通过本申请实施例的支持实时解析GRPC请求的代理方法的查看请求内容的服务和修改请求内容的服务。
用户通过终端设备6发出的流量请求将会通过IP被转发到指定的代理服务器2;例如,用户通过终端设备6发送的GRPC请求会通过IP被转发到指定的代理服务器2;
代理服务器2中可以设置多个https proxy pod(代理容器),可以分别对接收的流量请求进行处理:
代理服务器2通过monitor(监控)服务得到各个https proxy pod(代理容器)的状态,然后将流量通过负载均衡策略分配给各个https proxy pod(代理容器);
每个https proxy pod(代理容器)会对其分配的请求进行解析,得到请求的详细信息。例如,https proxy pod(代理容器)会对其分配的GRPC请求进行解析,得到GRPC请求的详细信息,即包括GRPC请求的报文头(header)的字段和报文体(body)的内容。
代理服务器2可以是以下设备,诸如:机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。
代理服务器2可以位于诸如单个场所之类的数据中心,或者分布在不同的地理位置(例如,在多个场所)中。代理服务器2可以经由一个或多个网络4提供服务。网络4包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或类似。网络4可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,其组合等。网络4可以包括无线链路,诸如蜂窝链路,卫星链路,Wi-Fi链路等。
终端设备6,可以被配置为访问代理服务器2。终端设备6可以包括任何类型的终端设备6,如:移动设备,平板设备,膝上型计算机,智能设备(例如,智能手表,智能眼镜),虚拟现实耳机,游戏设备,机顶盒,数字流设备,机器人,车载终端,智能电视,电子书阅读器,MP4(运动图像专家组音频层IV)播放器等。
终端设备6,可以运行Windows系统、安卓(AndroidTM)系统等操作系统。用户还可以根据需要安装各种应用程序安装包,从而得到实现各种特定功能的应用程序。
以下将通过多个实施例介绍支持实时解析GRPC请求的代理方案。该方案可以通过计算机设备1300实施,计算机设备1300可以是代理服务器2或其计算节点。
实施例一
图2示出了本申请实施例一的一种支持实时解析GRPC请求的代理系统的架构示意图,其中包括:规则服务器3和上述的代理服务器2;进一步,该代理系统还可包括:为代理服务器2提供日志记录服务的日志服务器7,以及为代理服务器2提供负载均衡监控的监控服务器5。
其中,规则服务器3中存储有分别与各目标服务器的标识对应的程序,用以分别对发送给各目标服务器的GRPC请求进行编解码,即用以分别对发送给各目标服务器的GRPC请求进行解析。
在示例性的实施例中,所述目标服务器的标识具体可以是目标服务器的URI(Uniform Resource Identifier,统一资源标识符)。
其中,与目标服务器的标识相应的程序是规则服务器3预先根据与所述标识对应的协议约束文件生成的:
规则服务器3对于新提交的对应于一个目标服务器的标识(比如URI)的协议约束文件,若通过版本控制系统,比如Git系统,判断出该协议约束文件相对于保存的对应于所述标识(URI)的协议约束文件的旧版本有变更内容,则触发所述规则服务器3对新提交的协议约束文件进行转换:规则服务器3使用编译命令,比如proto命令,对所述协议约束文件进行解析,生成对应的Stub程序;并将生成的Stub程序与所述标识(URI)对应存储。
代理服务器2用于获取到终端设备6的客户端发送的GRPC请求后,确定该请求的目标服务器的标识(URI);并在本地解析所述请求的header报文头中的字段。
规则服务器3用于使用与所述标识(URI)相应的程序解析所述请求的body报文体中的字段。
进一步,代理服务器2还可将本地和所述规则服务器的解析结果返回给终端设备6的客户端,用户通过所述客户端的前端页面可以查看所述解析结果,即用户通过所述客户端的前端页面可以查看解析出的所述请求的详细内容。
进一步,规则服务器3还可对所述目标服务器的域名进行规则匹配;若所述域名匹配到返回流量修改规则,则根据解析出的所述请求的body报文体中的字段,生成相应的响应信息的body报文体;
相应地,代理服务器2还可将规则服务器3生成的响应信息的body报文体,与本地根据解析出的所述请求的header报文头中的字段生成的header报文头,组合成完整的响应信息;并将所述响应信息替换掉由所述目标服务器返回的信息,发送给所述客户端。
本申请实施例一提供的一种支持实时解析GRPC请求的代理系统中,包括:代理服务器和规则服务器;其中,所述代理服务器用于获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识(比如URI);并在本地解析所述请求的header报文头中的字段;所述规则服务器使用与所述标识(URI)相应的程序解析所述请求的body报文体中的字段;其中,所述与所述标识(URI)相应的程序是所述规则服务器预先根据与所述标识(URI)对应的协议约束文件生成的。由于规则服务器预先根据协议约束文件生成相应的程序,因此,可以应用预先生成的程序对于代理服务器在线截获的请求进行解析;这样,代理服务器可以实现对GRPC协议请求的实时解析,以便于可以支持实时查看或修改GRPC协议请求的内容。
实施例二
图3示意性示出了根据本申请实施例二的一种支持实时解析GRPC请求、查看请求内容的代理方法的流程图。
如图3所示,该支持实时解析GRPC请求、查看请求内容的代理方法可以包括如下步骤S301~S305,其中:
步骤S301:代理服务器2获取到终端设备6的客户端发送的GRPC请求。
本步骤中,终端设备6的客户端发送至目标服务器的GRPC请求会被转发到代理服务器2,由代理服务器2截获。
步骤S302:代理服务器2确定获取的请求的目标服务器的标识。
本步骤中,代理服务器2可以根据所述请求的目标服务器的IP地址确定所述目标服务器的标识(URI)。
步骤S303:代理服务器2在本地解析所述请求的header报文头中的字段。
由于对请求的header报文头的解析,不需要使用基于协议约束文件生成的程序,因此,代理服务器2可以在本地对请求的header报文头进行解析,即以分布式方式进行解析,以减轻规则服务器3的负担。
步骤S304:代理服务器2通过规则服务器3使用与所述标识相应的程序解析所述请求的body报文体中的字段。
本步骤中,代理服务器2通知规则服务器3解析所述请求的body;规则服务器3查找出与所述请求的目标服务器的标识相对应的程序,进而使用该程序解析出所述请求的body报文体中的字段。
步骤S305:代理服务器2将本地的解析结果和规则服务器3的解析结果返回给客户端。
本步骤中,代理服务器2将本地的所述请求的header的解析结果,以及规则服务器3的所述请求的body的解析结果,组合成所述请求的最终解析结果返回给终端设备6的客户端;客户端可以将代理服务器2返回的请求的解析结果呈现于前端页面,用户可以通过所述客户端的web前端页面查看所述解析结果。
本申请实施例二提供的一种支持实时解析GRPC请求、查看请求内容的代理方法中,由于规则服务器预先根据协议约束文件生成相应的程序,因此,可以应用预先生成的程序对于代理服务器在线截获的请求进行解析;这样,代理服务器可以支持对GRPC协议请求的实时解析,并将解析结果返回给客户端,以便于用户可以实时查看GRPC请求的内容。
实施例三
图4示意性示出了根据本申请实施例三的一种支持实时解析GRPC请求、修改请求内容的代理方法的流程图。
如图4所示,该支持实时解析GRPC请求、修改请求内容的代理方法可以包括如下步骤S401~S412,其中:
步骤S401:代理服务器2获取到终端设备6的客户端发送的GRPC请求。
本步骤中,终端设备6的客户端发送至目标服务器的GRPC请求会被转发到代理服务器2,由代理服务器2截获。
步骤S402:代理服务器2确定获取的请求的目标服务器的标识(URI)和域名。
步骤S403:代理服务器2对所述目标服务器的域名进行规则匹配,判断所述域名是否匹配保存规则,若是,则执行如下步骤S404;否则,执行如下步骤S405;
本步骤中,代理服务器2可以在本地,也可以通过规则服务器3对所述目标服务器的域名进行规则匹配,若所述域名匹配到保存规则,即所述域名满足所述保存规则中设置的域名条件,则执行如下步骤S404;否则,执行如下步骤S405;
例如,保存规则中可以设置若干域名的名称,当所述目标服务器的域名与保存规则中设置的一个域名的名称相同,则判断所述域名匹配到保存规则;若所述目标服务器的域名与保存规则中设置的任何一个域名的名称都不相同,则判断所述域名不匹配所述保存规则。
步骤S404:代理服务器2将所述请求备份到日志服务器7中,不执行转发。
步骤S405:代理服务器2继续对所述域名进行规则匹配,判断所述域名是否匹配请求流量修改规则,若是,则执行如下步骤S406;否则,执行如下步骤S407;
本步骤中,代理服务器2可以在本地,也可以通过规则服务器3继续对所述域名进行请求流量修改规则的匹配;若判断所述域名匹配到请求流量修改规则,即所述域名满足所述请求流量修改规则中设置的域名条件,则执行如下步骤S406;否则,执行如下步骤S407;
例如,请求流量修改规则中可以设置若干域名的名称,当所述目标服务器的域名与请求流量修改规则中设置的一个域名的名称相同,则判断所述域名匹配到请求流量修改规则;若所述目标服务器的域名与请求流量修改规则中设置的任何一个域名的名称都不相同,则判断所述域名不匹配所述请求流量修改规则。
步骤S406:代理服务器2对所述请求根据预定设置进行修改。
本步骤中,代理服务器2将本地解析出的所述请求的header报文头中的字段,根据预定设置进行修改,得到修改后的header报文头;
代理服务器2通知所述规则服务器对所述请求的body报文体进行修改;具体地,规则服务器3使用与所述标识(URI)相应的程序解析所述请求的body报文体中的字段,进而针对解析结果按预定设置对body报文体进行修改,得到修改后的body报文体。
代理服务器2从规则服务器3获取修改后的body报文体:代理服务器2判断从规则服务器3获取的修改后的body报文体是否为压缩文件,若是,则对其解压后获得解压的修改后的body报文体;
代理服务器2将本地得到的修改后的header报文头,与从规则服务器3获取的修改后的body报文体,组合成完整的修改后的GRPC请求。
步骤S407:代理服务器2继续对GRPC请求的域名进行规则匹配,判断所述域名是否匹配返回流量修改规则,若是,则执行如下步骤S409;否则,执行如下步骤S408;
本步骤中,代理服务器2可以在本地,也可以通过规则服务器3继续对GRPC请求的域名进行返回流量修改规则的匹配;该GRPC请求可以是原始接收的GRPC请求,也可以是修改后的GRPC请求。
若判断所述域名匹配到返回流量修改规则,即所述域名满足所述返回流量修改规则中设置的域名条件,则执行如下步骤S409;否则,执行如下步骤S408;
例如,返回流量修改规则中可以设置若干域名的名称,当所述目标服务器的域名与返回流量修改规则中设置的一个域名的名称相同,则判断所述域名匹配到返回流量修改规则;若所述目标服务器的域名与返回流量修改规则中设置的任何一个域名的名称都不相同,则判断所述域名不匹配所述返回流量修改规则。
步骤S408:代理服务器2将目标服务器针对所述请求返回的响应信息转发给到终端设备6的客户端。
步骤S409:代理服务器2根据解析出所述请求的body报文体中的字段,生成相应的响应信息的body报文体;
本步骤中,代理服务器2解析出所述请求的body报文体中的字段,进而根据解析出所述请求的body报文体中的字段,生成相应的响应信息的body报文体。
步骤S410:代理服务器2通过规则服务器3生成响应信息的body报文体;
本步骤中,代理服务器2通知所述规则服务器根据解析出所述请求的body报文体中的字段,生成相应的响应信息的body报文体;具体地,规则服务器3使用与所述标识(URI)相应的程序解析所述请求的body报文体中的字段,进而根据解析出所述请求的body报文体中的字段,生成相应的响应信息的body报文体。
步骤S411:代理服务器2将本地根据解析出的所述请求的header报文头中的字段生成的响应信息的header报文头,与规则服务器3生成的响应信息的body报文体,组合成完整的响应信息;
步骤S412:代理服务器2将所述响应信息替换掉由所述目标服务器返回的信息,发送给终端设备6的客户端。
例如,目标服务器是google的服务器,代理服务器2可以将生成的响应信息替换掉google返回的信息,发送给终端设备6的客户端。
本申请实施例三提供的一种支持实时解析GRPC请求、修改请求的内容的代理方法中,由于规则服务器预先根据协议约束文件生成相应的程序,因此,可以应用预先生成的程序对于代理服务器在线截获的请求进行解析;这样,代理服务器可以支持对GRPC协议请求的实时解析,并根据解析结果修改请求的内容,将修改后的响应信息返回给客户端。
实施例四
图5示意性示出了根据本申请实施例四的一种规则服务器生成用于解析GRPC请求的程序的方法流程图。
如图5所示,该规则服务器生成用于解析GRPC请求的程序的方法可以包括如下步骤S501~S502,其中:
步骤S501:规则服务器3将新提交的协议约束文件,通过版本控制系统判断是否有变更内容;
具体地,规则服务器3对于新提交的对应于某个目标服务器的标识(URI)的协议约束文件,通过版本控制系统判断该协议约束文件相对于保存的对应于所述标识(URI)的协议约束文件的旧版本是否有变更内容。
步骤S502:规则服务器3若判断有变更内容,则触发对所述协议约束文件进行转换;
具体地,规则服务器3在判断新提交的对应于所述标识(URI)的协议约束文件,相对于保存的对应于所述标识(URI)的协议约束文件的旧版本有变更内容后,则触发对新提交的协议约束文件进行转换:
规则服务器3使用proto命令对所述协议约束文件进行解析,生成对应的Stub程序;并将生成的Stub程序与所述标识(URI)对应存储。
实施例五
图6示意性示出了根据本申请实施例五的适于实现支持实时解析GRPC请求的代理方法的计算机设备1300的硬件架构示意图。本实施例中,计算机设备1300是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图6所示,计算机设备1300至少包括但不限于:可通过系统总线相互通信链接存储器1310、处理器1320、网络接口1330。其中:
存储器1310至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器1310可以是计算机设备1300的内部存储模块,例如该计算机设备1300的硬盘或内存。在另一些实施例中,存储器1310也可以是计算机设备1300的外部存储设备,例如该计算机设备1300上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器1310还可以既包括计算机设备1300的内部存储模块也包括其外部存储设备。本实施例中,存储器1310通常用于存储安装于计算机设备1300的操作系统和各类应用软件,例如支持实时解析GRPC请求的代理方法的程序代码等。此外,存储器1310还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器1320在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器1320通常用于控制计算机设备1300的总体操作,例如执行与计算机设备1300进行数据交互或者通信相关的控制和处理等。本实施例中,处理器1320用于运行存储器1310中存储的程序代码或者处理数据。
网络接口1330可包括无线网络接口或有线网络接口,该网络接口1330通常用于在计算机设备1300与其他计算机设备之间建立通信链接。例如,网络接口1330用于通过网络将计算机设备1300与外部终端相连,在计算机设备1300与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(WidebandCode Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图6仅示出了具有部件1310-1330的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器1310中的支持实时解析GRPC请求的代理方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器1320)所执行,以完成本申请实施例。
实施例六
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的支持实时解析GRPC请求的代理方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中直播视频的带宽统计方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
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所述的方法,其特征在于,在所述确定该请求的目标服务器的标识后,还包括:
若所述目标服务器的域名匹配到保存规则,则将该请求备份到日志服务器中。
6.根据权利要求2所述的方法,其特征在于,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的协议约束文件生成的,具体包括:
所述规则服务器对于新提交的对应于所述标识的协议约束文件,若通过版本控制系统判断出该协议约束文件相对于保存的对应于所述标识的协议约束文件的旧版本有变更内容,则触发所述规则服务器对新提交的协议约束文件进行转换:
所述规则服务器使用proto命令对所述协议约束文件进行解析,生成对应的Stub程序;并
将生成的Stub程序与所述标识对应存储。
7.根据权利要求1-6任一所述的方法,其特征在于,所述目标服务器的标识,具体为:所述目标服务器的统一资源标识符URI。
8.一种支持实时解析GRPC请求的代理系统,其特征在于,包括:代理服务器和规则服务器;其中
所述代理服务器用于获取到客户端发送的GRPC请求后,确定该请求的目标服务器的标识;并在本地解析所述请求的header报文头中的字段;
所述规则服务器使用与所述标识相应的程序解析所述请求的body报文体中的字段;
其中,所述与所述标识相应的程序是所述规则服务器预先根据与所述标识对应的协议约束文件生成的。
9.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至4中任意一项所述的支持实时解析GRPC请求的代理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求1至4中任意一项所述的支持实时解析GRPC请求的代理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111048870.2A CN113746851B (zh) | 2021-09-08 | 2021-09-08 | 一种支持实时解析grpc请求的代理系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111048870.2A CN113746851B (zh) | 2021-09-08 | 2021-09-08 | 一种支持实时解析grpc请求的代理系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113746851A CN113746851A (zh) | 2021-12-03 |
CN113746851B true CN113746851B (zh) | 2023-08-18 |
Family
ID=78737051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111048870.2A Active CN113746851B (zh) | 2021-09-08 | 2021-09-08 | 一种支持实时解析grpc请求的代理系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113746851B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114978743B (zh) * | 2022-06-08 | 2023-07-18 | 杭州指令集智能科技有限公司 | 一种跨网络段的服务通信系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453250A (zh) * | 2016-09-05 | 2017-02-22 | 掌阅科技股份有限公司 | 一种大数据rpc的处理方法 |
CN107122292A (zh) * | 2016-10-21 | 2017-09-01 | 北京小度信息科技有限公司 | 一种模拟服务的方法及系统 |
CN107733866A (zh) * | 2017-09-12 | 2018-02-23 | 阿里巴巴集团控股有限公司 | Rpc请求、rpc请求处理方法、装置以及设备 |
CN108289060A (zh) * | 2017-01-09 | 2018-07-17 | 腾讯科技(深圳)有限公司 | 一种基于rpc服务的数据处理方法以及装置 |
CN111427664A (zh) * | 2020-03-25 | 2020-07-17 | 杭州电子科技大学 | 基于容器的协议解析方法、装置、系统以及存储介质 |
US10732944B1 (en) * | 2019-05-14 | 2020-08-04 | Baidu Usa Llc | Generic verification approach for Protobuf based projects |
CN111629014A (zh) * | 2019-02-27 | 2020-09-04 | 北京嘀嘀无限科技发展有限公司 | 请求代理实现方法、实现装置、服务器和存储介质 |
CN112714180A (zh) * | 2020-12-25 | 2021-04-27 | 北京北信源软件股份有限公司 | 服务调用方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112835652A (zh) * | 2019-11-25 | 2021-05-25 | 杭州中天微系统有限公司 | 数据交互方法及装置 |
-
2021
- 2021-09-08 CN CN202111048870.2A patent/CN113746851B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453250A (zh) * | 2016-09-05 | 2017-02-22 | 掌阅科技股份有限公司 | 一种大数据rpc的处理方法 |
CN107122292A (zh) * | 2016-10-21 | 2017-09-01 | 北京小度信息科技有限公司 | 一种模拟服务的方法及系统 |
CN108289060A (zh) * | 2017-01-09 | 2018-07-17 | 腾讯科技(深圳)有限公司 | 一种基于rpc服务的数据处理方法以及装置 |
CN107733866A (zh) * | 2017-09-12 | 2018-02-23 | 阿里巴巴集团控股有限公司 | Rpc请求、rpc请求处理方法、装置以及设备 |
CN111629014A (zh) * | 2019-02-27 | 2020-09-04 | 北京嘀嘀无限科技发展有限公司 | 请求代理实现方法、实现装置、服务器和存储介质 |
US10732944B1 (en) * | 2019-05-14 | 2020-08-04 | Baidu Usa Llc | Generic verification approach for Protobuf based projects |
CN111427664A (zh) * | 2020-03-25 | 2020-07-17 | 杭州电子科技大学 | 基于容器的协议解析方法、装置、系统以及存储介质 |
CN112714180A (zh) * | 2020-12-25 | 2021-04-27 | 北京北信源软件股份有限公司 | 服务调用方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于RPC的GPS服务器设计;毕岚;;海南师范大学学报(自然科学版)(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113746851A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4363847B2 (ja) | インタラクティブ・テレビ用のデジタル・テレビ・アプリケーション・プロトコル | |
CN111309279B (zh) | 多屏互动显示方法及装置 | |
CN108156210B (zh) | 目标资源的获取方法和装置 | |
CN111756674B (zh) | 网络通信方法、系统、设备及计算机可读存储介质 | |
CN114124929B (zh) | 跨网络的数据处理方法和装置 | |
CN110413418B (zh) | 缓存同步装置及方法,缓存同步系统、电子设备 | |
CN112799825A (zh) | 一种任务处理方法和网络设备 | |
CN101795392A (zh) | 下载应用数据的方法、数字电视接收终端及系统 | |
CN111935017B (zh) | 跨网络的应用调用方法、装置及路由设备 | |
US12041688B2 (en) | Screen projection method and system | |
CN111917900A (zh) | 一种域名代理的请求处理方法及装置 | |
CN110661853A (zh) | 一种数据代理方法、装置、计算机设备及可读存储介质 | |
CN112751897A (zh) | 负载均衡方法、装置、介质及设备 | |
CN114157607A (zh) | 媒体流传输方法和系统 | |
CN113746851B (zh) | 一种支持实时解析grpc请求的代理系统和方法 | |
CN110740464A (zh) | 一种nf服务发现方法及设备 | |
CN112511366A (zh) | 测试系统、方法、装置、设备及存储介质 | |
CN111245831A (zh) | Ftp数据传输方法及装置、服务端和客户端的信息交互系统 | |
CN106411978B (zh) | 一种资源缓存方法及装置 | |
CN112702441B (zh) | 基于容器的访问数据处理方法、装置、系统及存储介质 | |
US20130226984A1 (en) | Method and apparatus of providing optimized web browser communications | |
CN109005250B (zh) | 用于访问服务端的方法和装置 | |
CN115297098B (zh) | 边缘服务获取方法和装置、边缘计算系统、介质、设备 | |
CN114915565B (zh) | 网络调试的方法和系统 | |
CN112148320A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |