Skip to content

Spring Cloud Tencent Router 使用文档

lepdou edited this page Jul 25, 2022 · 26 revisions

模块简介

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

  • 阶段一:从全量服务地址中根据路由规则选取一批目标服务地址
  • 阶段二:从阶段一选取的一批目标服务地址中,再根据负载均衡算法挑选一个实例
image

需要明确一下概念:

  • 服务路由 :根据路由规则从全量实例列表中,挑选一部分实例
  • 负载均衡 :根据负载均衡算法,从一批实例中挑选一个实例

服务路由具有广泛的使用场景,例如金丝雀发布、灰度发布、蓝绿发布、按机房收敛流量等。

Spring Cloud Hoxton 版本之前,Spring Cloud Netflix Ribbon 提供了负载均衡能力,不具备服务路由的能力。 Spring Cloud Tencent Router 则扩展了路由能力。Spring Cloud Tencent Router 集成了 Polaris 的路由功能,提供了开箱即用的路由能力。

服务路由实现原理

服务路由实现的原理非常简单,从注册中心获取全量的健康的服务实例列表,再经过一系列的 RouterFilter 插件过滤出满足条件的实例列表。不同的服务路由类型即是其中一个 RouterFilter 实现,用户也可以自定义 RouterFilter 以实现自身特殊的服务路由场景。

image

使用服务路由

目前 Spring Cloud Tencent Router 内置了三种服务路由能力,每种服务路由能力请参考对应的文档:

在使用每种类型的服务路由之前,需要参考 服务路由基础 引入 Router 的依赖以及填写相关的配置以开启服务路由能力。

在 1.6.0(包含)版本之后,Spring Cloud Gateway 也支持了以上三种路由能力。

调整负载均衡策略

Hoxton 版本

Hoxton 版本由于服务路由是在 Ribbon 的 IRule 上做的扩展以实现服务路由的能力,所以破坏了原有的负载均衡策略模型(通过注入相应的 LoadBalancer Bean)。Spring Cloud Tencent 提供了另外一种通过配置(spring.cloud.polaris.loadbalancer.strategy)的方式来达到调整负载均衡策略的方式。可设置的值为:

负载均衡策略
random 随机算法
roundRobin 轮询算法
polarisWeighted 北极星权重算法,通过北极星页面调整权重生效的前提是负载均衡算法是 polarisWeighted
responseTimeWeighted 响应时间权重算法
bestAvailable 并发量最小算法
Clone this wiki locally