当服务消费者面临多个服务提供者时,需要通过路由规则来确定具体的服务提供者。服务路由功能提供了灵活的路由功能,允许您定义多条服务路由规则,可以帮助您解决多个场景下的难题。
功能简介
服务路由多用于线下测试连调、蓝绿发布、灰度引流场景,将因版本升级造成的问题影响降到最低。
线下测试联调
线下测试时,可能会缺少相应环境。您可以将测试应用注册到线上,然后开启路由规则,在本地进行测试。
蓝绿发布
蓝绿发布时,您可以通过路由规则将流量切换到绿组,以测试新版本应用是否正常。
灰度引流
灰度发布时,您可以通过路由规则将流量引导到灰度发布的应用版本上,测试灰度发布的版本是否正常。
当前版本仅支持 SOFA 和 Dubbo 服务的路由,暂不支持 Spring Cloud 服务的路由。
配置的路由规则实际在服务消费方(即客户端)生效,通过界面上的配置来过滤服务提供方,目前主要有 RPC-Client(经典微服务生效)和 MOSN(服务网格生效)两种执行实体。
在部署服务提供方时,您可以在机器上加固定格式的标签,比如 LABEL=A。路由规则生效流程如下图所示:
添加路由规则
登录 SOFAStack 控制台。
在左侧菜单栏选择 中间件 > 微服务平台 > 微服务 > 服务治理,然后单击 服务路由 页签。
单击 添加路由组规则,然后配置以下参数:
区域
参数
说明
基本信息
规则组名称
配置路由规则组名称。
服务方应用名
配置服务端的应用名称。
服务
配置应用包含的服务。
单击 切换输入模式 可在手动填写与下拉选择之间切换。
规则属性
规则名称
配置路由规则名称。
优先级
配置路由的优先级,数字越大优先级越高。
同时存在多条路由时,按照路由优先级大小进行匹配。
规则开关
配置是否开启该条路由规则。默认开启。
分流开关
当流量目的地分组没有服务实例时,是否转发到其他分组。
开启后,流量在高权重分组中未匹配到服务实例,会继续去匹配其他分组。
关闭后,流量不会匹配其他分组。
降级开关
当整条规则都匹配不到服务实例时,是否继续匹配其他规则。
开启后,流量未在当前规则中匹配到服务实例时,会继续去匹配优先级更低的路由规则。
关闭后,流量不会匹配其他路由规则。
流量精确匹配(可选)
通过流量匹配条件来过滤需要执行路由规则的请求,满足这些条件的流量才会使用这条规则,不满足这条规则的就走降级开关逻辑,往低优先级的路由规则去匹配。不填表示匹配所有流量。
多个条件按照顺序执行,直到被某一个规则被拦截或全部通过。规则主要包括下述内容:
字段:包括系统字段、请求头、链路。
字段名:根据字段类型有不同的值。
系统字段:包括流量类型、调用方应用名、调用方 IP、服务方应用名。
请求头:请求头是指协议的请求头,比如 Dubbo 协议取的是 attachment,HTTP 协议取的是 Request Header。用户可以在应用系统中自定义请求头参数和值。
链路:即 Trace 信息,通过代码里配置文件获取。
选择逻辑:包括等于、不等于、属于、不属于、正则。
字段值:字段名对应的值。
流量目的地
权重
设置当前流量目的地分组的权重,多个流量目的地的权重之和为 100%。
您可以单击最下方的 添加 按钮,配置多个流量目的地分组。
服务实例分组条件
配置服务实例分组条件,多个条件之间是“与”的关系。
字段名:可从下拉列表选择,或者自定义输入。
逻辑:等于。
字段值:配置字段名对应的值。
您可以单击下方的 添加 按钮,配置多个分组条件。
单击 提交。
在服务路由列表中,将刚创建的路由规则的状态改为 开启。
您可以添加多条路由规则,相同应用名称的路由规则会被合并。
编辑路由规则
您可以随时编辑已创建的路由规则,规则提交后实时生效。
在 服务路由 页签,单击目标应用左侧的加号(+)。
单击目标路由规则右侧的 编辑。
按需求编辑路由规则后,单击 提交。
删除路由规则
您可以删除已创建的路由规则,删除规则会实时生效,请谨慎操作。
在 服务路由 页签,单击目标应用左侧的加号(+)。
单击目标路由规则右侧的 删除。
单击 确定。