全部产品

服务路由

当服务消费者面临多个服务提供者时,需要通过路由规则来确定具体的服务提供者。服务路由功能允许用户定义多条路由规则,提供了灵活的路由功能,可以帮助用户解决多个场景下的难题。

服务路由多用于灰度引流、蓝绿发布场景,把因版本升级造成的问题影响降到最小。

  • 线下测试联调问题。

  • 蓝绿发布问题。

  • 灰度引流问题。

说明

当前版本仅支持 SOFA 和 Dubbo 服务的路由,暂不支持 Spring Cloud 服务的路由。

配置的路由规则实际在服务消费方(即客户端)生效,通过界面上的配置来过滤服务提供方,目前主要有 RPC-Client(经典微服务生效)和 MOSN(服务网格生效)两种执行实体。

路由模型服务端在部署时,可以在机器上加固定格式的标签,比如 LABEL=A。

服务路由

路由规则生效流程图

路由规则生效图

前置条件

请确保 SOFABoot 版本在 3.3.3 及以上。有关 SOFABoot 的版本信息,详见 SOFABoot 版本说明

功能介绍

路由粒度

路由粒度有应用级路由服务级路由

  • 应用级路由:填写服务为 * , * 表示所有服务。

  • 服务级路由:选择需要生效路由规则的服务。

路由规则

可配置一条或多条路由规则,有多条路由规则的情况,先匹配优先级更高的路由规则。

  • 分流开关:当流量目的地分组没有服务实例,是否转发到其他分组。

  • 降级开关:当前规则没有匹配的服务实例时,是否继续匹配优先级低的规则。

  • 流量精确匹配:满足匹配条件的流量才会使用到这份路由规则配置,多条匹配条件是的关系。

    • 系统字段

      • 字段名支持调用方应用名、调用方IP。

      • 逻辑支持 等于、不等于、属于、不属于、正则表示式五种。

    • 请求头

      请求头是指协议的请求头,比如 Dubbo 协议取的是 attachment,HTTP 协议取的是 Request Header。用户可以在应用系统中自定义请求头参数和值。

流量目的地

匹配成功的数量,按权重转发到满足过滤条件的服务实例分组,可以配置多个流量目的地分组。

流量目的地分组:

  • 权重:多个分组权重之和要等于 100。

  • 服务实例分组条件

    可以配置多个分组条件,多个条件是与的关系,这是路由规则很核心的参数,表示流量要被路由到哪里去。

    • 字段名:系统自带字段,比如: app.kubernetes.io/version(表示版本号)。

    • 逻辑:等于。

    • 字段值:字段名对应的字段值。

      • 字段名对应的值,比如字段名选 app.kubernetes.io/version,此处填写版本号。

路由操作

SOFAStack 平台 > 中间件 > 微服务平台 > 服务网格 > 页面,单击 服务治理 标签,进入页面后选择 服务路由 标签,可以对路由规则进行查询、添加和编辑。

查询路由规则

根据下述内容,对路由规则进行模糊查询:

  • 应用名

  • 路由服务名

  • 路由规则名

添加路由规则

单击 添加路由规则,可配置相应的路由规则。示例如下:

服务路由路由规则说明如下:

配置项

配置明细

配置值

说明

基本信息

规则组名称

test

支持中文、英文、数字、下划线。

应用

dubbo-echo-server

可选择或填写服务端的应用名称。

服务

com.alipay.sofa.ms.service.HelloService@dubbo

可通过下述两种方式选择或填写所选应用下包含的服务。

  • 从下拉框选择。

  • 通过右侧的 切换输入模式,手动输入服务名称。该方式为兜底机制,适用于无法从下拉框中选择路由服务的场景。

规则属性

规则名称

v1版本路由

自行填写规则名称。

优先级

1

值越大优先级越高。

说明

多条路由规则,会匹配优先级大的规则。

规则开关

是否开启该条路由规则。添加规则后,在路由规则列表页,针对该条路由规则,会有一个总开关,只有总开关生效后,该条路由规则才会生效。

分流开关

下方填写多个流量分组时,流量往其中一个分组去匹配,没有匹配到服务端时往另一个分组去匹配。关闭则不会去另一个分组匹配。

降级开关

整条规则都匹配不到服务实例时,往优先级低的路由规则去匹配。

流量精确匹配

详情见 流量精确匹配信息①

优先匹配流量精确匹配,满足这个条件的才会使用这条规则。不满足这条规则的就走降级开关逻辑,往低优先级的路由规则去匹配。

流量目的地

权重(%)

100

流量目的地权重之和 100%。

服务实例分组条件

详情见 服务实例分组条件信息②

流量往版本号为V1.0.0.container 的实例方向。

流量精确匹配信息① 如下:

流量精确匹配:支持多条匹配条件的 操作。多个规则按照顺序执行,直到被某一个规则被拦截或全部通过。规则主要包括下述内容:

流量精确匹配
  • 字段:包括系统字段、请求头、链路。

  • 字段名:根据字段类型有不同的值。

    • 系统字段:包括流量类型、调用方应用名、调用方 IP、服务方应用名。

    • 请求头:请求头是指协议的请求头,比如 Dubbo 协议取的是 attachment,HTTP 协议取的是 Request Header。用户可以在应用系统中自定义请求头参数和值。

    • 链路:即 Trace 信息,通过代码里配置文件获取。

  • 选择逻辑:包括等于、不等于、属于、不属于、正则。

  • 字段值:字段名对应的值。

服务实例分组条件信息②

服务实例分组条件:可添加多个条件,各条件之间是 的关系,条件包括下述内容。

  • 字段名:可从下拉列表选择,或者自定义输入。

    • 下拉列表选择。

  • 逻辑:等于。

  • 字段值:字段名对应的值。

编辑路由规则

在服务路由页,单击页面下方路由规则列表左侧的(加号.png),可以进行下述操作:

  • 开启、关闭路由规则生效的状态。

  • 编辑路由规则:编辑正在生效的规则会实时生效。

  • 删除路由规则:删除正在生效的规则会实时生效。

管理路由规则.png