CN112910770B - 一种基于泛化调用的分布式服务网关设计方法及系统 - Google Patents

一种基于泛化调用的分布式服务网关设计方法及系统 Download PDF

Info

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
Application number
CN202110309170.8A
Other languages
English (en)
Other versions
CN112910770A (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.)
Shenzhen Qianhai Linkage Cloud Software Technology Co ltd
Original Assignee
Shenzhen Qianhai Linkage Cloud Software 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 Shenzhen Qianhai Linkage Cloud Software Technology Co ltd filed Critical Shenzhen Qianhai Linkage Cloud Software Technology Co ltd
Priority to CN202110309170.8A priority Critical patent/CN112910770B/zh
Publication of CN112910770A publication Critical patent/CN112910770A/zh
Application granted granted Critical
Publication of CN112910770B publication Critical patent/CN112910770B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements 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包目录。
CN202110309170.8A 2021-03-23 2021-03-23 一种基于泛化调用的分布式服务网关设计方法及系统 Active CN112910770B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114697131A (zh) * 2022-04-27 2022-07-01 京东科技控股股份有限公司 数据调用方法及装置、存储介质及电子设备
CN115174342B (zh) * 2022-06-15 2024-03-08 阿里巴巴(中国)有限公司 网关的插件管理方法、装置及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110191164A (zh) * 2019-05-20 2019-08-30 中国工商银行股份有限公司 分布式服务接入系统及方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
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网关

Patent Citations (1)

* Cited by examiner, † Cited by third party
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) 一种基于泛化调用的分布式服务网关设计方法及系统
EP1839160B1 (en) Network and application attack protection based on application layer message inspection
US8266327B2 (en) Identity brokering in a network element
US7774831B2 (en) Methods and apparatus for processing markup language messages in a network
US7249373B2 (en) Uniformly representing and transferring security assertion and security response information
CN109309666A (zh) 一种网络安全中的接口安全控制方法及终端设备
CN101043454B (zh) 用于在传输数据分组时提高安全性的方法、设备和系统
US8356332B2 (en) Extensible protocol validation
CN104636678B (zh) 一种云计算环境下对终端设备进行管控的方法和系统
US11108803B2 (en) Determining security vulnerabilities in application programming interfaces
CN104639603B (zh) 一种基于Spring MVC的RESTful服务设计方法
US10243829B2 (en) Communication protocol testing method, and tested device and testing platform thereof
CN104252339A (zh) 接口层开发、接口层实现数据交互的方法和装置
CN110209583A (zh) 安全测试方法、装置、系统、设备和存储介质
CN112291240A (zh) 一种信息处理方法及装置
US20040030788A1 (en) Computer message validation system
CN114448654B (zh) 一种基于区块链的分布式可信审计安全存证方法
CN112966833B (zh) 基于Kubernetes集群的机器学习模型平台
CN111241504B (zh) 身份验证方法、装置、电子设备及存储介质
CN111258781A (zh) 微服务的调用鉴权方法、装置、设备及存储介质
CN115334145B (zh) 一种业务处理方法、装置、电子设备及存储介质
US20100174826A1 (en) Information gathering system and method
CN109492375B (zh) 基于java中间件集成模式的sap erp单点登录系统
CN109246146B (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