对微服务实现动态灰度策略的方法及微服务系统与流程

文档序号:24413194发布日期:2021-03-26 20:09阅读:280来源:国知局
对微服务实现动态灰度策略的方法及微服务系统与流程

1.本发明属于计算机技术领域,涉及一种对微服务实现动态灰度策略的方法及微服务系统。


背景技术:

2.随着工业物联网的应用普及,大量的数据运算、处理和传输,需要非常高的数据处理能力,为了满足这种数据处理的高要求,目前提出了多种服务架构,其中包括微服务架构体系。
3.在微服务架构体系中,随着服务不断迭代,不同子服务有不同版本,不同版本之间流量调拨需要可配的策略控制,而目前的微服务架构体系并不能实现不同版本之间流量调拨的可配策略控制。


技术实现要素:

4.为了解决相关技术中的问题,本申请提供了一种对微服务实现动态灰度策略的方法及微服务系统,技术方案如下:第一方面,本申请提供了一种对微服务实现动态灰度策略的方法,所述方法应用于微服务系统,所述微服务系统包括配置中心apollo、网关和多个子服务,所述方法包括:所述网关从所述配置中心apollo中加载与所述网关对应的路由策略,所述路由策略中包含有服务组标识tid,所述服务组标识tid用于唯一标识一个服务组,所述服务组是由来自于不同服务集群的子服务组成的;所述子服务从所述配置中心apollo中加载所述子服务的服务实例标识sid;所述网关在接收到访问请求后,获取所述访问请求中的头信息,根据所述路由策略,确定与所述头信息对应的服务组标识tid,将所述头信息透传至所述服务组标识tid对应的下游子服务;所述子服务在接收到上游子服务发送的头信息后,获取所述头信息所对应的服务实例标识sid,将所述服务实例标识sid添加至feign请求的头部,向具备所述服务实例标识sid的下游子服务发送所述feign请求。
5.可选地,所述网关从配置中心apollo处加载所述网关对应的路由策略,包括:所述网关在启动后,向所述配置中心apollo发送第一加载请求,所述第一加载请求中包含有所述网关的标识,以用于从所述配置中心apollo中加载与所述网关的标识对应的路由策略。
6.可选地,所述子服务从所述配置中心apollo中加载所述子服务的服务实例标识sid,包括:所述子服务在启动后,向所述配置中心apollo发送第二加载请求,所述第二加载请求中包含有所述子服务的标识,以用于从所述配置中心apollo中加载所述子服务的标识对应的服务实例标识sid。
7.可选地,所述方法还包括:所述配置中心apollo向所述网关发送路由策略更改通知;所述网关在接收到所述配置中心apollo发送的路由策略更改通知后,从所述配置中心apollo中加载并更新本地的路由策略。
8.可选地,所述网关预先加载有gatewaystrategyroutefilter以覆盖内置的过滤类,所述子服务中预先加载有wyloadbalance类。
9.第二方面,本申请还提供了一种对微服务实现动态灰度策略的微服务系统,所述微服务系统包括配置中心apollo、网关和多个子服务,其中:所述网关从所述配置中心apollo中加载与所述网关对应的路由策略,所述路由策略中包含有服务组标识tid,所述服务组标识tid用于唯一标识一个服务组,所述服务组是由来自于不同服务集群的子服务组成的;所述子服务从所述配置中心apollo中加载所述子服务的服务实例标识sid;所述网关在接收到访问请求后,获取所述访问请求中的头信息,根据所述路由策略,确定与所述头信息对应的服务组标识tid,将所述头信息透传至所述服务组标识tid对应的下游子服务;所述子服务在接收到上游子服务发送的头信息后,获取所述头信息所对应的服务实例标识sid,将所述服务实例标识sid添加至feign请求,向具备所述服务实例标识sid的下游子服务发送所述feign请求。
10.可选的,所述网关在启动后,向所述配置中心apollo发送第一加载请求,所述第一加载请求中包含有所述网关的标识;所述配置中心apollo在接收到所述第一加载请求后,查询并返回与所述网关的标识对应的路由策略;所述网关接收所述路由策略并加载至本地。
11.可选的,所述子服务在启动后,向所述配置中心apollo发送第二加载请求,所述第二加载请求中包含有所述子服务的标识;所述配置中心apollo在接收到所述第二加载请求后,查询并返回与所述子服务的标识对应的服务实例标识sid;所述子服务接收所述服务实例标识sid并加载至本地。
12.可选的,所述配置中心apollo向所述网关发送路由策略更改通知;所述网关在接收到所述配置中心apollo发送的路由策略更改通知后,从所述配置中心apollo中加载并更新本地的路由策略。
13.可选的,所述网关预先加载有gatewaystrategyroutefilter以覆盖内置的过滤类,所述子服务中预先加载有wyloadbalance类。
14.基于上述技术方案,本申请至少可以实现如下有益效果:本申请通过设置服务组标识tid与服务实例标识sid,实现分层次的路由策略控制,以轻量级的方式实现微服务集群不同版本有效隔离,支持多版本同时在集群中运行;并通过改变路由规则,也可以测试不同版本间上下游服务的调用的兼容性。
15.本申请还支持测试做线上环境abtest,操作简单;另外,路由信息变更不需要重启集群,可动态加载。
16.应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
17.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
18.图1是本申请一个实施例中提供的对微服务实现动态灰度策略的方法的流程图;图2是本申请一个实施例中提供的对微服务实现动态灰度策略的微服务系统的拓补示意图。
具体实施方式
19.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
20.图1是本申请一个实施例中提供的对微服务实现动态灰度策略的方法的流程图,本申请提供的对微服务实现动态灰度策略的方法应用于微服务系统,所述微服务系统包括配置中心apollo、网关和多个子服务,该方法可以包括如下步骤:步骤101,网关从配置中心apollo中加载与网关对应的路由策略,路由策略中包含有服务组标识tid;这里所讲的服务组标识tid用于唯一标识一个服务组,服务组是由来自于不同服务集群的子服务组成的。比如,a服务集群包括子服务a1、子服务a2、子服务a3,b服务集群包括子服务b1、子服务b2、子服务b3,c服务集群包括子服务c1、子服务c2、子服务c3,则一个服务组可以是由a服务集群中的一个子服务、b服务集群中的一个子服务以及c服务集群中的一个子服务组成,比如一个服务组可以包括子服务a1、子服务b1和子服务c2。
21.在实际应用中,在为某一访问请求进行服务时的多个子服务可以是相同版本也可以是不同版本,比如,三个子服务中的两个子服务是相同版本v1.0,第三个子服务是更高的版本v1.1。可以根据实际提供服务时的版本要求,将对应版本的多个不同的子服务组合成一个服务组,并为该服务组配置一个服务组标识tid。
22.在一种可能的实现方式中,网关从配置中心apollo处加载网关对应的路由策略时,一般是网关在启动后,向配置中心apollo发送第一加载请求,第一加载请求中包含有网关的标识(通常是指网关的namespace),以用于从配置中心apollo中加载与网关的标识对应的路由策略。
23.通常来讲,配置中心apollo中预先存储有各个网关的标识以及为各个网关配置的路由策略,且网关的标识和对应的路由策略对应存储。这样,当配置中心apollo接收到网关发送的第一加载请求后,则会查找该网关的标识对应的路由策略,并将查找到的路由策略反馈给该网关。对应的,网关在接收到路由策略后则会将路由策略加载存储至本地。
24.在实际实现时,可以在网关中预先加载gatewaystrategyroutefilter以覆盖内置的过滤类,这样,当网关开启后,可以利用gatewaystrategyroutefilter从配置中心apollo
加载该网关标识对应的路由策略。通过设置gatewaystrategyroutefilter使得网关可以实现路由策略的调配。
25.步骤102,子服务从配置中心apollo中加载子服务的服务实例标识sid;服务实例标识sid用于唯一标识子服务,也可以理解为子服务的唯一编码。
26.在一种可能的实现方式中,子服务从配置中心apollo中加载子服务的服务实例标识sid时,通常是子服务在启动后,向配置中心apollo发送第二加载请求,第二加载请求中包含有子服务的标识,以用于从配置中心apollo中加载标识对应的服务实例标识sid。
27.通常来讲,配置中心apollo中预先存储有各个子服务的服务实例标识sid。这样,当配置中心apollo接收到网关发送的第二加载请求后,则会查找该子服务的服务实例标识sid,并将查找到的服务实例标识sid反馈给子服务。对应的,子服务在接收到服务实例标识sid后则会将该服务实例标识sid加载至本地。
28.在实际实现时,可以在子服务中预先加载wyloadbalance类,这样,当子服务开启后,可以利用wyloadbalance类从配置中心apollo加载该子服务的服务实例标识sid。通过设置wyloadbalance类使得子服务可以实现路由策略的调配。
29.步骤103,网关在接收到访问请求后,获取访问请求中的头信息,根据路由策略,确定与头信息对应的服务组标识tid,将头信息透传至服务组标识tid对应的下游子服务;网关在接收到访问请求后,利用gatewaystrategyroutefilter获取访问请求中的头信息,根据路由策略,确定与头信息对应的服务组标识tid,将头信息透传至服务组标识tid对应的下游子服务。
30.步骤104,子服务在接收到上游子服务发送的头信息后,获取头信息所对应的服务实例标识sid,将服务实例标识sid添加至feign请求的头部,向具备该服务实例标识sid的下游子服务发送feign请求。
31.子服务在接收到上游子服务发送的头信息后,可以利用wyloadbalance类获取头信息所对应的服务实例标识sid,将服务实例标识sid添加至feign请求的头部,向具备该服务实例标识sid的下游子服务发送feign请求。
32.举例来讲,下表1为四个应用服务和网关服务的配置清单:类名子服务服务端口版本区域环境可用区userservicea1a130011.0上海envazone1userservicea2a230021.1南京envbzone2orderserviceb1b140011.0南京envazone1orderserviceb2b240021.1上海envbzone2gatewayzuul50011.0无无无如图2所示,其是本申请一个实施例中提供的对微服务实现动态灰度策略的微服务系统的拓补示意图,图2中,子服务a1和子服务a2所属的服务集群的服务名为discovery

