CN114885004A - 一种基于gRPC实现的动态反向代理系统及方法 - Google Patents

一种基于gRPC实现的动态反向代理系统及方法 Download PDF

Info

Publication number
CN114885004A
CN114885004A CN202210343242.5A CN202210343242A CN114885004A CN 114885004 A CN114885004 A CN 114885004A CN 202210343242 A CN202210343242 A CN 202210343242A CN 114885004 A CN114885004 A CN 114885004A
Authority
CN
China
Prior art keywords
reverse proxy
connection
dynamic reverse
local
identification
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.)
Withdrawn
Application number
CN202210343242.5A
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.)
Shanghai Qianfang Technology Co ltd
Original Assignee
Shanghai Qianfang Technology Co 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 Shanghai Qianfang Technology Co ltd filed Critical Shanghai Qianfang Technology Co ltd
Priority to CN202210343242.5A priority Critical patent/CN114885004A/zh
Publication of CN114885004A publication Critical patent/CN114885004A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general

Abstract

本发明公开了一种基于gRPC实现的动态反向代理系统及方法,动态反向代理系统包括:编解码器,用于识别各种请求消息并进行相应的解码,对响应消息进行相应的编码;流选择器,用于未知服务的请求消息,根据请求消息携带的信息,从动态反向代理系统的连接池connection pool中,获取本地计算任务参与方的连接connection;流处理器,用于根据流选择器获取的连接connection,把请求消息的输入流转发到对应的本地计算任务参与方,并把本地计算任务参与方的响应消息流返回给请求端。本发明基于gRPC实现的动态服务代理和分发,具有高效、安全、可扩展性。

Description

