CN112910770B - 一种基于泛化调用的分布式服务网关设计方法及*** - Google Patents
一种基于泛化调用的分布式服务网关设计方法及*** Download PDFInfo
- Publication number
- CN112910770B CN112910770B CN202110309170.8A CN202110309170A CN112910770B CN 112910770 B CN112910770 B CN 112910770B CN 202110309170 A CN202110309170 A CN 202110309170A CN 112910770 B CN112910770 B CN 112910770B
- Authority
- CN
- China
- Prior art keywords
- service
- gateway
- call
- calling
- spi
- 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
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种基于泛化调用的分布式服务网关设计方法及***,采用Api gateway设计为统一的多渠道调用入口,网关不依赖具体业务模块的SPI服务接口jar,通过dubbo泛化进行远程调用,实现网关通用化、业务解耦的特性。各模块只需接规范设计SPI接口并实现业务逻辑,包括相关参数验证及聚合业务服务,通过网关即可调用。解决接入层设计的接口需要重启才能生效互相耦合影响的问题。
Description
技术领域
本发明涉及软件技术领域,特别涉及一种基于泛化调用的分布式服务网关设计方法及***。
背景技术
通常分布式***会设计统一的接入层,各个模块的前端接口设计在接入层,这种模式当接口变更时,需要修改接入层代码并且重启接入层服务才能生效。接入层接口耦合的方式,会导致不同业务模块服务互相受到影响,非常不利于管理维护。并且***达到一定量级时,需要设计一个基础网关统一处理异常处理、数据安全、流量控制、版本控制,而后端的业务***只用关心自身业务逻辑。网关其实就是业务***的一个前置层,把一些业务***需要处理的通用逻辑前置到网关,避免业务***的重复开发,提高开发效率。
Api gateway设计为统一的多渠道调用入口,网关不依赖具体业务模块的SPI服务接口jar,通过dubbo泛化进行远程调用,实现网关通用化、业务解耦的特性。各模块只需接规范设计SPI接口并实现业务逻辑,包括相关参数验证及聚合业务服务,通过网关即可调用。解决接入层设计的接口需要重启才能生效互相耦合影响的问题。
因此,现有技术需要进一步改进。
发明内容
针对现有技术存在的问题,本发明提供一种基于泛化调用的分布式服务网关设计方法和***。
为实现上述目的,本发明的具体方案如下:
一种基于泛化调用的分布式服务网关设计方法,包括如下步骤:
S1,定义网关各组成部分及功能;
S2,网关RPC SPI接口定义;
S3,网关服务调用;
S4,网关服务调用签名验证;
S5,定义Gateway网关调用的整体流程。
进一步的S3还包括:
S31,通过URL调用服务;
S32,请求结果返回体;
S33,请求入参校验常用注解。
进一步的S4还包括:将Token签名参数通过请求的header方式传参,使用md5进行加密。
进一步的S5还包括:
S51,设置工程领域的名称与SPI接口扫描路径;
S52,启动工程时将SPI接口服务注册到注册中心zookeeper或者redis;
S53,前端应用按指定地址与参数调用gateway网关;
S54,网关进行请求参数校验证及签名验证;
S55,网关执行服务访问控制及服务限流策略;
S56,gateway网关通过zookeeper获取Dubbo远程服务地址;
S57,通过Generic进行泛化调用Dubbo远程服务;
S58,执行Dubbo服务的请求参数校验;
S59,执行远程服务并返回结果。
一种基于泛化调用的分布式服务网关***,包括:API网关管理平台、前端调用方、Nginx负载均衡、网关集群、服务注册中心和业务服务集群;
进一步的,所述网关集群包含分布式部署的多个API gateway 网关,上层通过nginx代理转发实现负载均衡;
进一步的,所述API网关管理平台执行服务访问管理、服务限流管理;
进一步的,所述业务服务集群采用集群方式部署多个服务模块,RPC SPI远程服务启动时注册到zookeeper服务注册中心;
进一步的,所述前端调用方通过网关调用SPI服务时会经过安全验证,通过Generic进行泛化调用Dubbo远程服务,返回结果。
进一步的,所述安全验证包括参数、签名、限流的验证。
进一步的,该***的spi接口放在rpcservice包目录。
采用本发明的技术方案,具有以下有益效果:
本发明公开一种基于泛化调用的分布式服务网关,采用Api gateway设计为统一的多渠道调用入口,网关不依赖具体业务模块的SPI服务接口jar,通过dubbo泛化进行远程调用,实现网关通用化、业务解耦的特性。各模块只需接规范设计SPI接口并实现业务逻辑,包括相关参数验证及聚合业务服务,通过网关即可调用。解决接入层设计的接口需要重启才能生效互相耦合影响的问题。
附图说明
图1是本发明实施方式的API网关架构图;
图2是接入层与API网关调用设计区别示意图;
图3是本发明实施方式的网关设计整体流程图;
图4是本发明实施方式的网关服务调用流程图;
图5是本发明实施方式的网关调用整体流程图。
具体实施方式
以下结合附图和具体实施例,对本发明进一步说明。
结合图1-图5:
1、网关总体设计,定义网关各组成部分及功能
(1)网关服务采用分布式部署,上层通过nginx代理转发实现负载均衡;
(2)API网关管理平台实现了服务访问的管理、服务限流管理等功能,后续管理功能可灵活扩展;
(3)***模块业务服务采用集群方式部署,RPC SPI远程服务启动时注册到zookeeper服务注册中心;
(4)前端通过网关调用SPI服务时会经过参数、签名、限流等系列安全验证;
(5)通过Generic进行泛化调用Dubbo远程服务,返回结果。
2、网关RPC SPI接口定义
SPI (Service Provider Interface) 即dubbo rpc服务提供者接口定义。
public interface DemoService {
public RpcResponse sayHello(String s)throws DubboxException;
}
3、网关服务调用
网关调用入参为JSON格式,使用POST请求。调试工具可采用postman、火狐浏览插件RESTED等。
(1)通过URL调用服务
请求地址URL:http://host:port/gateway/demotest.service.DemoService.getMapTest
header.service:不传,***自动解释获取url的demotest.service.DemoService。
header.method:不传,***自动解释获取url的getMapTest
body:调用方法的具体参数
{
"body": {
"param":"123456789test."
}
}
(2)请求结果返回体
{
"model": {
"total": 8,
"count": 8,
"resultList": []
},
"responseCode": "000000",
"responseMsg": "successful"
}
(3)请求入参校验常用注解
JSR提供的校验常用注解及自定义注解。
@NotEmpty :不能为null,且Size>0
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
@VEnum 自定义枚举校验,示例:@VEnum(enums={"01","02","03","04"})
@VDate 自定义日期校验,示例:@VDate(pattern = "yyyy-MM-dd HH:mm:ss")
4、网关服务调用签名验证
Token签名参数通过请求的header方式传参,使用md5进行加密。
(1)Token签名算法
加密前字符串=service+method+body请求参数经过排序+appkey
示例:
加密前字符串:com.ldygo.spi.demotest.service.DemoService.getAccountListByPage.pageNum=2&pageSize=50&status=01&appkey=f9dc1d2b9883bcde3766680dad49d298
md5加密结果:e21f8db15f03f92b473506a69813bdc0
5、定义Gateway网关调用的整体流程
1)设置工程领域的名称与SPI接口扫描路径;
2)启动工程时将SPI接口服务注册到注册中心zookeeper或者redis;
3)前端应用按指定地址与参数调用gateway网关;
4)网关进行请求参数校验证及签名验证;
5)网关执行服务访问控制及服务限流等策略;
6)gateway网关通过zookeeper获取Dubbo远程服务地址;
7)通过Generic进行泛化调用Dubbo远程服务;
8)执行Dubbo服务的请求参数校验;
9)执行远程服务并返回结果。
API网关的优势如下:
易于监控,可以在网关收集监控数据并将其推送到外部***进行分析;
易于认证,可以在网关上进行认证,然后再将请求转发到后端的微服务,而无须在每个微服务中进行认证;
访问控制灵活,可以进行流量控制、权限校验、限流熔断、黑白名单控制;
减少了客户端与各个微服务之间的交互次数;
网关采用多点集群部署,通过nginx负载均衡实现高可用;通过高性能的dubbo的实现RPC服务高效调用。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的保护范围内。
Claims (4)
1.一种基于泛化调用的分布式服务网关设计方法,其特征在于,包括如下步骤:
S1,定义网关各组成部分及功能;
S2,网关RPC SPI接口定义;
S3,网关服务调用;
S4,网关服务调用签名验证;
S5,定义Gateway网关调用的整体流程;
S3还包括:
S31,通过URL调用服务;
S32,请求结果返回体;
S33,请求入参校验常用注解;
S4还包括:将Token签名参数通过请求的header方式传参,使用md5进行加密;
S5还包括:
S51,设置工程领域的名称与SPI接口扫描路径;
S52,启动工程时将SPI接口服务注册到注册中心zookeeper或者redis;
S53,前端应用按指定地址与参数调用gateway网关;
S54,网关进行请求参数校验证及签名验证;
S55,网关执行服务访问控制及服务限流策略;
S56,gateway网关通过zookeeper获取Dubbo远程服务地址;
S57,通过Generic进行泛化调用Dubbo远程服务;
S58,执行Dubbo服务的请求参数校验;
S59,执行远程服务并返回结果。
2.一种基于泛化调用的分布式服务网关***,用于实现权利要求1所述的基于泛化调用的分布式服务网关设计方法,其特征在于包括:API网关管理平台、前端调用方、Nginx负载均衡、网关集群、服务注册中心和业务服务集群;
所述网关集群包含分布式部署的多个API gateway 网关,上层通过nginx代理转发实现负载均衡;
所述API网关管理平台执行服务访问管理、服务限流管理;
所述业务服务集群采用集群方式部署多个服务模块,RPC SPI远程服务启动时注册到zookeeper服务注册中心;
所述前端调用方通过网关调用SPI服务时会经过安全验证,通过Generic进行泛化调用Dubbo远程服务,返回结果。
3.根据权利要求2所述的基于泛化调用的分布式服务网关***,其特征在于:
所述安全验证包括参数、签名、限流的验证。
4.根据权利要求2所述的基于泛化调用的分布式服务网关***,其特征在于:
该***的spi接口放在rpcservice包目录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110309170.8A CN112910770B (zh) | 2021-03-23 | 2021-03-23 | 一种基于泛化调用的分布式服务网关设计方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110309170.8A CN112910770B (zh) | 2021-03-23 | 2021-03-23 | 一种基于泛化调用的分布式服务网关设计方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112910770A CN112910770A (zh) | 2021-06-04 |
CN112910770B true CN112910770B (zh) | 2022-11-29 |
Family
ID=76106059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110309170.8A Active CN112910770B (zh) | 2021-03-23 | 2021-03-23 | 一种基于泛化调用的分布式服务网关设计方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112910770B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114697131B (zh) * | 2022-04-27 | 2024-08-16 | 京东科技控股股份有限公司 | 数据调用方法及装置、存储介质及电子设备 |
CN115174342B (zh) * | 2022-06-15 | 2024-03-08 | 阿里巴巴(中国)有限公司 | 网关的插件管理方法、装置及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110191164A (zh) * | 2019-05-20 | 2019-08-30 | 中国工商银行股份有限公司 | 分布式服务接入***及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106850549B (zh) * | 2016-12-16 | 2020-08-21 | 北京江南博仁科技有限公司 | 一种分布式加密服务网关及实现方法 |
CN110493352B (zh) * | 2019-08-30 | 2020-08-21 | 南京联创互联网技术有限公司 | 一种基于web中间件的统一网关服务***及其服务方法 |
US11683393B2 (en) * | 2019-09-11 | 2023-06-20 | Intel Corporation | Framework for computing in radio access network (RAN) |
CN111130892B (zh) * | 2019-12-27 | 2022-11-15 | 上海浦东发展银行股份有限公司 | 一种企业级微服务的管理***及方法 |
CN112367321B (zh) * | 2020-11-10 | 2021-11-02 | 苏州万店掌网络科技有限公司 | 快速构建服务调用的方法及中台api网关 |
-
2021
- 2021-03-23 CN CN202110309170.8A patent/CN112910770B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110191164A (zh) * | 2019-05-20 | 2019-08-30 | 中国工商银行股份有限公司 | 分布式服务接入***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112910770A (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795992B2 (en) | Self-adaptive application programming interface level security monitoring | |
CN112910770B (zh) | 一种基于泛化调用的分布式服务网关设计方法及*** | |
CN101438255B (zh) | 基于应用层消息检查的网络和应用攻击保护 | |
US8266327B2 (en) | Identity brokering in a network element | |
US7774831B2 (en) | Methods and apparatus for processing markup language messages in a network | |
CN109309666A (zh) | 一种网络安全中的接口安全控制方法及终端设备 | |
US8356332B2 (en) | Extensible protocol validation | |
US20040139352A1 (en) | Uniformly representing and transferring security assertion and security response information | |
CN106656953A (zh) | 一种基于互联网的***间安全调用接口实现方法 | |
CN104639603B (zh) | 一种基于Spring MVC的RESTful服务设计方法 | |
CN104252339A (zh) | 接口层开发、接口层实现数据交互的方法和装置 | |
US20180255089A1 (en) | Determining Security Vulnerabilities in Application Programming Interfaces | |
CN113269547B (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN101043454A (zh) | 用于在传输数据分组时提高安全性的方法、设备和*** | |
EP1936533A1 (en) | Techniques for secure event recording and processing | |
US20040030788A1 (en) | Computer message validation system | |
CN107463453A (zh) | 同一终端不同应用间通信的方法、装置、设备和存储介质 | |
CN113609012B (zh) | 规范化处理后端异常报错的方法及*** | |
CN111241504B (zh) | 身份验证方法、装置、电子设备及存储介质 | |
CN109492375B (zh) | 基于java中间件集成模式的sap erp单点登录*** | |
CN111343221B (zh) | 基于通用接口框架的命令模式下的业务处理方法和装置 | |
CN115334145B (zh) | 一种业务处理方法、装置、电子设备及存储介质 | |
US20100174826A1 (en) | Information gathering system and method | |
US10623523B2 (en) | Distributed communication and task handling to facilitate operations of application system | |
CN109246146A (zh) | 基于java中间件集成模式的sap erp单点登录方法 |
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 |