service

a,组名=discovery

service

group;子服务b1和子服务b2所属的服务集群的服务名为discovery

service

b,组名=discovery

service

group。网关在接收到访问请求后,可以将访问请求路由至a1服务和b1服务组成的服务组,该服务组中的版本均为1.0,此时先将访问请求路由至a1服务,再由a1服务路由至b1服务;或者,网关可以将访问请求路由至a2服务和b2服务组成的服务组,该服务组中的版本均为1.1,此时先将访问请求路由至a2服
务,再由a2服务路由至b2服务。
33.另外,在实际应用中,路由策略可能会根据各种情况影响而发生变化,在路由策略发生变化时,配置中心apollo会向网关发送路由策略更改通知,网关在接收到配置中心apollo发送的路由策略更改通知后,从配置中心apollo中加载并更新本地的路由策略。这样,在路由信息变更时并不需要重启集群,可以动态加载。
34.综上所述,本申请提供的工业物联网对微服务实现动态灰度策略的方法,通过设置服务组标识tid与服务实例标识sid,实现分层次的路由策略控制,以轻量级的方式实现微服务集群不同版本有效隔离,支持多版本同时在集群中运行;并通过改变路由规则,也可以测试不同版本间上下游服务的调用的兼容性;本申请还支持测试做线上环境abtest,操作简单。
35.另外,本申请还提供一种对微服务实现动态灰度策略的微服务系统,该微服务系统所限定的技术特征与上述的对微服务实现动态灰度策略的方法的技术特征对应,对技术特征的相关解释这里就不再赘述。
36.本申请提供的微服务系统可以包括配置中心apollo、网关和多个子服务,其中:网关从配置中心apollo中加载与网关对应的路由策略,路由策略中包含有服务组标识tid,服务组标识tid用于唯一标识一个服务组,服务组是由来自于不同服务集群的子服务组成的;子服务从配置中心apollo中加载子服务的服务实例标识sid;网关在接收到访问请求后,获取访问请求中的头信息,根据路由策略,确定与头信息对应的服务组标识tid,将头信息透传至服务组标识tid对应的下游子服务;子服务在接收到上游子服务发送的头信息后,获取头信息所对应的服务实例标识sid,将服务实例标识sid添加至feign请求,向具备服务实例标识sid的下游子服务发送feign请求。
37.可选的,网关在启动后,向配置中心apollo发送第一加载请求,第一加载请求中包含有网关的标识;配置中心apollo在接收到第一加载请求后,查询并返回与网关的标识对应的路由策略;网关接收路由策略并加载至本地。
38.可选的,子服务在启动后,向配置中心apollo发送第二加载请求,第二加载请求中包含有子服务的标识;配置中心apollo在接收到第二加载请求后,查询并返回与该子服务的标识对应的服务实例标识sid;子服务接收服务实例标识sid并加载至本地。
39.可选的,配置中心apollo向网关发送路由策略更改通知;网关在接收到配置中心apollo发送的路由策略更改通知后,从配置中心apollo中加载并更新本地的路由策略。
40.可选的,网关预先加载有gatewaystrategyroutefilter以覆盖内置的过滤类,子服务中预先加载有wyloadbalance类。
41.综上所述,本申请提供的工业物联网对微服务实现动态灰度策略的微服务系统,
通过设置服务组标识tid与服务实例标识sid,实现分层次的路由策略控制,以轻量级的方式实现微服务集群不同版本有效隔离,支持多版本同时在集群中运行;并通过改变路由规则,也可以测试不同版本间上下游服务的调用的兼容性。
42.本申请还支持测试做线上环境abtest,操作简单;另外,路由信息变更不需要重启集群,可动态加载。
43.本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由所附的权利要求指出。
44.应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1