CN112685193B - 一种微服务网关接口暴露及聚合方法 - Google Patents

一种微服务网关接口暴露及聚合方法 Download PDF

Info

Publication number
CN112685193B
CN112685193B CN202011510859.9A CN202011510859A CN112685193B CN 112685193 B CN112685193 B CN 112685193B CN 202011510859 A CN202011510859 A CN 202011510859A CN 112685193 B CN112685193 B CN 112685193B
Authority
CN
China
Prior art keywords
interface
service
information
gateway
micro
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
Application number
CN202011510859.9A
Other languages
English (en)
Other versions
CN112685193A (zh
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.)
Yijiupi Information Technology Co ltd
Original Assignee
Yijiupi Information 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 Yijiupi Information Technology Co ltd filed Critical Yijiupi Information Technology Co ltd
Priority to CN202011510859.9A priority Critical patent/CN112685193B/zh
Publication of CN112685193A publication Critical patent/CN112685193A/zh
Application granted granted Critical
Publication of CN112685193B publication Critical patent/CN112685193B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种微服务网关接口暴露,包括接口暴露模块和网关聚合模块;所述接口暴露模块以二方包的形式发布,基于SpringBoot自动配置机制及Dubbo框架HTTP协议支持,可分为接口信息解析获取和业务请求处理两部分功能。本发明可简化开发流程,开发人员只需专注业务功能开发;无需开发人员专门开发维护聚合网关项目;可视化配置维护简洁方便;部署方便,一键操作即可部署到目标环境。

Description

