动态路由

最近更新时间:2024-01-25 16:42:12

我的收藏

概述

动态路由功能是指用户根据路由规则控制流量分发的机制,将满足规则的流量转发至目标实例分组。该功能通常用于灰度发布、容灾降级等场景。为了满足客户的定制化需求,北极星支持用户为服务实例打上自定义标签,定向分配流量。 总而言之,服务路由功能的主要作用是将调用流量按照自己的需求进行分配。

应用场景

灰度发布场景:在微服务的场景下,用户研发新版本上线的迭代周期越来越快,稳定敏捷的上线新版本需要微服务框架能够支持灰度发布、金丝雀发布、滚动发布等发布方式。通过服务路由功能,用户可以配置流量分配权重,设置灰度特性的流量被分配到某个版本号中。通过路由功能,用户也可以为指定灰度用户的请求转发至灰度版本上。路由能力为灰度发布等上线模式提供了无需终止服务的底层能力支持。



容灾场景:业务为了应用系统整体的健壮性以及高可用,通常会跨可用区、跨地域进行应用部署。服务路由提供配置目标服务优先级的能力,支持在某可用区或者某地域目标服务发生故障后,将请求路由至次优先级的实例分组上。助力用户更加便捷的实现多活方案。




实现原理

当 A 服务调用 B 服务时,先从注册中心获取全量 B 服务地址信息。当没有服务路由,直接进行负载均衡,根据负载均衡算法从全量 B 服务地址中挑选一个服务实例发起服务调用。 当加入服务路由阶段后,挑选服务实例分为两个阶段:
阶段一:从全量服务地址中根据路由规则选取一批目标服务地址。
阶段二:从阶段一选取的一批目标服务地址中,再根据负载均衡算法挑选一个实例。




使用说明

要实现服务路由需要完成两部分操作:
在控制台上,设置路由规则。
客户端获取路由规则, 根据规则来分发请求。

步骤1:设置路由规则

1. 登录 TSE 控制台
2. 在左侧导航栏,单击 服务治理中心 > 流量管理,进入流量管理页面。
3. 在页面上方选择 动态路由 > 自定义路由 页签,单击新建路由规则。



规则名称:填写路由规则名称,不超过60个字符。
优先级:优先级数字设置越小,规则匹配顺序越靠前。
匹配条件:配置路由规则的主调服务(服务消费者)和被调方(服务提供者),其中主调服务支持选择全部命名空间和全部服务。您可按需选择。

路由策略支持配置多条,按顺序进行匹配。可拖动调整顺序。若规则全未匹配上,则请求拒绝。
流量匹配策略,非必选。
流量参数位置支持:请求头(Header)、请求Cookie、请求参数(Query)、方法(Method)、主调IP、路径(Path)、自定义。
逻辑关系支持:等于、不等于、包含、不包含、正则表达式、范围表达式。
流量无差别,按百分比进行灰度的场景下,删除流量匹配策略即可。
实例分组权重:
相同优先级下,实例分组权重加和为100。
流量百分比场景下,可为不同实例分组配置不同流量百分比。如下图所示,为灰度版本分配10%的流量,90%的流量路由至基线版本。

是否隔离:隔离通常用于现网故障或者上线验证场景,先手动摘除,待故障恢复或者验证通过后解除隔离。
优先级:优先级常用于容灾场景,高优先级实例故障后,路由至次优先级实例。
4. 单击提交,完成新建规则。

步骤2:客户端开发添加相关逻辑

根据您对应的接入方式查看开发文档下动态路由相关的篇章,以使用 Spring Cloud 接入为例,可参见文档 Spring Cloud 应用开发 > 动态路由