CN110716815A - 基于Spring Gateway的微服务各版本定向调用方法 - Google Patents
基于Spring Gateway的微服务各版本定向调用方法 Download PDFInfo
- Publication number
- CN110716815A CN110716815A CN201910960999.7A CN201910960999A CN110716815A CN 110716815 A CN110716815 A CN 110716815A CN 201910960999 A CN201910960999 A CN 201910960999A CN 110716815 A CN110716815 A CN 110716815A
- Authority
- CN
- China
- Prior art keywords
- service
- version
- micro
- gateway
- calling
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
本发明提出了一种基于Spring Gateway的微服务各版本定向调用方法,包括:前端服务器向Spring Gateway网关发送后台服务调用请求;Spring Gateway网关在预设的滤波器中选取请求的服务版本信息,存入ThreadLocal对象中;自定义Ribbon负载均衡策略,利用线程本地变量取出服务版本信息;自定义服务实例选择策略,根据微服务元数据版本信息进行匹配,选中调用与前端调用版本信息一致的微服务实例,以实现所述前端服务器对确定版本服务的定向调用。本发明通过重写LoadBalancerClientFilter实现前端对微服务各版本的定向调用以达到测试新版本微服务的目的。
Description
技术领域
本发明涉及微服务技术领域,特别涉及一种基于Spring Gateway的微服务各版本定向调用方法。
背景技术
在微服务版本迭代上线测试期间,注册中心会存在同一服务的多个不同版本,前端调用该服务会在多个版本间轮询调用,这对于前端测试新版本服务造成不便甚至于不可测试,而SpringCloud官方并未提供解决方案。
发明内容
本发明的目的旨在至少解决所述技术缺陷之一。
为此,本发明的目的在于提出一种基于Spring Gateway的微服务各版本定向调用方法。
为了实现上述目的,本发明的实施例提供一种基于Spring Gateway的微服务各版本定向调用方法,包括如下步骤:
步骤S1,前端服务器向Spring Gateway网关发送后台服务调用请求,其中,所述后台服务调用请求包括:请求调用的服务版本信息;
步骤S2,所述Spring Gateway网关在预设的滤波器中选取请求的服务版本信息,存入ThreadLocal对象中;
步骤S3,自定义Ribbon负载均衡策略,同时利用线程本地变量取出服务版本信息;
步骤S4,自定义服务实例选择策略,根据微服务元数据版本信息进行匹配,选中调用与前端调用版本信息一致的微服务实例,以实现所述前端服务器对确定版本服务的定向调用。
进一步,在所述步骤S2中,所述预设的滤波器采用LoadBalanceClientFilter。
进一步,在所述步骤S3中,利用线程本地变量ThreadLocal将变量带到Ribbon流程链中每个处理节点中,从threadLocal中取出服务版本信息。
进一步,在所述步骤S3中,微服务在注册中心注册时需在注册中心上传元数据,元数据版本信息与TheadLocal取出的前端服务器请求的版本信息一致的服务实例,即为所述前端服务器请求定向调用的微服务实例,由此实现前端对微服务各版本的定向调用。
进一步,采用Java反射取出微服务实例对象中的元数据信息。
进一步,在所述步骤S3中,所述自定义Ribbon负载均衡策略,包括:如果有version版本信息则返回对应版本的服务实例,如果无version版本信息则按轮询的方式返回服务实例,技术重写LoadBalancerClientFilter,并利用@Component注入,springboot的条件编译特性会在注入之后使用重写的LoadBalancerClientFilter。
进一步,如果判断后台服务调用请求不包含服务版本信息,则按照预设默认规则选择微服务实例。
进一步,所述预设默认规则为轮询规则。
根据本发明实施例的基于Spring Gateway的微服务各版本定向调用方法,基于Spring Gateway的Ribbon负载均衡机制,通过重写LoadBalancerClientFilter实现前端对微服务各版本的定向调用以达到测试新版本微服务的目的。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明实施例的基于Spring Gateway的微服务各版本定向调用方法的流程图;
图2为根据本发明实施例的基于Spring Gateway的微服务各版本定向调用方法的示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
如图1和图2所示,本发明实施例的基于Spring Gateway的微服务各版本定向调用方法,包括如下步骤:
步骤S1,前端服务器向Spring Gateway网关发送后台服务调用请求,其中,后台服务调用请求包括:请求调用的服务版本信息。
步骤S2,Spring Gateway网关在预设的滤波器中选取请求的服务版本信息,存入ThreadLocal对象中。
在本步骤中,预设的滤波器采用LoadBalanceClientFilter。即,Spring Gateway网关实现自定义的LoadBalanceClientFilter,在Filter中取出前端请求的version信息存入ThreadLocal对象中。
步骤S3,自定义Ribbon负载均衡策略,同时利用线程本地变量取出服务版本信息。
具体的,自定义Ribbon负载均衡策略,包括:如果有version版本信息则返回对应版本的服务实例,如果无version版本信息则按轮询的方式返回服务实例。技术重写LoadBalancerClientFilter,并利用@Component注入,springboot的条件编译特性会在注入之后使用重写的LoadBalancerClientFilter。
因为Ribbon负载均衡的流程链每个步骤都在一个线程中调用,利用线程本地变量ThreadLocal将变量带到Ribbon流程链中每个处理节点中,从threadLocal中取出服务版本信息。
需要说明的是,为了兼容不带版本信息的前端请求,下一步要判断版本信息是否为空,如果判断后台服务调用请求不包含服务版本信息,则按照预设默认规则选择微服务实例。其中,预设默认规则为轮询规则。
如判断版本信息不为空,则根据微服务元数据版本信息进行匹配,与前端调用版本信息一致的微服务实例即选中调用,从而实现前端对确定版本服务的定向调用。
微服务在注册中心注册时需在注册中心上传元数据,元数据版本信息与TheadLocal取出的前端服务器请求的版本信息一致的服务实例,即为前端服务器请求定向调用的微服务实例,由此实现前端对微服务各版本的定向调用。
在本发明的实施例中,微服务的元数据默认只上传给注册中心,不在代码层面暴露,但微服务实例对象实际上已经携带有元数据信息,采用Java反射取出微服务实例对象中的元数据信息。
步骤S4,自定义服务实例选择策略,根据微服务元数据版本信息进行匹配,选中调用与前端调用版本信息一致的微服务实例,以实现前端服务器对确定版本服务的定向调用。
根据本发明实施例的基于Spring Gateway的微服务各版本定向调用方法,基于Spring Gateway的Ribbon负载均衡机制,通过重写LoadBalancerClientFilter实现前端对微服务各版本的定向调用以达到测试新版本微服务的目的。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。本发明的范围由所附权利要求极其等同限定。
Claims (8)
1.一种基于Spring Gateway的微服务各版本定向调用方法,其特征在于,包括如下步骤:
步骤S1,前端服务器向Spring Gateway网关发送后台服务调用请求,其中,所述后台服务调用请求包括:请求调用的服务版本信息;
步骤S2,所述Spring Gateway网关在预设的滤波器中选取请求的服务版本信息,存入ThreadLocal对象中;
步骤S3,自定义Ribbon负载均衡策略,同时利用线程本地变量取出服务版本信息;
步骤S4,自定义服务实例选择策略,根据微服务元数据版本信息进行匹配,选中调用与前端调用版本信息一致的微服务实例,以实现所述前端服务器对确定版本服务的定向调用。
2.如权利要求1所述的基于Spring Gateway的微服务各版本定向调用方法,其特征在于,在所述步骤S2中,所述预设的滤波器采用LoadBalanceClientFi lter。
3.如权利要求1基于Spring Gateway的微服务各版本定向调用方法,其特征在于,在所述步骤S3中,利用线程本地变量ThreadLocal将变量带到Ribbon流程链中每个处理节点中,从threadLocal中取出服务版本信息。
4.如权利要求1所述的基于Spring Gateway的微服务各版本定向调用方法,其特征在于,在所述步骤S3中,微服务在注册中心注册时需在注册中心上传元数据,元数据版本信息与TheadLocal取出的前端服务器请求的版本信息一致的服务实例,即为所述前端服务器请求定向调用的微服务实例,由此实现前端对微服务各版本的定向调用。
5.如权利要求4所述的基于Spring Gateway的微服务各版本定向调用方法,其特征在于,采用Java反射取出微服务实例对象中的元数据信息。
6.如权利要求1所述的基于Spring Gateway的微服务各版本定向调用方法,其特征在于,在所述步骤S3中,所述自定义Ribbon负载均衡策略,包括:如果有version版本信息则返回对应版本的服务实例,如果无version版本信息则按轮询的方式返回服务实例,技术重写LoadBalancerClientFilter,并利用@Component注入,springboot的条件编译特性会在注入之后使用重写的LoadBalancerClientFilter。
7.如权利要求1所述的基于Spring Gateway的微服务各版本定向调用方法,其特征在于,如果判断后台服务调用请求不包含服务版本信息,则按照预设默认规则选择微服务实例。
8.如权利要求7所述的基于Spring Gateway的微服务各版本定向调用方法,其特征在于,所述预设默认规则为轮询规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910960999.7A CN110716815A (zh) | 2019-10-11 | 2019-10-11 | 基于Spring Gateway的微服务各版本定向调用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910960999.7A CN110716815A (zh) | 2019-10-11 | 2019-10-11 | 基于Spring Gateway的微服务各版本定向调用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110716815A true CN110716815A (zh) | 2020-01-21 |
Family
ID=69211408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910960999.7A Pending CN110716815A (zh) | 2019-10-11 | 2019-10-11 | 基于Spring Gateway的微服务各版本定向调用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716815A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111953799A (zh) * | 2020-08-25 | 2020-11-17 | 山东合天智汇信息技术有限公司 | 一种基于微服务的电子证照分布式管理方法及系统 |
CN111970198A (zh) * | 2020-08-13 | 2020-11-20 | 北京金山云网络技术有限公司 | 一种服务路由方法、装置、电子设备及介质 |
CN112416459A (zh) * | 2020-11-23 | 2021-02-26 | 杭州当虹科技股份有限公司 | 一种解决微服务之间版本强依赖的系统 |
CN113672278A (zh) * | 2021-08-23 | 2021-11-19 | 湖南惠农科技有限公司 | 微服务架构下的服务节点版本控制方法及装置 |
CN113791805A (zh) * | 2021-09-17 | 2021-12-14 | 马上消费金融股份有限公司 | 微服务灰度发布方法及装置 |
WO2022188205A1 (zh) * | 2021-03-11 | 2022-09-15 | 南京大学 | 一种支持事务一致性的微服务动态更新方法 |
CN115658348A (zh) * | 2022-11-07 | 2023-01-31 | 北京瑞莱智慧科技有限公司 | 微服务调用方法、相关装置及存储介质 |
CN113672278B (zh) * | 2021-08-23 | 2024-05-10 | 湖南惠农科技有限公司 | 微服务架构下的服务节点版本控制方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180357055A1 (en) * | 2017-06-07 | 2018-12-13 | Syntel, Inc. | System and method for computer language migration |
CN109246251A (zh) * | 2018-11-13 | 2019-01-18 | 杭州数梦工场科技有限公司 | 一种微服务调用方法、装置、系统、设备及可读存储介质 |
-
2019
- 2019-10-11 CN CN201910960999.7A patent/CN110716815A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180357055A1 (en) * | 2017-06-07 | 2018-12-13 | Syntel, Inc. | System and method for computer language migration |
CN109246251A (zh) * | 2018-11-13 | 2019-01-18 | 杭州数梦工场科技有限公司 | 一种微服务调用方法、装置、系统、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
CODECRAFT: ""聊聊spring cloud gateway的LoadBalancerClientFilter"", 《SEGMENTFAULT,HTTPS://SEGMENTFAULT.COM/A/1190000015338790》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111970198A (zh) * | 2020-08-13 | 2020-11-20 | 北京金山云网络技术有限公司 | 一种服务路由方法、装置、电子设备及介质 |
CN111953799A (zh) * | 2020-08-25 | 2020-11-17 | 山东合天智汇信息技术有限公司 | 一种基于微服务的电子证照分布式管理方法及系统 |
CN112416459A (zh) * | 2020-11-23 | 2021-02-26 | 杭州当虹科技股份有限公司 | 一种解决微服务之间版本强依赖的系统 |
CN112416459B (zh) * | 2020-11-23 | 2024-03-01 | 杭州当虹科技股份有限公司 | 一种解决微服务之间版本强依赖的系统 |
WO2022188205A1 (zh) * | 2021-03-11 | 2022-09-15 | 南京大学 | 一种支持事务一致性的微服务动态更新方法 |
CN113672278A (zh) * | 2021-08-23 | 2021-11-19 | 湖南惠农科技有限公司 | 微服务架构下的服务节点版本控制方法及装置 |
CN113672278B (zh) * | 2021-08-23 | 2024-05-10 | 湖南惠农科技有限公司 | 微服务架构下的服务节点版本控制方法及装置 |
CN113791805A (zh) * | 2021-09-17 | 2021-12-14 | 马上消费金融股份有限公司 | 微服务灰度发布方法及装置 |
CN115658348A (zh) * | 2022-11-07 | 2023-01-31 | 北京瑞莱智慧科技有限公司 | 微服务调用方法、相关装置及存储介质 |
CN115658348B (zh) * | 2022-11-07 | 2024-05-14 | 北京瑞莱智慧科技有限公司 | 微服务调用方法、相关装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110716815A (zh) | 基于Spring Gateway的微服务各版本定向调用方法 | |
US11576031B2 (en) | Service registration in a communications network | |
US11109307B2 (en) | Service registration and discovery in a communications network | |
CN102193820A (zh) | 用于向应用提供异构连接对象的连接处理器和方法 | |
CN104731625B (zh) | 一种加载插件的方法、装置和移动终端 | |
US9547670B2 (en) | System and method for a self service portal and automation for internally hosted virtual server resources | |
EP3007408B1 (en) | Service method for managing transactions using application properties and system therefor | |
US8788580B2 (en) | Event broker for an improved application server platform for telecom-based applications | |
US7900214B2 (en) | System and method for adaptable provisioning of generic application content | |
US20040230965A1 (en) | Mobile handset network that facilitates interaction between a generic intelligent responsive agent and a service broker server | |
CN106331135B (zh) | 一种部分界面更新方法、系统、客户端和服务端 | |
US10866841B2 (en) | Communication system and method for accessing and deploying temporary microservices on a heterogeneous platform | |
WO2011060735A1 (zh) | 微件Widget调用的方法、装置和系统 | |
US8387039B2 (en) | System and method for customized provisioning of application content | |
US11546413B2 (en) | System and method for identifying capabilities and limitations of an orchestration based application integration | |
US8640150B2 (en) | Information processing terminal, information processing method, and program product | |
US20160103666A1 (en) | Performance improvement method in instance hosting environment and service system therefor | |
CN112256351B (zh) | Feign组件的实现方法、微服务调用方法及装置 | |
US20080209441A1 (en) | Context-driven dynamic subscription based on user selections | |
CN110730197A (zh) | 一种服务发现方法和系统 | |
US7979531B2 (en) | Method and system for network management data collection | |
CN106598642A (zh) | 在插件中使用服务的方法及装置 | |
CN110198225A (zh) | 一种多集群的管理方法及管理服务器 | |
TWI381314B (zh) | 中介軟體橋接系統及方法 | |
EP2112601A1 (en) | System and method of application persistence |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200121 |
|
RJ01 | Rejection of invention patent application after publication |