服务路由

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

功能简介

服务路由多用于线下测试连调、蓝绿发布、灰度引流场景,将因版本升级造成的问题影响降到最低。

  • 线下测试联调

    线下测试时,可能会缺少相应环境。您可以将测试应用注册到线上,然后开启路由规则,在本地进行测试。

  • 蓝绿发布

    蓝绿发布时,您可以通过路由规则将流量切换到绿组,以测试新版本应用是否正常。

  • 灰度引流

    灰度发布时,您可以通过路由规则将流量引导到灰度发布的应用版本上,测试灰度发布的版本是否正常。

说明

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

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

在部署服务提供方时,您可以在机器上加固定格式的标签,比如 LABEL=A。mv 路由规则生效流程如下图所示:版本号

添加路由规则

  1. 登录 SOFAStack 控制台

  2. 在左侧菜单栏选择 中间件 > 微服务平台 > 微服务 > 服务治理,然后单击 服务路由 页签

  3. 单击 添加路由规则,然后配置以下参数:

    区域

    参数

    说明

    基本信息

    规则组名称

    配置路由规则组名称。

    应用

    配置服务端的应用名称。

    服务

    配置应用包含的服务。

    单击 切换输入模式 可在手动填写与下拉选择之间切换。

    规则属性

    规则名称

    配置路由规则名称。

    优先级

    配置路由的优先级,数字越大优先级越高。

    同时存在多条路由时,按照路由优先级大小进行匹配。

    规则开关

    配置是否开启该条路由规则。默认开启。

    分流开关

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

    • 开启后,流量在高权重分组中未匹配到服务实例,会继续去匹配其他分组。

    • 关闭后,流量不会匹配其他分组。

    降级开关

    当整条规则都匹配不到服务实例时,是否继续匹配其他规则。

    • 开启后,流量未在当前规则中匹配到服务实例时,会继续去匹配优先级更低的路由规则。

    • 关闭后,流量不会匹配其他路由规则。

    流量精确匹配(可选)

    通过流量匹配条件来过滤需要执行路由规则的请求,满足这些条件的流量才会使用这条规则,不满足这条规则的就走降级开关逻辑,往低优先级的路由规则去匹配。不填表示匹配所有流量。

    多个条件按照顺序执行,直到被某一个规则被拦截或全部通过。规则主要包括下述内容:

    • 字段:包括系统字段、请求头、链路

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

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

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

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

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

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

    流量目的地

    权重

    设置当前流量目的地分组的权重,多个流量目的地的权重之和为 100%。

    您可以单击最下方的 添加 按钮,配置多个流量目的地分组。

    服务实例分组条件

    配置服务实例分组条件,多个条件之间是“与”的关系。

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

    • 逻辑:等于。

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

    您可以单击下方的 添加 按钮,配置多个分组条件。

  4. 单击 提交

  5. 在服务路由列表中,将刚创建的路由规则的状态改为 开启

重要

您可以添加多条路由规则,相同应用名称的路由规则会被合并。

编辑路由规则

您可以随时编辑已创建的路由规则,规则提交后实时生效。

  1. 服务路由 页签,单击目标应用左侧的加号(+)。

  2. 单击目标路由规则右侧的 编辑

  3. 按需求编辑路由规则后,单击 提交

删除路由规则

您可以删除已创建的路由规则,删除规则会实时生效,请谨慎操作。

  1. 服务路由 页签,单击目标应用左侧的加号(+)。

  2. 单击目标路由规则右侧的 删除

  3. 单击 确定