CN112685193A - 一种微服务网关接口暴露及聚合方法 - Google Patents
一种微服务网关接口暴露及聚合方法 Download PDFInfo
- Publication number
- CN112685193A CN112685193A CN202011510859.9A CN202011510859A CN112685193A CN 112685193 A CN112685193 A CN 112685193A CN 202011510859 A CN202011510859 A CN 202011510859A CN 112685193 A CN112685193 A CN 112685193A
- Authority
- CN
- China
- Prior art keywords
- interface
- information
- gateway
- service
- request
- 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.)
- Granted
Links
- 230000002776 aggregation Effects 0.000 title claims abstract description 33
- 238000004220 aggregation Methods 0.000 title claims abstract description 33
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 17
- 230000008569 process Effects 0.000 claims abstract description 5
- 230000007246 mechanism Effects 0.000 claims abstract description 4
- 238000013507 mapping Methods 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 239000003795 chemical substances by application Substances 0.000 claims description 3
- 239000003999 initiator Substances 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 4
- 239000012141 concentrate Substances 0.000 abstract description 2
- 230000000007 visual effect Effects 0.000 abstract description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 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
Images
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 (8)
1.一种微服务网关接口暴露,其特征在于,包括接口暴露模块和网关聚合模块;
所述接口暴露模块以二方包的形式发布,基于SpringBoot自动配置机制及Dubbo框架HTTP协议支持,可分为接口信息解析获取和业务请求处理两部分功能,两部分功能均注册一个Servlet对象,对http请求进行处理;
所述网关聚合模块由DevOps平台提供,将聚合网关部署到Kong上。
2.根据权利要求1所述的一种微服务网关接口暴露,其特征在于,所述接口信息解析获取的功能为注册DubboHttpApiListServlet对象,请求地址映射为api-list,返回缓存的接口元数据信息,供网关聚合模块获取生成配置,初次请求该接口时初始化获取该微服务提供的接口信息。
3.根据权利要求2所述的一种微服务网关接口暴露,其特征在于,所述接口信息包括通过Dubbo注解@Service提供的微服务接口和服务中原生的MVC接口。
4.根据权利要求2所述的一种微服务网关接口暴露,其特征在于,所述获取接口信息包括以下步骤:
步骤一:从Spring上下文对象中获取所有包含Dubbo注解@Service的对象,获取对象实现的接口信息,取得接口的全限定名、方法名、方法参数数据类型、方法返回数据类型信息,并根据约定格式生成映射URL信息,对将获取到的所有接口信息组成约定格式元数据保存到缓存列表;
步骤二:原生MVC接口部分通过从Spring上下文获取RequestMappingHandlerMapping对象,从中获取所有注册的MVC接口信息,将获取到的所有接口信息组成约定格式元数据保存到缓存列表。
5.根据权利要求1所述的一种微服务网关接口暴露,其特征在于,所述业务请求处理为原生MVC接口请求不做额外处理,由SpringMVC框架自身调度处理;DispatcherServlet实例分发处理,根据请求URL获取缓存的接口元数据信息,根据元数据信息中的方法参数数据类型对请求数据JSON反序列化操作,创建对应接口方法代理对象,使用反序列化后的数据发起调用,然后将返回结果JSON序列化后返回给请求发起者。
6.根据权利要求1所述的一种微服务网关接口暴露,其特征在于,所述Kong是运行Nginx中的一个Lua应用程序,通过数据库和API维护配置信息,替代Nginx配置文件形式实现相关配置调整。
7.一种如权利要求1-6所述微服务网关接口暴露的聚合方法,其特征在于,包括以下步骤:
步骤一:创建一个聚合网关实例,包含基础信息网关名称和域名,以及描述、负责人等额外信息;
步骤二:添加接口信息:通过平台选择需要添加的微服务,并通过平台后端代理访问微服务的/api-list接口该微服务暴露的所有接口元数据信息,选择一个或多个需要配置的接口元数据信息添加到聚合网关示例,并对接口配置请求映射URL;
步骤三:部署:获取聚合网关示例配置的接口元数据信息及映射URL,在Kong的中添加服务和路由规则;
步骤四:请求处理:通过聚合网关域名及接口映射URL发起请求,Kong根据路由规则查找具体接口和微服务,并将请求转发给真实后端微服务,然后由微服务进行业务请求处理。
8.根据权利要求7所述的一种微服务网关接口暴露的聚合方法,其特征在于,所述步骤一中的域名是二级域名。
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 true CN112685193A (zh) | 2021-04-20 |
CN112685193B 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) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113242221A (zh) * | 2021-04-29 | 2021-08-10 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种基于http微服务网关的协议转换方法及协议转换装置 |
CN113364853A (zh) * | 2021-06-02 | 2021-09-07 | 北京奇艺世纪科技有限公司 | 一种业务服务系统、业务请求方法及网关设备 |
CN113419713A (zh) * | 2021-07-20 | 2021-09-21 | 国家电网有限公司客户服务中心 | 一种面向网上国网业务能力的api封装编排方法 |
CN113448689A (zh) * | 2021-07-09 | 2021-09-28 | 中国银行股份有限公司 | 运行期Dubbo协议转换装置及方法 |
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 | 软通动力信息技术(集团)有限公司 | 物联网适配方法、系统、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
WEIXIN_39941859: "spring cloud alibaba微服务原理与实战_SpringCloud微服务实战(十一)-Zuul及其实现原理...", Retrieved from the Internet <URL:https://blog.csdn.net/weixin_39941859/article/details/111018475> * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113242221A (zh) * | 2021-04-29 | 2021-08-10 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种基于http微服务网关的协议转换方法及协议转换装置 |
CN113364853A (zh) * | 2021-06-02 | 2021-09-07 | 北京奇艺世纪科技有限公司 | 一种业务服务系统、业务请求方法及网关设备 |
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 | 北京沃东天骏信息技术有限公司 | 数据缓存处理方法、装置、缓存网格平台和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112685193B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112685193A (zh) | 一种微服务网关接口暴露及聚合方法 | |
EP3667500B1 (en) | Using a container orchestration service for dynamic routing | |
JP5225399B2 (ja) | デスクトップ・アプリケーション移行のためのシステムと方法 | |
CN109857515B (zh) | 桥接通信方法、装置、设备及计算机可读存储介质 | |
CN110457144B (zh) | 一种实现前端应用的方法、装置、介质和设备 | |
CN110275831B (zh) | 协议接口的mock数据校验方法和装置 | |
CN112449750A (zh) | 日志数据收集方法、日志数据收集装置、存储介质和日志数据收集系统 | |
CN106155673B (zh) | 实现页面内容编辑器的方法、装置、服务器及用户设备 | |
US8930443B1 (en) | Distributed network page generation | |
US20170177727A1 (en) | Methods for analyzing web sites using web services and devices thereof | |
CN116301951B (zh) | 一种基于kubernetes的微服务应用安装升级方法及装置 | |
CN111586097A (zh) | 一种网络请求处理方法、计算设备及存储介质 | |
CN111767229A (zh) | 性能测试方法、装置和设备 | |
CN107483559B (zh) | Sdk服务的提供方法及装置 | |
CN112015384A (zh) | 一种接口映射方法和装置 | |
CN111443920B (zh) | 一种框架迁移方法及装置 | |
CN111124924B (zh) | Api部署方法、装置、电子设备及存储介质 | |
CN107239265B (zh) | Java函数与C函数的绑定方法及装置 | |
US10200488B2 (en) | Webpage loading method and apparatus | |
CN114969603A (zh) | 基于5g消息的图片获取、图片生成方法及系统 | |
CN112632941A (zh) | 生成pdf格式公安文书的方法、装置、设备及存储介质 | |
CN112667945A (zh) | 一种基于前后端分离技术开发网站的seo优化方法 | |
CN113608774B (zh) | 一种演示数据动态生成方法、系统 | |
Zaslavskiy et al. | Implementation of the new REST API for open source LBS-platform Geo2Tag | |
CN116992183B (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 |