CN111580846B - 一种基于混合框架的微服务灰度发布方法 - Google Patents
一种基于混合框架的微服务灰度发布方法 Download PDFInfo
- Publication number
- CN111580846B CN111580846B CN202010413471.0A CN202010413471A CN111580846B CN 111580846 B CN111580846 B CN 111580846B CN 202010413471 A CN202010413471 A CN 202010413471A CN 111580846 B CN111580846 B CN 111580846B
- Authority
- CN
- China
- Prior art keywords
- service
- request
- gray
- gray level
- instance
- 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
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000011144 upstream manufacturing Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 230000000694 effects Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于混合框架的微服务灰度发布方法,其特征在于,设置灰度配置模块,在服务网关中集成灰度识别模块和灰度路由组件,在非服务网关的每个服务中集成灰度路由组件;所述灰度配置模块用于配置灰度用户列表,确定哪些用户使用灰度版本,哪些用户使用正式版本;所述灰度识别模块用于对外来请求进行识别,确定是否是灰度请求,并进行灰度标记;所述灰度路由组件用于进行灰度路由,根据灰度标记,将请求路由到对应的服务;所述灰度路由组件主要由基于不同微服务框架的至少两个请求拦截器、至少两个调用拦截器和至少两个路由器组成。该方法有利于支持多个微服务框架的混合,适应更广泛的灰度发布场景。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种基于混合框架的微服务灰度发布方法。
背景技术
微服务系统在升级时,总体上有三种方式。第一种,即暴力升级,是把旧的服务停止掉,然后上新的服务。这种方式的影响是服务会有一个中断窗口,对于用户来说服务不可用,这是最大的影响,而且新的服务上线之后不免出现问题而不得不回滚至旧版本。第二种,即蓝绿发布,新旧服务同时存在,在新的服务充分验证之后,把流量全部切换到新服务,再把旧的服务下掉。这种方案的问题在于需要同时部署两套服务,资源成本较高,维护也比较麻烦。第三种,即灰度发布,服务只有一套,部分服务实例会同时存在正式版本(即旧版本)与灰度版本(即新版本),大部分用户使用正式版本,一部分用户体验灰度版本,当充分验证之后,把所有流量切换至灰度版本,再把旧版本下线掉。
目前,主流的微服务框架有Spring Cloud与Dubbo,各自框架下的灰度发布方案也比较多,但两个框架混合情况下的灰度发布方案则比较少。但有些项目为了充分利用两个框架各自的优点,或者由于技术栈迁移,会存在两个框架同时使用的情况,此时各自的灰度发布方案由于无法统一在一起,导致无法实现总体上的灰度发布。
发明内容
本发明的目的在于提供一种基于混合框架的微服务灰度发布方法,该方法有利于支持多个微服务框架的混合,适应更广泛的灰度发布场景。
为实现上述目的,本发明采用的技术方案是:一种基于混合框架的微服务灰度发布方法,其特征在于,设置灰度配置模块,在服务网关中集成灰度识别模块和灰度路由组件,在非服务网关的每个服务中集成灰度路由组件;
所述灰度配置模块用于配置灰度用户列表,确定哪些用户使用灰度版本,哪些用户使用正式版本;
所述灰度识别模块用于对外来请求进行识别,确定是否是灰度请求,并进行灰度标记;
所述灰度路由组件用于进行灰度路由,根据灰度标记,将请求路由到对应的服务;所述灰度路由组件主要由基于不同微服务框架的至少两个请求拦截器、至少两个调用拦截器和至少两个路由器组成;所述请求拦截器拦截服务网关或上游服务发来的请求并构建请求上下文,从请求中获取灰度路由信息并保存在当前请求的上下文中;所述调用拦截器在灰度路由之前,对本服务业务处理后的请求进行拦截,并将当前请求的上下文信息添加至请求中,以在调用下游服务时,将当前请求是否为灰度请求的信息传递给下游服务的请求拦截器,确保下游服务的正确路由;所述路由器判断当前请求是否为灰度请求,下游服务是否有灰度实例,然后在调用下游服务时,将当前请求路由到对应服务的对应实例。
进一步地,所述服务网关拦截进来的请求,并从灰度配置模块读取配置,将请求用户与灰度用户清单中的灰度用户进行匹配,如果匹配则将当前请求标记为灰度请求,否则标记为正式请求,从而实现灰度识别和标记。
进一步地,所述路由器判断当前请求是否为灰度请求,下游服务是否有灰度实例,然后按如下方法进行灰度路由:1)如果当前请求为灰度请求且下游服务有灰度实例,将当前请求发给灰度实例;2)如果当前请求为灰度请求且下游服务没有灰度实例,将当前请求发给正式实例;3)如果当前请求为正式请求,无论下游服务是否有灰度实例,都将当前请求发给正式实例。
进一步地,所述微服务框架包括Spring Cloud和Dubbo,所述灰度路由组件主要由基于Spring Cloud和Dubbo的两个请求拦截器、两个调用拦截器和两个路由器组成。
进一步地,在服务网关中,基于ZuulFilter实现请求拦截器;在每个服务中,Spring Cloud基于HandlerInterceptor实现请求拦截器,Dubbo基于Filter实现请求拦截器。
进一步地,在服务网关中,没有独立的调用拦截器,调用拦截器与请求拦截器集成在一起;在每个服务中,Spring Cloud基于Feign的RequestInterceptor接口实现调用拦截器,Dubbo基于Filter实现调用拦截器。
进一步地,在服务网关中,基于AbstractLoadBalancerRule实现路由器;在每个服务中,Spring Cloud基于AbstractLoadBalancerRule实现路由器,Dubbo基于AbstractRouter实现路由器。
进一步地,每个服务实例都注册到服务注册中心,新的服务实例启动时,标记为灰度实例,并且将此标记与服务实例的其他信息一起注册到服务注册中心,网关与其他服务都可以从服务注册中心读取到每个服务实例的类别,即是正式实例还是灰度实例;服务实例发布流程包括以下步骤:
a)新的服务实例部署时,设置为灰度实例并启动;
b)灰度实例经过充分测试与验证;
c)把新的服务实例设置为正式服务并启动;
d)下线旧的服务实例。
相较于现有技术,本发明具有以下有益效果:提供了一种基于混合框架的微服务灰度发布方法,该方法支持包括Spring Cloud和Dubbo的多个微服务框架混合共存,可以适应更广泛的灰度发布场景。此外,该方法实现轻量,集成简单,稳定性高,且对业务友好,无需修改业务代码。因此,本发明具有很强的实用性和广阔的应用前景。
附图说明
图1是本发明实施例的总体实现流程图。
图2是本发明实施例中灰度路由组件的工作流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细说明。
本发明提供了一种基于混合框架的微服务灰度发布方法,如图1所示,设置灰度配置模块,在服务网关中集成灰度识别模块和灰度路由组件,在非服务网关的每个服务中集成灰度路由组件。
所述灰度配置模块用于配置灰度用户列表,确定哪些用户使用灰度版本,哪些用户使用正式版本。
所述灰度识别模块用于对外来请求进行识别,确定是否是灰度请求,并进行灰度标记。
具体地,所述服务网关拦截进来的请求,并从灰度配置模块读取配置,将请求用户与灰度用户清单中的灰度用户进行匹配,如果匹配则将当前请求标记为灰度请求,否则标记为正式请求,从而实现灰度识别和标记。
如图2所示,所述灰度路由组件用于进行灰度路由,根据灰度标记,将请求路由到对应的服务;所述灰度路由组件主要由基于不同微服务框架的至少两个请求拦截器、至少两个调用拦截器和至少两个路由器组成。
请求拦截器:
请求拦截器的用途是对每一个请求进行鉴定,确定是否是灰度请求,为下游的服务调用提供路由依据。请求拦截器拦截服务网关或上游服务发来的请求并构建请求上下文,从请求中获取灰度路由信息并保存在当前请求的上下文中。
调用拦截器:
每一个服务调用下游服务时,需要把当前请求是否是灰度请求的信息传递给下游服务的请求拦截器,确保下游服务的正确路由。因此,调用拦截器在灰度路由之前,对本服务业务处理后的请求进行拦截,并将当前请求的上下文信息添加至请求中。
路由器:
一个服务在调用下游服务时,需要决定把请求发给下游服务的哪一个实例(一个服务至少有一个实例)。路由器判断当前请求是否为灰度请求,下游服务是否有灰度实例,然后在调用下游服务时,将当前请求路由到对应服务的对应实例。具体为:1)如果当前请求为灰度请求且下游服务有灰度实例,将当前请求发给灰度实例;2)如果当前请求为灰度请求且下游服务没有灰度实例,将当前请求发给正式实例;3)如果当前请求为正式请求,无论下游服务是否有灰度实例,都将当前请求发给正式实例。
在本实施例中,所述微服务框架包括Spring Cloud和Dubbo,所述灰度路由组件主要由基于Spring Cloud和Dubbo的两个请求拦截器、两个调用拦截器和两个路由器组成。
对于请求拦截器:在服务网关中,基于ZuulFilter实现请求拦截器;在每个服务中,Spring Cloud基于HandlerInterceptor实现请求拦截器,Dubbo基于Filter实现请求拦截器。
对于调用拦截器:在服务网关中,没有独立的调用拦截器,调用拦截器与请求拦截器集成在一起;在每个服务中,Spring Cloud基于Feign的RequestInterceptor接口实现调用拦截器,Dubbo基于Filter实现调用拦截器。
对于路由器:在服务网关中,基于AbstractLoadBalancerRule实现路由器;在每个服务中,Spring Cloud基于AbstractLoadBalancerRule实现路由器,Dubbo基于AbstractRouter实现路由器。
服务发布:
每个服务实例都注册到服务注册中心,新的服务实例启动时,标记为灰度实例,并且将此标记与服务实例的其他信息一起注册到服务注册中心,网关与其他服务都可以从服务注册中心读取到每个服务实例的类别,即是正式实例还是灰度实例;服务实例发布流程包括以下步骤:
a)新的服务实例部署时,设置为灰度实例并启动;
b)灰度实例经过充分测试与验证;
c)把新的服务实例设置为正式服务并启动;
d)下线旧的服务实例。
灰度配置:
服务发布之后,还需要配置灰度用户列表,否则灰度路由将不会起到实际的作用。灰度配置的维度,分为粒度维度与时间维度:
粒度维度,可以选择某一个用户,也可以选择某一组用户;用户分组可以随机分组,按用户地域分组或者自定义分组,手工选择用户分组。
时间维度,可以确定用户体验灰度版本的时间段,具体可以分为不限定时间、与设置一个截止时间。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (8)
1.一种基于混合框架的微服务灰度发布方法,其特征在于,设置灰度配置模块,在服务网关中集成灰度识别模块和灰度路由组件,在非服务网关的每个服务中集成灰度路由组件;
所述灰度配置模块用于配置灰度用户列表,确定哪些用户使用灰度版本,哪些用户使用正式版本;
所述灰度识别模块用于对外来请求进行识别,确定是否是灰度请求,并进行灰度标记;
所述灰度路由组件用于进行灰度路由,根据灰度标记,将请求路由到对应的服务;所述灰度路由组件主要由基于不同微服务框架的至少两个请求拦截器、至少两个调用拦截器和至少两个路由器组成;所述请求拦截器拦截服务网关或上游服务发来的请求并构建请求上下文,从请求中获取灰度路由信息并保存在当前请求的上下文中;所述调用拦截器在灰度路由之前,对本服务业务处理后的请求进行拦截,并将当前请求的上下文信息添加至请求中,以在调用下游服务时,将当前请求是否为灰度请求的信息传递给下游服务的请求拦截器,确保下游服务的正确路由;所述路由器判断当前请求是否为灰度请求,下游服务是否有灰度实例,然后在调用下游服务时,将当前请求路由到对应服务的对应实例。
2.根据权利要求1所述的一种基于混合框架的微服务灰度发布方法,其特征在于,所述服务网关拦截进来的请求,并从灰度配置模块读取配置,将请求用户与灰度用户清单中的灰度用户进行匹配,如果匹配则将当前请求标记为灰度请求,否则标记为正式请求,从而实现灰度识别和标记。
3.根据权利要求1所述的一种基于混合框架的微服务灰度发布方法,其特征在于,所述路由器判断当前请求是否为灰度请求,下游服务是否有灰度实例,然后按如下方法进行灰度路由:1)如果当前请求为灰度请求且下游服务有灰度实例,将当前请求发给灰度实例;2)如果当前请求为灰度请求且下游服务没有灰度实例,将当前请求发给正式实例;3)如果当前请求为正式请求,无论下游服务是否有灰度实例,都将当前请求发给正式实例。
4.根据权利要求1所述的一种基于混合框架的微服务灰度发布方法,其特征在于,所述微服务框架包括Spring Cloud和Dubbo,所述灰度路由组件主要由基于Spring Cloud和Dubbo的两个请求拦截器、两个调用拦截器和两个路由器组成。
5.根据权利要求4所述的一种基于混合框架的微服务灰度发布方法,其特征在于,在服务网关中,基于ZuulFilter实现请求拦截器;在每个服务中,Spring Cloud基于HandlerInterceptor实现请求拦截器,Dubbo基于Filter实现请求拦截器。
6.根据权利要求4所述的一种基于混合框架的微服务灰度发布方法,其特征在于,在服务网关中,没有独立的调用拦截器,调用拦截器与请求拦截器集成在一起;在每个服务中,Spring Cloud基于Feign的RequestInterceptor接口实现调用拦截器,Dubbo基于Filter实现调用拦截器。
7.根据权利要求4所述的一种基于混合框架的微服务灰度发布方法,其特征在于,在服务网关中,基于AbstractLoadBalancerRule实现路由器;在每个服务中,Spring Cloud基于AbstractLoadBalancerRule实现路由器,Dubbo基于AbstractRouter实现路由器。
8.根据权利要求1所述的一种基于混合框架的微服务灰度发布方法,其特征在于,每个服务实例都注册到服务注册中心,新的服务实例启动时,标记为灰度实例,并且将此标记与服务实例的其他信息一起注册到服务注册中心,网关与其他服务都可以从服务注册中心读取到每个服务实例的类别,即是正式实例还是灰度实例;服务实例发布流程包括以下步骤:
a)新的服务实例部署时,设置为灰度实例并启动;
b)灰度实例经过充分测试与验证;
c)把新的服务实例设置为正式服务并启动;
d)下线旧的服务实例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010413471.0A CN111580846B (zh) | 2020-05-15 | 2020-05-15 | 一种基于混合框架的微服务灰度发布方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010413471.0A CN111580846B (zh) | 2020-05-15 | 2020-05-15 | 一种基于混合框架的微服务灰度发布方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111580846A CN111580846A (zh) | 2020-08-25 |
CN111580846B true CN111580846B (zh) | 2021-02-26 |
Family
ID=72113759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010413471.0A Active CN111580846B (zh) | 2020-05-15 | 2020-05-15 | 一种基于混合框架的微服务灰度发布方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111580846B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181458A (zh) * | 2020-09-25 | 2021-01-05 | 中国建设银行股份有限公司 | 灰度规则的配置、灰度路由方法、装置、设备及存储介质 |
CN112073320B (zh) * | 2020-11-12 | 2021-02-09 | 深圳壹账通智能科技有限公司 | 基于云网关的api灰度发布方法、装置及计算机设备 |
CN112446714A (zh) * | 2020-12-11 | 2021-03-05 | 上海中通吉网络技术有限公司 | 快递售后工单处理系统的服务器升级方法、装置及设备 |
CN113055465B (zh) * | 2021-03-11 | 2022-04-22 | 南京大学 | 一种支持事务一致性的微服务动态更新方法 |
CN113079197B (zh) * | 2021-03-15 | 2023-07-25 | 上海浦东发展银行股份有限公司 | 一种基于注册中心和Ribbon的灰度负载方法、设备及存储介质 |
CN113055492A (zh) * | 2021-03-25 | 2021-06-29 | 深圳云之家网络有限公司 | 服务灰度链路的控制方法、装置、计算机设备和存储介质 |
CN113382051A (zh) * | 2021-06-01 | 2021-09-10 | 中国民航信息网络股份有限公司 | 一种全链路的灰度发布方法及灰度发布系统 |
CN113691511B (zh) * | 2021-08-13 | 2024-01-19 | 广州华多网络科技有限公司 | 服务请求处理方法及其装置、设备与介质 |
CN114422386B (zh) * | 2022-01-20 | 2023-08-11 | 南方电网数字电网研究院有限公司 | 一种微服务网关的监测方法及装置 |
CN114422440B (zh) * | 2022-03-28 | 2022-07-12 | 北京沃丰时代数据科技有限公司 | 灰度发布方法、装置、电子设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10361802B1 (en) * | 1999-02-01 | 2019-07-23 | Blanding Hovenweep, Llc | Adaptive pattern recognition based control system and method |
US6718535B1 (en) * | 1999-07-30 | 2004-04-06 | Accenture Llp | System, method and article of manufacture for an activity framework design in an e-commerce based environment |
WO2002046916A2 (en) * | 2000-10-20 | 2002-06-13 | Polexis, Inc. | Extensible information system (xis) |
CN110650163A (zh) * | 2018-06-26 | 2020-01-03 | 马上消费金融股份有限公司 | 一种灰度发布方法、系统、设备及计算机可读存储介质 |
CN109194760A (zh) * | 2018-09-14 | 2019-01-11 | 深圳市佰仟金融服务有限公司 | 业务处理方法、网络系统及服务器 |
CN109788029A (zh) * | 2018-12-14 | 2019-05-21 | 平安信托有限责任公司 | 微服务的灰度调用方法、装置、终端及可读存储介质 |
CN109857409A (zh) * | 2019-01-16 | 2019-06-07 | 深圳壹账通智能科技有限公司 | 基于微服务网关的数据处理方法、装置及计算机设备 |
CN110377327A (zh) * | 2019-06-19 | 2019-10-25 | 平安普惠企业管理有限公司 | 生产环境灰度发布监控方法、设备、存储介质及装置 |
CN110753031B (zh) * | 2019-09-18 | 2022-03-18 | 平安科技(深圳)有限公司 | 基于微服务框架的一起灰度方法、装置和计算机设备 |
CN110784409B (zh) * | 2019-10-31 | 2022-08-09 | 长沙水羊网络科技有限公司 | 一种基于Spring Cloud的微服务灰度发布方法 |
-
2020
- 2020-05-15 CN CN202010413471.0A patent/CN111580846B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111580846A (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111580846B (zh) | 一种基于混合框架的微服务灰度发布方法 | |
US9864595B2 (en) | Software updating method, system, and device | |
CN107222324B (zh) | 网络服务的业务配置方法和装置 | |
CN102318291B (zh) | 一种业务流处理的方法、装置及系统 | |
CN110602056B (zh) | 一种业务参数传递方法及装置 | |
CN111093162A (zh) | 一种智能选择短信发送通道的方法 | |
CN107222530A (zh) | 服务异步交互方法、设备、系统和可读介质 | |
CN105847035B (zh) | 一种虚拟化epc系统及业务实例化方法 | |
SE9901588L (sv) | Resurshanterare för telekommunikationsnät | |
CN103260190B (zh) | 基于lte长期演进系统网络的安全审计方法 | |
CN105262703A (zh) | 一种基于双重优先级的路由带宽分配方法 | |
CN101594307A (zh) | 基于多级队列的调度方法和系统 | |
CN101820606B (zh) | 认证授权计费服务器及其消息处理方法 | |
CN104283810A (zh) | 上行带宽处理方法和家庭网关 | |
CN105450878B (zh) | 坐席资源码的分配方法和分配系统 | |
CN101335952A (zh) | 网络访问接入点管理方法和移动终端 | |
CN102137082A (zh) | 内容过滤的方法及装置 | |
CN103914335A (zh) | 一种后台服务的调用方法、设备和系统 | |
CN101883050B (zh) | 一种实现业务限速的系统及方法 | |
CN103812707B (zh) | 一种线路标识报文的转发处理方法 | |
CN111131068A (zh) | 互联网专线数据传输方法及装置 | |
CN106612300A (zh) | 一种消息推送方法及推送服务器 | |
CN102137102A (zh) | 一种支持多类信息发布方式的业务支撑平台实现方法 | |
CN102891805B (zh) | 一种在网络设备中实现优先级映射的方法及装置 | |
CN105376155B (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 361000 3F-A317, Zone C, Innovation Building, Software Park, Torch High tech Zone, Xiamen City, Fujian Province Patentee after: Fujian Reliable Cloud Computing Technology Co.,Ltd. Country or region after: China Address before: 361000 3f-a317, Zone C, innovation building, software park, torch hi tech Zone, Huli District, Xiamen City, Fujian Province Patentee before: Xiamen Biebeyun Co.,Ltd. Country or region before: China |