CN112685193B - 一种微服务网关接口暴露及聚合方法 - Google Patents
一种微服务网关接口暴露及聚合方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 21
- 230000004931 aggregating effect Effects 0.000 title claims description 7
- 230000002776 aggregation Effects 0.000 claims abstract description 30
- 238000004220 aggregation Methods 0.000 claims abstract description 30
- 238000012545 processing Methods 0.000 claims abstract description 25
- 238000013507 mapping Methods 0.000 claims description 13
- 239000003999 initiator Substances 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 6
- 238000012423 maintenance Methods 0.000 abstract description 3
- 239000012141 concentrate Substances 0.000 abstract description 2
- 230000000007 visual effect Effects 0.000 abstract description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
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所述的一种微服务网关接口暴露系统的聚合方法,其特征在于,所述步骤一中的域名是二级域名。
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)
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)
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 | 软通动力信息技术(集团)有限公司 | 物联网适配方法、系统、计算机设备及存储介质 |
-
2020
- 2020-12-18 CN CN202011510859.9A patent/CN112685193B/zh active Active
Patent Citations (3)
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 |