一种微服务网关接口暴露及聚合方法
技术领域
本发明涉及微服务网关技术领域,具体涉及一种微服务网关接口暴露及聚合方法。
背景技术
随着业务的不断扩张,现有的Dubbo微服务规模也越来越大,在此之前常规做法是由人专门开发维护一个网关项目,将不同微服务的接口引入该项目,对外提供HTTP服务,对请求JSON数据进行反序列化转换为需要的数据类型然后调用后端微服务接口,对方法返回结果再序列化成JSON返回给请求者;但是当后端某一个微服务的接口新增或变更时该项目都需要频繁进行修改、构建、部署,所有的操作都需要人为编码处理,随着规模增大也更难以维护。
发明内容
发明目的:为了克服现有技术中存在的不足,本发明提供一种微服务网关接口暴露及聚合方法。
技术方案:为实现上述目的,本发明提供如下技术方案:
一种微服务网关接口暴露,包括接口暴露模块和网关聚合模块;
所述接口暴露模块以二方包的形式发布,基于SpringBoot自动配置机制及Dubbo框架HTTP协议支持,可分为接口信息解析获取和业务请求处理两部分功能,两部分功能均注册一个Servlet对象,对http请求进行处理;
所述网关聚合模块由DevOps平台提供,将聚合网关部署到Kong上,
优选地,所述接口信息解析获取的功能为注册DubboHttpApiListServlet对象,请求地址映射为api-list,返回缓存的接口元数据信息,供网关聚合模块获取生成配置,初次请求该接口时初始化获取该微服务提供的接口信息。
优选地,所述接口信息包括通过Dubbo注解@Service提供的微服务接口和服务中原生的MVC接口。
优选地,所述获取接口信息包括以下步骤:
步骤一:从Spring上下文对象中获取所有包含Dubbo注解@Service的对象,获取对象实现的接口信息,取得接口的全限定名、方法名、方法参数数据类型、方法返回数据类型信息,并根据约定格式生成映射URL信息,对将获取到的所有接口信息组成约定格式元数据保存到缓存列表;
步骤二:原生MVC接口部分通过从Spring上下文获取RequestMappingHandlerMapping对象,从中获取所有注册的MVC接口信息,将获取到的所有接口信息组成约定格式元数据保存到缓存列表。
优选地,所述业务请求处理为原生MVC接口请求不做额外处理,由SpringMVC框架自身调度处理;DispatcherServlet实例分发处理,根据请求URL获取缓存的接口元数据信息,根据元数据信息中的方法参数数据类型对请求数据JSON反序列化操作,创建对应接口方法代理对象,使用反序列化后的数据发起调用,然后将返回结果JSON序列化后返回给请求发起者。
优选地,所述Kong是运行Nginx中的一个Lua应用程序,通过数据库和API维护配置信息,替代Nginx配置文件形式实现相关配置调整。
本实施例的一种微服务网关接口暴露的聚合方法,包括以下步骤:
步骤一:创建一个聚合网关实例,包含基础信息网关名称和域名,以及描述、负责人等额外信息;
步骤二:添加接口信息:通过平台选择需要添加的微服务,并通过平台后端代理访问微服务的/api-list接口该微服务暴露的所有接口元数据信息,选择一个或多个需要配置的接口元数据信息添加到聚合网关示例,并对接口配置请求映射URL;
步骤三:部署:获取聚合网关示例配置的接口元数据信息及映射URL,在Kong的中添加服务和路由规则;
步骤四:请求处理:通过聚合网关域名及接口映射URL发起请求,Kong根据路由规则查找具体接口和微服务,并将请求转发给真实后端微服务,然后由微服务进行业务请求处理。
优选地,所述步骤一中的域名是二级域名。
有益效果:本发明,有益效果如下:
本发明可简化开发流程,开发人员只需专注业务功能开发;无需开发人员专门开发维护聚合网关项目;可视化配置维护简洁方便;部署方便,一键操作即可部署到目标环境。
附图说明
图1为本发明一种微服务网关接口暴露系统图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
如附图1示,本发明实施例中一种微服务网关接口暴露,包括接口暴露模块和网关聚合模块;
所述接口暴露模块以二方包的形式发布,基于SpringBoot自动配置机制及Dubbo框架HTTP协议支持,可分为接口信息解析获取和业务请求处理两部分功能,两部分功能均注册一个Servlet对象,对http请求进行处理;
所述网关聚合模块由DevOps平台提供,将聚合网关部署到Kong上,
本实施例的接口信息解析获取的功能为注册DubboHttpApiListServlet对象,请求地址映射为api-list,返回缓存的接口元数据信息,供网关聚合模块获取生成配置,初次请求该接口时初始化获取该微服务提供的接口信息。
本实施例的接口信息包括通过Dubbo注解@Service提供的微服务接口和服务中原生的MVC接口。
本实施例的获取接口信息包括以下步骤:
步骤一:从Spring上下文对象中获取所有包含Dubbo注解@Service的对象,获取对象实现的接口信息,取得接口的全限定名、方法名、方法参数数据类型、方法返回数据类型信息,并根据约定格式生成映射URL信息,对将获取到的所有接口信息组成约定格式元数据保存到缓存列表;
步骤二:原生MVC接口部分通过从Spring上下文获取RequestMappingHandlerMapping对象,从中获取所有注册的MVC接口信息,将获取到的所有接口信息组成约定格式元数据保存到缓存列表。
本实施例的业务请求处理为原生MVC接口请求不做额外处理,由SpringMVC框架自身调度处理;DispatcherServlet实例分发处理,根据请求URL获取缓存的接口元数据信息,根据元数据信息中的方法参数数据类型对请求数据JSON反序列化操作,创建对应接口方法代理对象,使用反序列化后的数据发起调用,然后将返回结果JSON序列化后返回给请求发起者。
本实施例的Kong是运行Nginx中的一个Lua应用程序,通过数据库和API维护配置信息,替代Nginx配置文件形式实现相关配置调整。
本实施例的一种微服务网关接口暴露的聚合方法,包括以下步骤:
步骤一:创建一个聚合网关实例,包含基础信息网关名称和域名,以及描述、负责人等额外信息;
步骤二:添加接口信息:通过平台选择需要添加的微服务,并通过平台后端代理访问微服务的/api-list接口该微服务暴露的所有接口元数据信息,选择一个或多个需要配置的接口元数据信息添加到聚合网关示例,并对接口配置请求映射URL;
步骤三:部署:获取聚合网关示例配置的接口元数据信息及映射URL,在Kong的中添加服务和路由规则;
步骤四:请求处理:通过聚合网关域名及接口映射URL发起请求,Kong根据路由规则查找具体接口和微服务,并将请求转发给真实后端微服务,然后由微服务进行业务请求处理。
本实施例的步骤一中的域名是二级域名。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (6)

