动态路由

在快速开始文档中,已经简要展示了动态路由功能。要使用动态路由功能,一个重要的前提条件是提供者的元数据中存在可区分不同提供者的信息。您可以参考配置服务元数据来为应用打标。

配置 DRM 数据源

使用 DRM 作为服务配置的数据源与引入 DRM 作为应用的动态配置是不一样的,它需要引入以下依赖来开启:

<dependency>
    <groupId>com.alipay.cloud</groupId>
    <artifactId>sofa-service-governance-datasource-drm</artifactId>
</dependency>
  • 如果您的应用中同时引入了 DRM 服务配置数据源和 DRM 应用动态配置,那么它们不会重复引入 DRM 客户端,只是标记 DRM 的不同用途。

  • DRM 数据源只需要配置 SOFA 的公共配置即可生效。

当您引入了 DRM 服务配置数据源的依赖,自动装配就会默认启用对 DRM 的配置订阅。但如果您想关闭 DRM 数据源,您可以在application.properties文件中进行如下配置:

spring.cloud.sofa.service.ds.drm.enabled=false

配置 Nacos 数据源

如果您需要使用 Nacos 作为数据源,您的工程中需要引入 Nacos 服务配置数据源。

<dependency>
    <groupId>com.alipay.cloud</groupId>
    <artifactId>sofa-service-governance-datasource-nacos</artifactId>
</dependency>

建议您引入 Spring Cloud Alibaba 的 dependencies pom 来选取符合您运行环境的 Nacos 客户端版本。

application.properties文件中,添加以下配置将 Nacos 作为 SOFA 动态路由的数据源:

配置项

说明

com.alipay.sofa.ms.service.ds.nacos.serverAddr

Nacos 服务器地址列表,比 Endpoint 优先级高

com.alipay.sofa.ms.service.ds.nacos.username

如果开启鉴权,此属性设置用户名。

com.alipay.sofa.ms.service.ds.nacos.password

如果开启鉴权,此属性设置密码。

com.alipay.sofa.ms.service.ds.nacos.endpoint

Nacos 服务器连接点,详情请参见 Nacos 环境隔离

com.alipay.sofa.ms.service.ds.nacos.namespace

Nacos 服务器连接点端口,详情请参见 Nacos 环境隔离

com.alipay.sofa.ms.service.ds.nacos.accessKey

Nacos 服务器连接点 AccessKey。

com.alipay.sofa.ms.service.ds.nacos.secretKey

Nacos 服务器连接点 Secret Key

com.alipay.sofa.ms.service.ds.nacos.timeout

从 Nacos 读取配置的超时时间,默认为 3 秒。

com.alipay.sofa.ms.service.ds.nacos.order

Nacos 数据源的优先级,默认为 100。序号越小,数据源优先级越高。

重要

上述配置中,com.alipay.sofa.ms.service.ds.nacos.serverAddrcom.alipay.sofa.ms.service.ds.nacos.endpoint至少要配置其中一个,才会将 Nacos 视为有效数据源,请正确配置连接信息。

配置迁移

如果您需要将动态服务路由的配置从 Nacos 迁移到 DRM,您可以同时配置 DRM 和 Nacos 数据源,两种数据源会同时启用,方便您进行数据迁移。

在应用初次加载路由规则时,如果 DRM 和 Nacos 同时存在且有相同服务或请求路径的路由规则,默认情况下 DRM 的配置优先级高于 Nacos 上的配置;如果是对这些重复的规则进行修改,则在哪个数据源上修改,哪边就生效,不区分优先级。

通过多数据源支持,您可以在应用运行期间进行配置迁移,通过 SOFA 微服务控制台的灰度下发能力实现灰度验证,也支持随时进行配置回滚。

如果您想将配置从 DRM 迁移到 Nacos,只需要调整这两个数据源的优先级即可。DRM 数据源的默认优先级为 0,Nacos 数据源的默认优先级为 100,序号越小,数据源优先级越高。因此,在不做任何设置的情况下,DRM 数据源优先级更高。您可以将 DRM 数据源的优先级调低,也可以将 Nacos 数据源的优先级调高。配置方式是在application.properties中配置如下参数:

# 调低 DRM 数据源优先级
spring.cloud.sofa.router.ds.drm.order=200
# 或者调高 Nacos 数据源优先级
spring.cloud.sofa.router.ds.nacos.order=-100

配置路由规则

当您使用了 Spring Cloud SOFA Registry 进行服务的发布和订阅,并使用了 Spring Cloud SOFA DRM 作为配置数据源,您可以使用 SOFA 微服务控制台进行路由规则的配置,详情请参见服务路由

关闭动态路由

如果您想关闭 SOFA 动态服务路由功能,您可以在application.properties文件中配置spring.cloud.sofa.router.gov.enabled值为false,即可关闭该功能。

spring.cloud.sofa.router.gov.enabled=false