CN113726869A - 通信方法、网关以及电子设备 - Google Patents
通信方法、网关以及电子设备 Download PDFInfo
- Publication number
- CN113726869A CN113726869A CN202110990740.4A CN202110990740A CN113726869A CN 113726869 A CN113726869 A CN 113726869A CN 202110990740 A CN202110990740 A CN 202110990740A CN 113726869 A CN113726869 A CN 113726869A
- Authority
- CN
- China
- Prior art keywords
- request
- server
- protocol
- calling
- gateway
- 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 81
- 238000004891 communication Methods 0.000 title claims abstract description 43
- 230000004044 response Effects 0.000 claims description 34
- 238000006243 chemical reaction Methods 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 13
- 238000013519 translation Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 description 24
- 230000018109 developmental process Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 238000011045 prefiltration Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 235000014510 cooky Nutrition 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Classifications
-
- 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/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/08—Protocols for interworking; Protocol conversion
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供了一种通信方法、网关以及电子设备。所述通信方法应用于微服务架构的网关,包括:从所述微服务架构的客户端或第一服务端获取基于第一调用协议的第一请求;将所述第一请求转换为基于第二调用协议的第二请求,所述第二请求用于调用所述微服务架构的第二服务端的目标逻辑;向所述第二服务端发送所述第二请求。在本发明实施例的方案中,网关能够将基于第一调用协议的第一请求转换为基于第二调用协议的第二请求,并且向服务端发送第二请求,因此实现了调用协议的一致性,提高了微服务架构的接口调用效率,进而提高了网关与服务端之间的兼容性。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种通信方法、网关以及电子设备。
背景技术
在微服务架构中,不同的微服务可以部署在不同的服务端中,位于客户端与服务端之间的网关包含鉴权、路由配置、限流降级、负载均衡、协议转换等相关的功能,以执行客户端与服务端之间的通信,同时,不同的服务端也可以通过网关进行通信,实现不同服务器之间的协同,以提高服务端的计算效率。
为了便于开发和维护符合微服务架构需求的服务端和网关,需要特定的开发框架。开发框架包括能够开发和部署服务端和网关两者的开发框架、也包括主要用于开发网关和服务端中的一者的开发框架。例如,由于服务端的数据处理比较复杂,开发人员往往会利用面向服务端的接口调用的开发框架,以提高数据处理效率。
但是,这样的服务端开发框架与网关开发框架之间的兼容性较差。
发明内容
有鉴于此,本发明实施例提供一种通信方法、网关以及电子设备,以至少部分解决上述问题。
根据本发明实施例的第一方面,提供了一种通信方法,应用于微服务架构的网关,包括:从所述微服务架构的客户端或第一服务端获取基于第一调用协议的第一请求;将所述第一请求转换为基于第二调用协议的第二请求,所述第二请求用于调用所述微服务架构的第二服务端的目标逻辑;向所述第二服务端发送所述第二请求。
作为本发明的另一实现方式,所述从所述微服务架构的客户端获取基于第一调用协议的第一请求,包括:从所述微服务架构的客户端获取HTTP请求。
作为本发明的另一实现方式,从所述微服务架构的第一服务端获取基于第一调用协议的第一请求,包括:从所述微服务架构的第一服务端获取第一请求,所述第一服务端配置有脚本运行环境,所述第一请求由所述脚本运行环境基于所述第一调用协议生成。
作为本发明的另一实现方式,所述从所述微服务架构的第一服务端获取第一请求,包括:从所述微服务架构的第一服务端获取HTTP请求,所述脚本运行环境为Node.js。
作为本发明的另一实现方式,所述方法还包括:从所述第二服务端接收所述第二请求的第二响应,所述第二响应基于所述第二调用协议。
作为本发明的另一实现方式,所述方法还包括:将所述第二响应转换为基于所述第一调用协议的第一响应;返回所述第一响应。
作为本发明的另一实现方式,所述方法还包括:获取当前协议转换表到所述网关中,所述当前协议转换表指示所述第一调用协议与所述第二调用协议之间的对应关系;所述将所述第一请求转换为基于第二调用协议的第二请求,包括:根据所述当前协议转换表,将所述第一请求转换为基于第二调用协议的第二请求。
作为本发明的另一实现方式,所述当前协议转换表具体指示所述第一调用协议的路由参数与所述第二调用协议的属性参数之间的关系。
作为本发明的另一实现方式,所述方法还包括:根据所述第一调用协议的路由参数,对所述第一请求进行负载均衡;所述向所述第二服务端发送所述第二请求,包括:根据所述负载均衡的结果,向所述第二服务端发送所述第二请求。
作为本发明的另一实现方式,所述向所述第二服务端发送所述第二请求,包括:通过泛化调用接口,向配置在所述网关之外的所述第二服务端发送所述第二请求。
作为本发明的另一实现方式,所述方法还包括:对所述网关进行初始化时,对所述泛化调用接口进行初始化。
作为本发明的另一实现方式,所述方法通过代理程序执行。
根据本发明实施例的第二方面,提供了一种网关,应用于微服务架构,包括:获取模块,从所述微服务架构的客户端或第一服务端获取基于第一调用协议的第一请求;转换模块,将所述第一请求转换为基于第二调用协议的第二请求,所述第二请求用于调用所述微服务架构的第二服务端的目标逻辑;发送模块,向所述第二服务端发送所述第二请求。
根据本发明实施例的第三方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面所述的方法对应的操作。
根据本发明实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的方法。
在本发明实施例的方案中,网关能够将基于第一调用协议的第一请求转换为基于第二调用协议的第二请求,并且向服务端发送第二请求,因此实现了调用协议的一致性,提高了微服务架构的接口调用效率,进而提高了网关与服务端之间的兼容性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为根据一个示例的微服务架构网关的示意图;
图2A为根据本发明的一个实施例的通信方法的步骤流程图;
图2B为图2A的微服务架构网关的示意性框图;
图2C为图2A的通信方法的子步骤流程图;
图3为根据本发明的另一实施例的通信方法的示意性框图;
图4为根据本发明的另一实施例的网关的结构框图;以及
图5为根据本发明的另一实施例的电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
在基于微服务架构进行开发和部署时,开发框架包括能够开发和部署服务端和网关两者的开发框架,例如,Spring Cloud。还可以包括主要用于开发服务端的开发框架,例如,Dubbo。
具体而言,Spring Cloud是一系列框架的有序集合,利用Spring Boot的开发便利性简化了分布式***基础设施的开发。例如,可以采用Spring Boot进行与服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监测等相关的启动和部署,并且开发模式一致。换言之,Spring Cloud将开发的比较成熟、稳定性较好的服务框架进行了组合,通过Spring Boot开发模式进行再封装,以屏蔽掉了复杂的配置和实现原理,最终为开发者提供了简洁、易部署和易维护的分布式***开发工具包。
更具体地,Spring Cloud的子项目大致可分成两类,一类是对框架Spring Boot的封装和抽象,也是数量最多的项目。第二类是开发了一部分分布式***的基础设施的实现,例如,Spring Cloud Stream、Spring Cloud Gateway等。
Spring Cloud Gateway是Spring Cloud的一个网关项目,该项目是基于Spring5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,为微服务架构提供了一种简单有效的统一的API(Application Programming Interface,应用程序接口)路由管理方式。Spring Cloud Gateway是基于WebFlux框架实现,WebFlux框架的底层采用了高性能的Reactor模式通信框架Netty。Spring Cloud Gateway的底层通过过滤器(Filter)链和(路由)Route模块,Filter提供了统一的路由方式,并且基于Filter链提供了诸如安全、监测/指标和限流等基本网关功能。可以采用Filter链中的各个Filter接收和修改请求。Filter为一种实例,可以对每个Filter进行不同的配置。Route模块由ID、目标URI、断言(Predicate)和过滤器定义。如果Predicate为真,则路由匹配,目标URI会被访问。
Dubbo是一种分布式服务框架,用于提供高性能和透明化的远程服务调用(RemoteProcedure Call,RPC)方案,以及面向服务架构方案。Dubbo包括多个功能节点,例如,Provider用于暴露服务的服务提供方;Consumer用于调用远程服务的服务消费方;Registry用于服务注册与发现的注册中心;Monitor用于统计服务的调用次调和调用时间的监测中心;Container用于服务运行容器。
图1为根据一个示例的微服务架构网关的示意图。图1的微服务架构包括客户端、网关和服务端。网关可以采用上述用于网关的开发框架进行配置,例如,采用SpringCloudGateway进行配置。用于网关的开发框架可以仅仅使用适用于网关自身的配置,还可以适用于服务端的配置。用于网关的开发框架可以对通信协议栈中的各层进行配置,也可以仅基于上层协议进行配置。在一个示例中,用于网关的开发框架可以包括用于执行协议转换的模块。图1的网关从客户端接收访问请求(request),并且向客户端返回响应(response)。图1示例性地示出了Dubbo服务端和HTTP服务端。Dubbo服务端采用Dubbo协议进行接口调用。HTTP服务端采用HTTP协议进行接口调用。网关接收客户端发送的请求(request),经由诸如Spring CloudGateway规定的Filter链中的Pre Filter和通信框架Netty的NettyRoutingFilter生成HTTP服务端的访问请求,Dubbo服务端包括Provider和Consumer,其中,Consumer可以嵌入到HTTP服务端中,使得HTTP服务端能够经由Consumer调用Provider的逻辑,得到Provider的返回响应。然后,Provider的返回响应经由包括NettyRoutingFilter和Post Filter在内的过滤器链执行调用协议的处理,再通过通信框架Netty生成返回到客户端的响应(response)。
图2A为根据本发明的另一实施例的通信方法的步骤流程图。所述通信方法应用于微服务架构的网关,包括:
步骤S210:从微服务架构的客户端或第一服务端获取基于第一调用协议的第一请求。
应理解,文中的网关可以通过Spring CloudGateway进行配置。微服务架构包括客户端、第一服务端和第二服务端。客户端可以通过网关与第一服务端或第二服务端通信,换言之,客户端可以发送基于第一调用协议的请求,以调用第一服务端或第二服务端中的调用接口。
此外,第一服务端可以与通过网关与第二服务端进行通信。例如,第一服务端可以通过网关向第二服务端发送基于第一调用协议的请求,以调用第二服务端的接口。
步骤S220:将第一请求转换为基于第二调用协议的第二请求,第二请求用于调用微服务架构的第二服务端的目标逻辑。
应理解,第二服务端可以采用上述用于服务端的开发框架进行配置。用于服务端的开发框架可以包括应用程序接口(Application Programming Interface,API)或目标逻辑的泛化调用接口(Invoker)。
例如,用于服务端的开发框架可以为Dubbo,相应地,第二服务端可以为Dubbo服务端(例如,Dubbo Provider)。第二调用协议可以为Dubbo服务端所采用的Dubbo协议、hsf协议或webservice协议等。第二请求可以为目标逻辑的API接口或Invoker接口。换言之,可以采用第二调用协议进行接口调用,包括API接口调用或泛化调用。其中,API接口可以为Consumer与Provider之间的调用接口,泛化调用接口可以为通过包括泛化接口参数在内的请求(第二请求的示例)对Provider中的逻辑进行调用。
步骤S230:向第二服务端发送第二请求。
应理解,网关向配置在网关之外的第二服务端发送第二请求,以通过API或泛化调用接口获取目标逻辑。
在本发明实施例的方案中,网关能够将基于第一调用协议的第一请求转换为基于第二调用协议的第二请求,并且向服务端发送第二请求,因此实现了调用协议的一致性,提高了微服务架构的接口调用效率。
图2B为图2A的通信方法的示意性框图。图2B的微服务架构网关是对图1的微服务架构的改进的一个示例。Java Agent Block和Rout definition locator可以理解为在图1的基础上改进的部分。Java Agent Block可以为实现图2A的通信方法的模块的示例。JavaAgent Block对应于JavaAgent的程序,其可以实现为代理程序,所在不改变图1的网关程序的代码的情况下实现相应的功能。例如,网关程序可以安装在诸如Java虚拟机(JavaVirtual Machine,JVM)的底层运行环境中,JavaAgent的程序通过更改底层运行环境的程序实现对网关程序中的逻辑的调用。
在图2B的示例中,Java Agent Block接收来自Pre Filter的第一请求,经过诸如图2A中的处理,生成发送到Dubbo服务端的具有第二调用协议(例如,Dubbo协议)的第二请求。Dubbo服务端直接向Java Agent Block返回响应,并且经由过滤器链中后续的过滤器生成返回到客户端或第一服务端的响应。而无需像在图1中那样,Dubbo服务端通过HTTP服务端的中转生成返回到客户端或第一服务端的响应。
此外,在图2B的示例中,HTTP服务端仍然可以通过通信框架Netty的NettyRoutingFilter与网关进行交互,有利于服务端侧的多种调用协议的兼容。本发明实施例能够在Spring CloudGateway中支持Dubbo协议转换。
具体而言,步骤S220可以采用配置的第一预设过滤器(HTTP2DubboRoutingFilter)和泛化调用接口(Invoker)实现。例如,在Java Agent中,可以将Invoker与HTTP2DubboRoutingFilter配置为不同模块。可以在启动HTTP2DubboRoutingFilter时,启动Invoker。
图2C为图2A的通信方法的步骤S220的子步骤流程图。
步骤S220可以包括如下子步骤:
步骤S221:HTTP2DubboRoutingFilter从Pre Filter获取HTTP协议格式的第一请求。
步骤S222:HTTP2DubboRoutingFilter对第一请求进行处理,得到Dubbo协议格式的第二请求。具体而言,可以对URL进行处理,得到包括特定三元组参数的Dubbo协议消息。
步骤S223:HTTP2DubboRoutingFilter向Invoker发送第二请求,以便Invoker根据第二请求,获取Dubbo服务端的目标逻辑。
步骤S224:向Invoker返回目标逻辑的返回值,该返回值具有Dubbo协议格式。具体而言,Invoker可以从HTTP2DubboRoutingFilter接收Dubbo协议消息,并且从Dubbo协议消息中解析出三元组参数,得到Dubbo服务端(例如,provider)的目标逻辑。
步骤S225:Invoker将返回值返回到HTTP2DubboRoutingFilter。具体而言,经由第二预设过滤器(DubboWriteResponseFilter)将返回值封装为Dubbo协议格式,并且经由HTTP2DubboRoutingFilter从Dubbo协议格式转换为HTTP协议格式,并且发送到PostFilter进行后续处理。
在本发明的另一实现方式中,从微服务架构的客户端获取基于第一调用协议的第一请求,包括:从微服务架构的客户端获取HTTP请求。
在本发明的另一实现方式中,从微服务架构的第一服务端获取基于第一调用协议的第一请求,包括:从微服务架构的第一服务端获取第一请求,第一服务端配置有脚本运行环境,第一请求由脚本运行环境基于第一调用协议生成。第一服务端可以为非Dubbo服务端,第二服务端可以为Dubbo服务端。由此,本发明实施例支持了HTTP和Dubbo的协议转换,也支持了非Dubbo服务端通过脚本运行环境发送基于Dubbo调用协议的请求,提高了南北流量和东西流量的调用效率。
在本发明的另一实现方式中,从微服务架构的第一服务端获取第一请求,包括:从微服务架构的第一服务端获取HTTP请求,脚本运行环境为Node.js。
具体而言,经由网关的访问流量可以分为东西流量和南北流量。东西流量是指不同的服务端之间的通信访问,南北流量是指客户端与服务端之间的通信访问。对于东西流量而言,非Dubbo服务端可以采用基于Dubbo-proxy的接口发送基于Dubbo调用协议的请求,例如,采用Node.js发送基于Dubbo调用协议的请求,实现了跨语言的Dubbo服务调用。对于南北流量而言,可以通过基于HTTP配置统一资源定位符(Uniform Resource Identifier,URI)请求,保证南北流量的安全性。
在本发明的另一实现方式中,该方法还包括:从第二服务端接收第二请求的第二响应,第二响应基于第二调用协议。
在本发明的另一实现方式中,该方法还包括:将第二响应转换为基于第一调用协议的第一响应;返回第一响应。
在本发明的另一实现方式中,该方法还包括:获取当前协议转换表到网关中,当前协议转换表指示第一调用协议与第二调用协议之间的对应关系。将第一请求转换为基于第二调用协议的第二请求,包括:根据当前协议转换表,将第一请求转换为基于第二调用协议的第二请求。
在本发明的另一实现方式中,当前协议转换表具体指示第一调用协议的路由参数与第二调用协议的属性参数之间的关系。
在本发明的另一实现方式中,方法还包括:根据第一调用协议的路由参数,对第一请求进行负载均衡。向第二服务端发送第二请求,包括:根据负载均衡的结果,向第二服务端发送第二请求。
此外,网关程序中还配置有全局级别负载均衡策略,例如,全局级别负载均衡策略可以对通信访问执行调配。根据第一调用协议的路由参数,对第一请求进行负载均衡实现了接口级别的负载均衡策略。其中,接口级别负载均衡策略的优先级可以设置为大于全局级别的负载均衡策略,从而提高了负载均衡的效率。
在本发明的另一实现方式中,向第二服务端发送第二请求,包括:通过泛化调用接口,向配置在网关之外的第二服务端发送第二请求。
在本发明的另一实现方式中,该方法还包括:启动目标进程,执行所述网关中的网关程序;在目标进程中,初始化泛化调用接口。换言之,泛化调用接口在目标进程中初始化,对泛化调用接口执行了热启动,提高了泛化调用接口的响应速度。
此外,可以向客户端或第一服务端暴露第二调用协议的泛化调用参数,例如,可以向HTTP客户端或非Dubbo服务端暴露Dubbo协议规定的三元组参数,即,服务名、版本号、分组。
在本发明的另一实现方式中,该方法通过代理程序调用网关的网关程序实现,该方法还包括:通过代理程序更改网关程序的底层运行环境。例如,本示例的方案中可以通过Java Agent技术无侵入执行网关程序中的Dubbo协议转换功能。
图3为根据本发明的另一实施例的通信方法的示意性框图。图3的方法可以对应于图2的方法。HTTP2DubboRoutingFilter可以Pre Filter获取HTTP协议格式的第一请求。HTTP2DubboRoutingFilter对第一请求进行处理,得到Dubbo协议格式的第二请求。
具体而言,可以对URL进行处理,得到包括特定三元组参数的Dubbo协议消息。
然后,HTTP2DubboRoutingFilter向Invoker发送第二请求,Invoker根据第二请求,获取Dubbo服务端的目标逻辑,并且向Invoker返回目标逻辑的返回值,该返回值具有Dubbo协议格式。
具体而言,在Java Agent中,可以将Invoker与HTTP2DubboRoutingFilter配置为不同模块。可以在启动HTTP2DubboRoutingFilter时,启动Invoker。Invoker可以从HTTP2DubboRoutingFilter接收Dubbo协议消息,并且从Dubbo协议消息中解析出三元组参数,得到Dubbo服务端(例如,provider)的目标逻辑。
然后,Invoker将返回值返回到HTTP2DubboRoutingFilter。HTTP2DubboRoutingFilter将返回值从Dubbo协议格式转换为HTTP协议格式,并且发送到Post Filter进行后续处理。
具体而言,可以通过Java Agent将Dubbo协议转换过滤器***到Filter链中。然后,可以通过Java Agent程序从路由配置服务器中拉取路由信息(例如,经由新增、修改或删除处理的路由信息),并及时反馈路由策略和Dubbo调用接口的处理。
可以在网关程序的进程中加载Dubbo协议转换Filter,并且热启动泛化调用接口(Invoker)。换言之,可以将泛化调用接口配置在加载Dubbo协议转换Filter的进程中。
图4为根据本发明的另一实施例的网关的结构框图。图4的网关应用于微服务架构,网关可以采用Spring Cloud Gateway进行配置。网关从客户端接收访问请求,并且向客户端返回响应。服务端可以包括Dubbo服务端和诸如HTTP服务端的非Dubbo服务端。Dubbo服务端采用Dubbo协议进行接口调用。HTTP服务端采用HTTP协议进行接口调用。网关接收客户端发送的请求,经由诸如Spring Cloud Gateway规定的Filter链中的Pre Filter和通信框架Netty的NettyRoutingFilter生成HTTP服务端的访问请求,Dubbo服务端包括Provider和Consumer,其中,Consumer可以嵌入到HTTP服务端中,使得HTTP服务端能够经由Consumer调用Provider的逻辑,得到Provider的返回响应。然后,Provider的返回响应经由NettyRoutingFilter和Post Filter等过滤器链执行调用协议的处理,再通过通信框架Netty生成返回到客户端的响应。
图4的网关包括:
获取模块410,从微服务架构的客户端或第一服务端获取基于第一调用协议的第一请求。
应理解,文中的网关可以通过Spring CloudGateway进行配置。微服务架构包括客户端、第一服务端和第二服务端。客户端可以通过网关与第一服务端或第二服务端通信,换言之,客户端可以发送基于第一调用协议的请求,以调用第一服务端或第二服务端中的调用接口。
此外,第一服务端可以与通过网关与第二服务端进行通信。例如,第一服务端可以通过网关向第二服务端发送基于第一调用协议的请求,以调用第二服务端的接口。
转换模块420,将第一请求转换为基于第二调用协议的第二请求,第二请求用于调用微服务架构的第二服务端的目标逻辑。
应理解,第二服务端可以为Dubbo服务端,例如,Dubbo提供方。第二调用协议可以为Dubbo协议、hsf协议或Webservice协议等。第二请求可以为目标逻辑的应用程序接口(Application Programming Interface,API)或目标逻辑的泛化调用接口(Invoker)。
发送模块430,向第二服务端发送第二请求。
应理解,网关向配置在网关之外的第二服务端发送第二请求,以通过API或泛化调用接口获取目标逻辑。
在本发明实施例的方案中,网关能够将基于第一调用协议的第一请求转换为基于第二调用协议的第二请求,并且向服务端发送第二请求,因此实现了调用协议的一致性,提高了微服务架构的接口调用效率。
在另一些示例中,获取模块具体用于:从微服务架构的客户端获取HTTP请求。
在另一些示例中,获取模块具体用于:从微服务架构的第一服务端获取第一请求,第一服务端配置有脚本运行环境,第一请求由脚本运行环境基于第一调用协议生成。
在另一些示例中,获取模块具体用于:从微服务架构的第一服务端获取HTTP请求,脚本运行环境为Node.js。
在另一些示例中,网关还包括:接收模块,从第二服务端接收第二请求的第二响应,第二响应基于第二调用协议。
在另一些示例中,转换模块还用于:将第二响应转换为基于第一调用协议的第一响应;返回第一响应。
在另一些示例中,获取模块还用于:获取当前协议转换表到网关中,当前协议转换表指示第一调用协议与第二调用协议之间的对应关系。转换模块具体用于:根据当前协议转换表,将第一请求转换为基于第二调用协议的第二请求。
在另一些示例中,当前协议转换表具体指示第一调用协议的路由参数与第二调用协议的属性参数之间的关系。
在另一些示例中,网关还包括:负载均衡模块,根据第一调用协议的路由参数,对第一请求进行负载均衡。发送模块具体用于:根据负载均衡的结果,向第二服务端发送第二请求。
在另一些示例中,发送模块具体用于:通过泛化调用接口,向配置在网关之外的第二服务端发送第二请求。
在另一些示例中,网关还包括:启动目标进程,执行所述网关中的网关程序;在所述目标进程中,初始化所述泛化调用接口。
本实施例的装置用于实现前述多个方法实施例中相应的方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
参照图5,示出了根据本发明的另一实施例的电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:
处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它电子设备或服务器进行通信。
处理器502,用于执行程序510,具体可以执行上述方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510具体可以用于使得处理器502执行以下操作:从所述微服务架构的客户端或第一服务端获取基于第一调用协议的第一请求;将所述第一请求转换为基于第二调用协议的第二请求,所述第二请求用于调用所述微服务架构的第二服务端的目标逻辑;向所述第二服务端发送所述第二请求。
此外,程序510中各步骤的具体实现可以参见上述方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。
Claims (14)
1.一种通信方法,应用于微服务架构的网关,包括:
从所述微服务架构的客户端或第一服务端获取基于第一调用协议的第一请求;
将所述第一请求转换为基于第二调用协议的第二请求,所述第二请求用于调用所述微服务架构的第二服务端的目标逻辑;
向所述第二服务端发送所述第二请求。
2.根据权利要求1所述的方法,其中,所述从所述微服务架构的客户端获取基于第一调用协议的第一请求,包括:
从所述微服务架构的客户端获取HTTP请求。
3.根据权利要求1所述的方法,其中,从所述微服务架构的第一服务端获取基于第一调用协议的第一请求,包括:
从所述微服务架构的第一服务端获取第一请求,所述第一服务端配置有脚本运行环境,所述第一请求由所述脚本运行环境基于所述第一调用协议生成。
4.根据权利要求3所述的方法,其中,所述从所述微服务架构的第一服务端获取第一请求,包括:
从所述微服务架构的第一服务端获取HTTP请求,所述脚本运行环境为Node.js。
5.根据权利要求1所述的方法,其中,所述方法还包括:
从所述第二服务端接收所述第二请求的第二响应,所述第二响应基于所述第二调用协议。
6.根据权利要求5所述的方法,其中,所述方法还包括:
将所述第二响应转换为基于所述第一调用协议的第一响应;
返回所述第一响应。
7.根据权利要求1所述的方法,其中,所述方法还包括:
获取当前协议转换表到所述网关中,所述当前协议转换表指示所述第一调用协议与所述第二调用协议之间的对应关系;
所述将所述第一请求转换为基于第二调用协议的第二请求,包括:
根据所述当前协议转换表,将所述第一请求转换为基于第二调用协议的第二请求。
8.根据权利要求7所述的方法,其中,所述当前协议转换表具体指示所述第一调用协议的路由参数与所述第二调用协议的属性参数之间的关系。
9.根据权利要求8所述的方法,其中,所述方法还包括:根据所述第一调用协议的路由参数,对所述第一请求进行负载均衡;
所述向所述第二服务端发送所述第二请求,包括:
根据所述负载均衡的结果,向所述第二服务端发送所述第二请求。
10.根据权利要求1所述的方法,其中,所述向所述第二服务端发送所述第二请求,包括:
通过泛化调用接口,向配置在所述网关之外的所述第二服务端发送所述第二请求。
11.根据权利要求10所述的方法,其中,所述方法还包括:
启动目标进程,执行所述网关中的网关程序;
在所述目标进程中,初始化所述泛化调用接口。
12.根据权利要求1所述的方法,其中,所述方法通过代理程序调用所述网关的网关程序实现,所述方法还包括:
通过所述代理程序更改所述网关程序的底层运行环境。
13.一种网关,应用于微服务架构,包括:
获取模块,从所述微服务架构的客户端或第一服务端获取基于第一调用协议的第一请求;
转换模块,将所述第一请求转换为基于第二调用协议的第二请求,所述第二请求用于调用所述微服务架构的第二服务端的目标逻辑;
发送模块,向所述第二服务端发送所述第二请求。
14.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-12中任一项所述的方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110990740.4A CN113726869A (zh) | 2021-08-26 | 2021-08-26 | 通信方法、网关以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110990740.4A CN113726869A (zh) | 2021-08-26 | 2021-08-26 | 通信方法、网关以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113726869A true CN113726869A (zh) | 2021-11-30 |
Family
ID=78678240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110990740.4A Pending CN113726869A (zh) | 2021-08-26 | 2021-08-26 | 通信方法、网关以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113726869A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114205191A (zh) * | 2021-12-13 | 2022-03-18 | 四川启睿克科技有限公司 | 一种api网关***及运行方法 |
CN114238178A (zh) * | 2021-12-09 | 2022-03-25 | 零氪科技(北京)有限公司 | 一种微服务架构的调用方法、装置、电子设备及存储介质 |
CN115499518A (zh) * | 2022-07-29 | 2022-12-20 | 天翼云科技有限公司 | 一种微服务协议转换方法、装置和电子设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108449312A (zh) * | 2018-01-31 | 2018-08-24 | 北京奇艺世纪科技有限公司 | 一种协议转换方法、装置、***及网关 |
CN109818980A (zh) * | 2019-03-21 | 2019-05-28 | 中国铁塔股份有限公司 | 一种通信方法及装置 |
WO2019232961A1 (zh) * | 2018-06-05 | 2019-12-12 | 平安科技(深圳)有限公司 | 接口自动化方法、***、计算机设备和存储介质 |
CN110995746A (zh) * | 2019-12-17 | 2020-04-10 | 神州数码融信软件有限公司 | 异构网络的微服务调用方法及api网关 |
CN111193803A (zh) * | 2019-12-31 | 2020-05-22 | 四川省公安科研中心 | 基于spring cloud的微服务构建方法及spring cloud微服务架构 |
CN111934840A (zh) * | 2020-06-29 | 2020-11-13 | 北京百度网讯科技有限公司 | 客户端和服务端的通信方法、网关、电子设备及存储介质 |
CN112214334A (zh) * | 2020-09-28 | 2021-01-12 | 亚信科技(中国)有限公司 | 微服务调用方法、装置、电子设备及计算机可读存储介质 |
KR102262093B1 (ko) * | 2020-07-22 | 2021-06-08 | 한국과학기술정보연구원 | 게이트웨이장치 및 그 동작 방법 |
CN113242221A (zh) * | 2021-04-29 | 2021-08-10 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种基于http微服务网关的协议转换方法及协议转换装置 |
CN113301166A (zh) * | 2021-06-16 | 2021-08-24 | 杭州华橙软件技术有限公司 | 服务的调用方法及装置、存储介质、电子装置 |
-
2021
- 2021-08-26 CN CN202110990740.4A patent/CN113726869A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108449312A (zh) * | 2018-01-31 | 2018-08-24 | 北京奇艺世纪科技有限公司 | 一种协议转换方法、装置、***及网关 |
WO2019232961A1 (zh) * | 2018-06-05 | 2019-12-12 | 平安科技(深圳)有限公司 | 接口自动化方法、***、计算机设备和存储介质 |
CN109818980A (zh) * | 2019-03-21 | 2019-05-28 | 中国铁塔股份有限公司 | 一种通信方法及装置 |
CN110995746A (zh) * | 2019-12-17 | 2020-04-10 | 神州数码融信软件有限公司 | 异构网络的微服务调用方法及api网关 |
CN111193803A (zh) * | 2019-12-31 | 2020-05-22 | 四川省公安科研中心 | 基于spring cloud的微服务构建方法及spring cloud微服务架构 |
CN111934840A (zh) * | 2020-06-29 | 2020-11-13 | 北京百度网讯科技有限公司 | 客户端和服务端的通信方法、网关、电子设备及存储介质 |
KR102262093B1 (ko) * | 2020-07-22 | 2021-06-08 | 한국과학기술정보연구원 | 게이트웨이장치 및 그 동작 방법 |
CN112214334A (zh) * | 2020-09-28 | 2021-01-12 | 亚信科技(中国)有限公司 | 微服务调用方法、装置、电子设备及计算机可读存储介质 |
CN113242221A (zh) * | 2021-04-29 | 2021-08-10 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种基于http微服务网关的协议转换方法及协议转换装置 |
CN113301166A (zh) * | 2021-06-16 | 2021-08-24 | 杭州华橙软件技术有限公司 | 服务的调用方法及装置、存储介质、电子装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114238178A (zh) * | 2021-12-09 | 2022-03-25 | 零氪科技(北京)有限公司 | 一种微服务架构的调用方法、装置、电子设备及存储介质 |
CN114205191A (zh) * | 2021-12-13 | 2022-03-18 | 四川启睿克科技有限公司 | 一种api网关***及运行方法 |
CN114205191B (zh) * | 2021-12-13 | 2023-09-15 | 四川启睿克科技有限公司 | 一种api网关***及运行方法 |
CN115499518A (zh) * | 2022-07-29 | 2022-12-20 | 天翼云科技有限公司 | 一种微服务协议转换方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113726869A (zh) | 通信方法、网关以及电子设备 | |
US7587447B2 (en) | Systems, methods and computer programs for implementing and accessing web services | |
US6529936B1 (en) | Object-oriented web server architecture suitable for various types of devices | |
EP3837604B1 (en) | In situ triggered function as a service within a service mesh | |
CN111600909A (zh) | 数据处理方法、装置、协议转换设备及存储介质 | |
US20030074485A1 (en) | Dynamic corba gateway for CORBA and non-CORBA clients and services | |
CN109451014B (zh) | 一种WebService代理***及其透明代理方法 | |
CN112130871B (zh) | 远程部署中间件的方法、装置、计算机设备及存储介质 | |
CN111367685B (zh) | 接口调用的方法及装置、计算机设备、存储介质 | |
CN111858101A (zh) | 面向云架构***的适配方法、装置、设备及存储介质 | |
Nkenyereye et al. | MEIX: Evolving multi-access edge computing for industrial Internet-of-Things services | |
Rine et al. | Using adapters to reduce interaction complexity in reusable component-based software development | |
Ezenwoye et al. | RobustBPEL2: Transparent autonomization in business processes through dynamic proxies | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN112698930B (zh) | 一种获取服务器标识的方法、装置、设备及介质 | |
CN109005163B (zh) | 一种http动态请求服务调用方法 | |
Kang et al. | Android RMI: a user-level remote method invocation mechanism between Android devices | |
Ma et al. | Model-based management of service composition | |
Kwon et al. | An assessment of middleware platforms for accessing remote services | |
CN113064737A (zh) | 使软件通信体系结构的组件在多核处理器并行运行的方法 | |
US9977700B2 (en) | System and method for providing an application programming interface for deploying a service bus artifact from a local development environment to a cloud environment | |
CN108737525A (zh) | 一种基于REST架构的Web服务*** | |
CN117555528B (zh) | 一种服务化代码框架生成方法、装置、设备及介质 | |
CN116055569B (zh) | 自定义切换时区的方法、***、计算机设备和存储介质 | |
Mokdad et al. | The computational object approach for network and systems management |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40062656 Country of ref document: HK |