1.一种微服务网关接口暴露系统,其特征在于,包括接口暴露模块和网关聚合模块;
所述接口暴露模块以二方包的形式发布,基于SpringBoot自动配置机制及Dubbo框架HTTP协议支持,可分为接口信息解析获取和业务请求处理两部分功能,两部分功能均注册一个Servlet对象,对http请求进行处理;
所述网关聚合模块由DevOps平台提供,将聚合网关部署到Kong上;
所述接口信息解析获取的功能为注册DubboHttpApiListServlet对象,请求地址映射为api-list,返回缓存的接口元数据信息,供网关聚合模块获取生成配置,初次请求该接口时初始化获取该微服务提供的接口信息;
所述业务请求处理为原生MVC接口请求不做额外处理,由SpringMVC框架自身调度处理;DispatcherServlet实例分发处理,根据请求URL获取缓存的接口元数据信息,根据元数据信息中的方法参数数据类型对请求数据JSON反序列化操作,创建对应接口方法代理对象,使用反序列化后的数据发起调用,然后将返回结果JSON序列化后返回给请求发起者。
2.根据权利要求1所述的一种微服务网关接口暴露系统,其特征在于,所述接口信息包括通过Dubbo注解@Service提供的微服务接口和服务中原生的MVC接口。
3.根据权利要求1所述的一种微服务网关接口暴露系统,其特征在于,所述接口信息解析获取包括以下步骤:
步骤一:从Spring上下文对象中获取所有包含Dubbo注解@Service的对象,获取对象实现的接口信息,取得接口的全限定名、方法名、方法参数数据类型、方法返回数据类型信息,并根据约定格式生成映射URL信息,对将获取到的所有接口信息组成约定格式元数据保存到缓存列表;
步骤二:原生MVC接口部分通过从Spring上下文获取RequestMappingHandlerMapping对象,从中获取所有注册的MVC接口信息,将获取到的所有接口信息组成约定格式元数据保存到缓存列表。
4.根据权利要求1所述的一种微服务网关接口暴露系统,其特征在于,所述Kong是运行Nginx中的一个Lua应用程序,通过数据库和API维护配置信息,替代Nginx配置文件形式实现相关配置调整。
5.一种如权利要求1-4任一项所述微服务网关接口暴露系统的聚合方法,其特征在于,包括以下步骤:
步骤一:创建一个聚合网关实例,包含基础信息网关名称和域名,以及描述、负责人额外信息;
步骤二:添加接口信息:通过平台选择需要添加的微服务,并通过平台后端代理访问微服务的/api-list接口该微服务暴露的所有接口元数据信息,选择一个或多个需要配置的接口元数据信息添加到聚合网关示例,并对接口配置请求映射URL;
步骤三:部署:获取聚合网关示例配置的接口元数据信息及映射URL,在Kong的中添加服务和路由规则;
步骤四:请求处理:通过聚合网关域名及接口映射URL发起请求,Kong根据路由规则查找具体接口和微服务,并将请求转发给真实后端微服务,然后由微服务进行业务请求处理。
6.根据权利要求5所述的一种微服务网关接口暴露系统的聚合方法,其特征在于,所述步骤一中的域名是二级域名。
CN202011510859.9A 2020-12-18 2020-12-18 一种微服务网关接口暴露及聚合方法 Active CN112685193B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011510859.9A CN112685193B (zh) 2020-12-18 2020-12-18 一种微服务网关接口暴露及聚合方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011510859.9A CN112685193B (zh) 2020-12-18 2020-12-18 一种微服务网关接口暴露及聚合方法

Publications (2)