一种基于gRPC实现的动态反向代理系统及方法
技术领域
本发明涉及计算机软件领域,尤其涉及的是一种基于gRPC实现的动态反向代理系统及方法。
背景技术
在分布式隐私计算网络中,每个计算任务进程都是动态启动的。这些计算任务进程,既是一个服务端,即提供给其它任务进程调用,也是一个客户端,即需要调用其它服务进程,它们之间通过gRPC相互通信。这些计算任务进程,是和具体任务相关的,任务计算完成,这些进程也将退出。
这些计算任务进程,分布在不同的网络里,为了安全,不能直接暴露在公网之上。因此,如何为这些隐藏在内网中的动态服务进程提供访问通道呢?是一个急需解决的技术问题。
目前业界没有通用的gRPC动态服务的反向代理技术。像Nginx的,虽然可以作为gRPC的反向代理,但是只能反向代理部署的已知服务,这可以理解为只能反向代理静态的服务,不能提供动态服务的反向代理。
因此,现有技术存在缺陷,需要改进。
发明内容
本发明所要解决的技术问题是:提供一种基于gRPC实现的动态服务代理和分发,具有高效、安全、可扩展的基于gRPC实现的动态反向代理系统及方法。
本发明的技术方案如下:一种基于gRPC实现的动态反向代理系统,包括:编解码器,用于识别各种请求消息并进行相应的解码,对响应消息进行相应的编码;流选择器,用于未知服务的请求消息,根据请求消息携带的信息,从动态反向代理系统的连接池connection pool中,获取本地计算任务参与方的连接connection;流处理器,用于根据流选择器获取的连接connection,把请求消息的输入流转发到对应的本地计算任务参与方,并把本地计算任务参与方的响应消息流返回给请求端。
应用于上述技术方案,所述的动态反向代理系统中,每一计算任务参与方设有唯一的标识taskID和唯一的身份partyID,每一请求消息中携带有其对应计算任务的计算任务参与方的标识taskID和身份partyID。
应用于上述各个技术方案,所述的动态反向代理系统中,还包括一用于保存本地计算任务参与方的连接connection的连接池connection pool。
应用于上述各个技术方案,所述的动态反向代理系统中,所述编解码器包括一gRPC缺省编解码器和一未知服务编解码器;所述gRPC缺省编解码器用于识别已知服务的各种请求消息并进行解码,对响应消息进行相应的编码;所述未知服务编解码器用于识别未知服务的各种请求消息,并将未知服务的请求消息发送给流选择器。
应用于上述各个技术方案,一种基于gRPC实现的动态反向代理方法,包括如下步骤:步骤S1:注册本地计算任务参与方,将每一本地计算任务参与方的标识taskID、身份partyID、地址端口endpoints和连接connection相关联并注册到本地动态反向代理系统中;步骤S2:采用编解码器对请求消息进行识别,对已知服务的请求消息,执行步骤S3,对未知服务的请求消息,执行步骤S4;步骤S3:对已知服务的请求消息进行解码,并对响应消息进行编码后返回给请求端;步骤S4:将未知服务请求消息发送给流处理器,使用流选择器获取请求消息中携带的计算任务参与方的标识taskID和身份partyID,从本地本地动态反向代理系统中获取与标识taskID和身份partyID相关联的连接connection,将请求消息输入流转发到对应的本地计算任务参与方,并获取本地计算任务参与方的响应消息,并对响应消息进行编码后返回给请求端。
应用于上述各个技术方案,所述的动态反向代理方法中,步骤S1具体包括以下步骤:步骤A1:每一本地动态反向代理系统获取本地计算任务参与方的标识taskID、身份partyID和地址端口endpoints;步骤A2:通过回拨本地计算任务参与方的地址端口endpoints,建立本地动态反向代理系统与本地计算任务参与方的连接connection;步骤A3:将建立的连接connection与标识taskID、身份partyID相关联并注册保存在本地动态反向代理系统的连接池connection pool中。
应用于上述各个技术方案,所述的动态反向代理方法中,步骤A3中,在保存连接connection时,是以标识taskID和身份partyID作为查询关键词进行保存。
应用于上述各个技术方案,所述的动态反向代理方法中,步骤S2中:是采用一gRPC缺省编解码器和一未知服务编解码器分别对各类型的请求消息进行识别,并且,步骤S3中,是采用gRPC缺省编解码器对已知服务的请求消息进行解码,并对响应消息进行编码后返回给请求端;步骤S4中,是通过未知服务编解码器将未知服务的请求消息发送流选择器,并且,对响应消息进行编码后返回给请求端。
应用于上述各个技术方案,所述的动态反向代理方法中,步骤S4执行完之后,还执行步骤S5:注销计算任务参与方,将保存的连接connection进行删除。
应用于上述各个技术方案,所述的动态反向代理方法中,步骤S5具体包括以下步骤:步骤B1:获取计算任务参与方的标识taskID和身份partyID;步骤B2:以获取的标识taskID和身份partyID为关键词在本地动态反向代理系统的连接池connection pool中进行查询,获取对应的连接connection;步骤B3:关闭获取的连接connection并将其从连接池connection pool中删除。
本发明的有益效果为:
本发明在收到一个未知服务时,可以由自定义流选择器和流处理器来处理这个未知服务;实现了无感知的代理,以及动态服务代理和分发;并且,基于gRPC实现,gRPC本身就是一个高效的PRC技术,并且,支持SSL,国密,安全性较高,很容扩展开发与各种业务场景配合的gRPC反向代理,gRPC服务技术在IT行业使用相当广泛,在需要动态gRPC服务的场景,适当扩展都可以使用。基于gRPC技术框架,使参与计算任务的不同参与方,无需知道其它方的具体服务地址就可以协同完成计算任务。
附图说明
图1为本发明中计算任务参与方与动态反向代理系统之间的连接示意图;
图2为本发中动态反向代理系统明的示意图;
图3为本发明中动态反向代理系统注册计算任务参与方的流程图;
图4为本发明中动态反向代理系统注销计算任务参与方的流程图;
图5为本发明中动态反向代理方法的实现连接图。
具体实施方式
以下结合附图和具体实施例,对本发明进行详细说明。
本实施例提供了一种基于gRPC实现的动态反向代理系统,其中,如图1和2所示,基于gRPC实现的动态反向代理系统(简称VIA)包括:编解码器、流选择器、流处理器和连接池connection pool,其中,编解码器包括一gRPC缺省编解码器和一未知服务编解码器;所述gRPC缺省编解码器用于识别已知服务的各种请求消息并进行解码,对响应消息进行相应的编码;所述未知服务编解码器用于识别未知服务的各种请求消息,并将未知服务的请求消息发送给流选择器;例如,对于能识别的protobuf消息(计算任务注册消息、计算任务注销消息),调用gRPC协议缺省的编解码器;而对于不能识别的其它请求消息,则无需继续编解码,采用自定义的一未知服务编解码器直接把请求消息的原数据,发送给流选择器。
流选择器根据请求消息携带的计算任务参与方的标识taskID和身份partyID,从动态反向代理系统的连接池connection pool中,获取本地计算任务参与方的连接connection;然后,流处理器根据流选择器获取的连接connection,把请求消息的输入流转发到对应的本地计算任务参与方,本地计算任务参与方将响应消息发回给未知服务编解码器,未知服务编解码器对响应消息进行编码后返回给请求端。
其中,每个计算任务在启动时,参与该计算任务的每个计算任务参与方将通过调用本地动态反向代理系统的参与方注册服务,把自己的标识taskID,身份partyID和地址端口endpoints注册到本地动态反向代理系统中,注册后,该计算任务参与方即为本地动态反向代理系统的本地计算任务参与方,其中,计算任务参与方的标识taskID是用于标识参与的计算任务的唯一标识ID,而身份partyID是计算任务参与方在参与该计算任务时的唯一身份ID。
在注册时,本地动态反向代理系统,将回拨注册的本地计算任务参与方的地址端口endpoints,建立一个本地动态反向代理系统与本地计算任务参与方的连接connection,并将建立的连接connection与标识taskID、身份partyID相关联并注册保存在本地动态反向代理系统的连接池connection pool中;在保存连接connection时,是以标识taskID和身份partyID作为查询关键词进行保存。
如此,当本地的计算任务参与方需要访问其它非本地的计算任务参与方时,可以通过访问其它非本地的计算任务参与方的本地动态反向代理系统VIA,通过其本地动态反向代理系统VIA的流选择器和流处理器来完成。
并且,本发明还提供了一种基于gRPC实现的动态反向代理方法,包括如下步骤:步骤S1:注册本地计算任务参与方,将每一本地计算任务参与方的标识taskID、身份partyID、地址端口endpoints和连接connection相关联并注册到本地动态反向代理系统中。
如图3所示,注册本地计算任务参与方的注册方法具体包括以下步骤:步骤A1:每一本地动态反向代理系统获取本地计算任务参与方的标识taskID、身份partyID和地址端口endpoints;步骤A2:通过回拨本地计算任务参与方的地址端口endpoints,建立本地动态反向代理系统与本地计算任务参与方的连接connection;步骤A3:将建立的连接connection与标识taskID、身份partyID相关联并注册保存在本地动态反向代理系统的连接池connection pool中。
并且,步骤A3中,在保存连接connection时,是以标识taskID和身份partyID作为查询关键词进行保存。
其中,每个计算任务的计算任务参与方都有一个唯一的标识taskID和身份partyID;其中,标识taskID是计算任务参与方用于标识参与的计算任务的唯一标识ID,而身份partyID是计算任务参与方在参与该计算任务的唯一身份ID,当计算任务开始时,各个方计算任务参与方需要调用各自的本地动态反向代理系统VIA的注册服务把自己的标识taskID和自己的身份partyID,以及各自的地址端口endpoints注册到自己方的本地动态反向代理系统中。
并且,步骤S2:采用编解码器对请求消息进行识别,对已知服务的请求消息,执行步骤S3,对未知服务的请求消息,执行步骤S4。其中,具体是采用一gRPC缺省编解码器和一未知服务编解码器分别对各类型的请求消息进行识别。
步骤S3:对已知服务的请求消息进行解码,并对响应消息进行编码后返回给请求端;具体是采用gRPC缺省编解码器对已知服务的请求消息进行解码,并对响应消息进行编码后返回给请求端。
步骤S4:对于未知的服务,未知服务编解码器将未知服务请求消息发送给流处理器,使用流选择器获取请求消息中携带的计算任务参与方的taskID和partyID,从本地本地动态反向代理系统中获取与taskID和partyID相关联的连接connection,将请求消息输入流转发到对应的本地计算任务参与方,并获取本地计算任务参与方的响应消息,并对响应消息进行编码后返回给请求端,具体,是通过未知服务编解码器将未知服务的请求消息发送流选择器,并且,对响应消息进行编码后返回给请求端。
另外,如图4所示,步骤S4执行完之后,还执行步骤S5:注销计算任务参与方,将保存的连接connection进行删除;如此,当计算任务结束后,各计算任务参与方需要调用自己方的本地动态反向代理系统的参与方注销服务,以便本地动态反向代理系统清理不必要的内存占用。
其中,步骤S5具体包括以下步骤:步骤B1:本地动态反向代理系统获取本地计算任务参与方的标识taskID、身份partyID;步骤B2:以获取的taskID和partyID为关键词在本地动态反向代理系统的连接池connection pool进行查询,获取对应的连接connection;步骤B3:关闭获取的连接connection并将其从连接池connection pool中删除。
在计算过程中,一个本地计算任务参与方需要访问其它非本地计算任务参与方时,在请求消息的,将携带要访问的其它非本地计算任务参与方的标识taskID和身份partyID,访问对方的本地动态反向代理系统VIA。对方的本地动态反向代理系统VIA将从请求消息的上下文中携带的信息中获取要访问的计算任务参与方的标识taskID和身份partyID,然后根据taskID+partyID作为关键词,在其他非本地计算任务参与方的本地动态反向代理系统VIA中,获取得到要访问的计算任务参与方的连接connection,其本地动态反向代理系统VIA把请求消息,直接转发到这个连接connection的计算任务参与方中,完成对本次计算任务的反向代理。
本发明动态反向代理系统的特点
高效:gRPC本身就是一个高效的PRC技术;
安全:动态反向代理系统支持SSL,国密;
可扩展:基于动态反向代理系统的技术,很容易扩展开发与各种业务场景配合的gRPC反向代理;
本发明主要提供了基于gRPC实现的动态服务代理和分发,其目标是高效、安全、可扩展。
在gRPC技术框架中,当gRPC服务收到一个未知服务时,可以由用户自定义一个处理器来处理这个未知服务。动态反向代理系统正是利用了这个机制,从而实现了无感知的代理。
因此:动态反向代理系统本身就是一个gRPC服务,提供计算任务参与方注册服务,以及计算任务参与方注销服务。动态反向代理系统提供一个编解码器,对于能识别的protobuf消息,调用gRPC缺省的编解码器;而对于不能识别的其它消息,无需继续编解码,直接返回原数据(用于转发)。动态反向代理系统提供一个流选择器,流选择器根据请求的上下文信息,选择出到正确的目标方的连接connection。动态反向代理系统提供一个对未知服务的流处理器,流处理器通过流选择器得到的connection,把请求的输入流转发到目标方,并把目标方的响应回复给请求方。
以上仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于gRPC实现的动态反向代理系统,其特征在于,包括:
编解码器,用于识别各种请求消息并进行相应的解码,对响应消息进行相应的编码;
流选择器,用于未知服务的请求消息,根据请求消息携带的信息,从动态反向代理系统的连接池connection pool中,获取本地计算任务参与方的连接connection;
流处理器,用于根据流选择器获取的连接connection,把请求消息的输入流转发到对应的本地计算任务参与方,并把本地计算任务参与方的响应消息流返回给请求端。
2.根据权利要求1所述的动态反向代理系统,其特征在于:每一计算任务参与方设有唯一的标识taskID和唯一的身份partyID,每一请求消息中携带有其对应计算任务的计算任务参与方的标识taskID和身份partyID。
3.根据权利要求2所述的动态反向代理系统,其特征在于:还包括一用于保存本地计算任务参与方的连接connection的连接池connection pool。
4.根据权利要求2所述的动态反向代理系统,其特征在于:所述编解码器包括一gRPC缺省编解码器和一未知服务编解码器;所述gRPC缺省编解码器用于识别已知服务的各种请求消息并进行解码,对响应消息进行相应的编码;所述未知服务编解码器用于识别未知服务的各种请求消息,并将未知服务的请求消息发送给流选择器。
5.一种基于gRPC实现的动态反向代理方法,其特征在于,包括如下步骤:
步骤S1:注册本地计算任务参与方,将每一本地计算任务参与方的标识taskID、身份partyID、地址端口endpoints和连接connection相关联并注册到本地动态反向代理系统中;
步骤S2:采用编解码器对请求消息进行识别,对已知服务的请求消息,执行步骤S3,对未知服务的请求消息,执行步骤S4;
步骤S3:对已知服务的请求消息进行解码,并对响应消息进行编码后返回给请求端;
步骤S4:将未知服务请求消息发送给流处理器,使用流选择器获取请求消息中携带的计算任务参与方的标识taskID和身份partyID,从本地动态反向代理系统中获取与标识taskID和身份partyID相关联的连接connection,将请求消息输入流转发到对应的本地计算任务参与方,并获取本地计算任务参与方的响应消息,对响应消息进行编码后返回给请求端。
6.根据权利要求5所述的动态反向代理方法,其特征在于,步骤S1具体包括以下步骤:
步骤A1:每一本地动态反向代理系统获取本地计算任务参与方的标识taskID、身份partyID和地址端口endpoints;
步骤A2:通过回拨本地计算任务参与方的地址端口endpoints,建立本地动态反向代理系统与本地计算任务参与方的连接connection;
步骤A3:将建立的连接connection与标识taskID、身份partyID相关联并注册保存在本地动态反向代理系统的连接池connection pool中。
7.根据权利要求6所述的动态反向代理系统,其特征在于:步骤A3中,在保存连接connection时,是以标识taskID和身份partyID作为查询关键词进行保存。
8.根据权利要求5所述的动态反向代理方法,其特征在于:步骤S2中:是采用一gRPC缺省编解码器和一未知服务编解码器分别对各类型的请求消息进行识别,并且,步骤S3中,是采用gRPC缺省编解码器对已知服务的请求消息进行解码,并对响应消息进行编码后返回给请求端;步骤S4中,是通过未知服务编解码器将未知服务的请求消息发送流选择器,并且,对响应消息进行编码后返回给请求端。
9.根据权利要求5所述的动态反向代理方法,其特征在于:步骤S4执行完之后,还执行步骤S5:注销计算任务参与方,将保存的连接connection进行删除。
10.根据权利要求9所述的动态反向代理方法,其特征在于,步骤S5具体包括以下步骤:
步骤B1:获取计算任务参与方的标识taskID和身份partyID;
步骤B2:以获取的标识taskID和身份partyID为关键词在本地动态反向代理系统的连接池connection pool中进行查询,获取对应的连接connection;
步骤B3:关闭获取的连接connection并将其从连接池connection pool中删除。
CN202210343242.5A 2022-04-02 2022-04-02 一种基于gRPC实现的动态反向代理系统及方法 Withdrawn CN114885004A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210343242.5A CN114885004A (zh) 2022-04-02 2022-04-02 一种基于gRPC实现的动态反向代理系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210343242.5A CN114885004A (zh) 2022-04-02 2022-04-02 一种基于gRPC实现的动态反向代理系统及方法

