CN110716815A - 基于Spring Gateway的微服务各版本定向调用方法 - Google Patents

基于Spring Gateway的微服务各版本定向调用方法 Download PDF

Info

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
Application number
CN201910960999.7A
Other languages
English (en)
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.)
Jiaoju (beijing) Artificial Intelligence Technology Co Ltd
Original Assignee
Jiaoju (beijing) Artificial Intelligence 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 Jiaoju (beijing) Artificial Intelligence Technology Co Ltd filed Critical Jiaoju (beijing) Artificial Intelligence Technology Co Ltd
Priority to CN201910960999.7A priority Critical patent/CN110716815A/zh
Publication of CN110716815A publication Critical patent/CN110716815A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

本发明提出了一种基于Spring Gateway的微服务各版本定向调用方法,包括:前端服务器向Spring Gateway网关发送后台服务调用请求;Spring Gateway网关在预设的滤波器中选取请求的服务版本信息,存入ThreadLocal对象中;自定义Ribbon负载均衡策略,利用线程本地变量取出服务版本信息;自定义服务实例选择策略,根据微服务元数据版本信息进行匹配,选中调用与前端调用版本信息一致的微服务实例,以实现所述前端服务器对确定版本服务的定向调用。本发明通过重写LoadBalancerClientFilter实现前端对微服务各版本的定向调用以达到测试新版本微服务的目的。

Description

基于Spring Gateway的微服务各版本定向调用方法
技术领域
本发明涉及微服务技术领域,特别涉及一种基于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的微服务各版本定向调用方法,其特征在于,所述预设默认规则为轮询规则。
CN201910960999.7A 2019-10-11 2019-10-11 基于Spring Gateway的微服务各版本定向调用方法 Pending CN110716815A (zh)

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)

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

* Cited by examiner, † Cited by third party
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 杭州数梦工场科技有限公司 一种微服务调用方法、装置、系统、设备及可读存储介质

Patent Citations (2)

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

* Cited by examiner, † Cited by third party
Title
CODECRAFT: ""聊聊spring cloud gateway的LoadBalancerClientFilter"", 《SEGMENTFAULT,HTTPS://SEGMENTFAULT.COM/A/1190000015338790》 *

Cited By (10)

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