Publication Number Publication Date
CN112685193A CN112685193A (zh) 2021-04-20
CN112685193B true CN112685193B (zh) 2024-03-22

Family

ID=75450429

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011510859.9A Active CN112685193B (zh) 2020-12-18 2020-12-18 一种微服务网关接口暴露及聚合方法

Country Status (1)

Country Link
CN (1) CN112685193B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113242221B (zh) * 2021-04-29 2022-08-23 湖南快乐阳光互动娱乐传媒有限公司 一种基于http微服务网关的协议转换方法及协议转换装置
CN113364853B (zh) * 2021-06-02 2022-10-25 北京奇艺世纪科技有限公司 一种业务服务系统、业务请求方法及网关设备
CN113448689A (zh) * 2021-07-09 2021-09-28 中国银行股份有限公司 运行期Dubbo协议转换装置及方法
CN113419713A (zh) * 2021-07-20 2021-09-21 国家电网有限公司客户服务中心 一种面向网上国网业务能力的api封装编排方法
CN113973135A (zh) * 2021-10-19 2022-01-25 北京沃东天骏信息技术有限公司 数据缓存处理方法、装置、缓存网格平台和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019104975A1 (zh) * 2017-11-30 2019-06-06 平安科技(深圳)有限公司 基于dubbo框架的远程调用方法、服务器及存储介质
CN110191164A (zh) * 2019-05-20 2019-08-30 中国工商银行股份有限公司 分布式服务接入系统及方法
CN110971614A (zh) * 2019-12-17 2020-04-07 软通动力信息技术(集团)有限公司 物联网适配方法、系统、计算机设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019104975A1 (zh) * 2017-11-30 2019-06-06 平安科技(深圳)有限公司 基于dubbo框架的远程调用方法、服务器及存储介质
CN110191164A (zh) * 2019-05-20 2019-08-30 中国工商银行股份有限公司 分布式服务接入系统及方法
CN110971614A (zh) * 2019-12-17 2020-04-07 软通动力信息技术(集团)有限公司 物联网适配方法、系统、计算机设备及存储介质

Also Published As

Publication number Publication date
CN112685193A (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
CN112685193B (zh) 一种微服务网关接口暴露及聚合方法
EP0978056B1 (en) Providing communications links in a computer network
US10715388B2 (en) Using a container orchestration service for dynamic routing
CN106101231B (zh) 通过cdn下载资源的实现方法和装置、服务器、客户端
US7496658B2 (en) Systems and methods for testing network services
JP2021121972A (ja) ミニプログラム処理方法、サーバー、設備、記憶媒体、及びプログラム
CN109257451B (zh) 对应关系解析方法及设备
US20100057917A1 (en) Method, apparatus and system for processing composite service and replacing service and invoking service
US20070011275A1 (en) Multi-environment document management system access
US20080208979A1 (en) Dispatching client requests to appropriate server-side methods
CN108446105B (zh) 一种轻量级API Server开发框架及开发方法
EP1415232A2 (en) A system and a method for accelerating communication of tcp/ip based content
CN110855766A (zh) 一种访问Web资源的方法、装置及代理服务器
CN106790593B (zh) 一种页面处理方法和装置
KR20020089450A (ko) 통합된 통신 서버 및 방법
US20070067416A1 (en) Method for referencing remote element of content, method for providing content with remote elements and system for distributing content
CN114675821B (zh) 一种基于低代码的服务标准化系统及方法
CN111680247A (zh) 网页字符串的本地调用方法、装置、设备及存储介质
US10200488B2 (en) Webpage loading method and apparatus
Hahn et al. Modeling data transformations in data-aware service choreographies
CN111368237B (zh) 一种分布式网站缓存静态化方法、服务器和系统
US11546405B2 (en) Methods for exposing mainframe data as a web service and devices thereof
CN112328324B (zh) 可配置数据源的DataFetcher实现系统和方法
CN112306578B (zh) 可配置数据源的DataFetcher实现系统和方法
CN111695072A (zh) 转换http请求的方法和装置

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