Publications (1)

Publication Number Publication Date
CN114885004A true CN114885004A (zh) 2022-08-09

Family

ID=82669688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210343242.5A Withdrawn CN114885004A (zh) 2022-04-02 2022-04-02 一种基于gRPC实现的动态反向代理系统及方法

Country Status (1)

Country Link
CN (1) CN114885004A (zh)

Similar Documents

Publication Publication Date Title
KR101574377B1 (ko) 회의를 위한 통신시스템 및 방법과 컴퓨터 판독가능 저장매체
US9148333B2 (en) System and method for providing anonymity in a session initiated protocol network
US7505574B2 (en) Method and system for providing an improved communications channel for telephone conference initiation and management
JP4444518B2 (ja) 様々なネットワークを介して匿名ユーザ間でのインテリジェントなセッションを確立する分散システム
US6928479B1 (en) System computer product and method for providing a private communication portal
US9065788B2 (en) Method, device and system for voice communication
JP2003515968A (ja) インターネット・プロトコル電話の音声/ビデオ・メッセージの預託および検索
WO2015000356A1 (zh) 一种WebRTC通信方法、相关设备及系统
KR20120040231A (ko) 인스턴트 메시징 서비스와 단문 메시지 서비스 간의 연동을 위한 방법 및 시스템
US7532614B2 (en) Methods and apparatus for facilitating remote communication with an IP network
EP2974159B1 (en) Method, device and system for voice communication
CA2384066C (en) Remote assembly of messages for distributed applications
CN105005469A (zh) 一种基于Zookeeper和RabbitMQ的非阻塞调用方法
US20050071361A1 (en) System and method for associating a device with a user
CN114885004A (zh) 一种基于gRPC实现的动态反向代理系统及方法
CN103875232B (zh) 开会方法和装置
US8488590B2 (en) Method and device using data objects and their replications for carrying out communications in a distributed system
US20160241607A1 (en) Reverse signaling to establish network calls
JP2010068346A (ja) 通信サーバ装置、アドレス解決方法およびアドレス解決プログラム
CN112333344B (zh) 一种线路代理方法、装置、代理服务器及存储介质
US10063530B1 (en) Voice-over-internet protocol credentials
JP3888615B2 (ja) インターネットプロトコール・ネットワークのゲートキーパにおけるメッセージ処理方法
CN116896544B (zh) 用于建立实时通信连接的方法、装置、设备和介质
JP2009049559A (ja) メッセージ中継装置、メッセージ中継システム及びプログラム
CA2584534C (en) System and method for remote assembly of messages to create a control message

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20220809

WW01 Invention patent application withdrawn after publication