服务路由规则

服务路由

条件路由

使用模式与 条件路由文档 中的模式类似,但配置格式略有不同,以下是条件路由规则示例。

基于以下示例规则,所有 org.apache.dubbo.sample.tri.Greeter 服务 greet 方法的调用都将被转发到有 port=8888 标记的地址子集

  1. configVersion: v1.0
  2. scope: "service"
  3. force: false
  4. enabled: true
  5. key: "org.apache.dubbo.sample.tri.Greeter"
  6. conditions:
  7. - method=greet => port=8888

注:
dubbo rust目前还没有实现对于应用粒度的区分,无法区分服务来自哪个应用
因此对于标签路由和条件路由,都仅能配置一条应用级别的配置
对于应用级别的配置,默认key指定为application,此配置将对全部服务生效
例如:

  1. configVersion: v1.0
  2. scope: "application"
  3. force: false
  4. enabled: true
  5. key: application
  6. conditions:
  7. - ip=127.0.0.1 => port=8000~8888

匹配/过滤条件

参数支持

  • 服务调用上下文,如:service_name, method等
  • URL 本身的字段,如:location, ip, port等
  • URL params中存储的字段信息

条件支持

  • 等号 = 表示 “匹配”,如:method = getComment
  • 不等号 != 表示 “不匹配”,如:method != getComment

值支持

  • 以逗号 , 分隔多个值,如:ip != 10.20.153.10,10.20.153.11
  • 以星号 * 结尾,表示通配,如:ip != 10.20.*
  • 整数值范围,如:port = 80~8080

标签路由

使用模式与 标签路由文档中的模式类似,但配置格式略有不同,以下是标签路由规则示例

  1. configVersion: v1.0
  2. force: false
  3. enabled: true
  4. key: application
  5. tags:
  6. - name: local
  7. match:
  8. - key: ip
  9. value: 127.0.0.1

在此配置中,所有ip=127.0.0.1的服务提供者/消费者均会被打上local的标签

动态配置

动态下发配置 简介

动态下发配置使用 Nacos 作为配置中心实现,需要在项目的 application.yaml 配置文件中对 Nacos 进行配置,若不进行配置则使用本地路由配置。

使用方式:

  1. nacos:
  2. addr: "127.0.0.1:8848"
  3. namespace: "namespace-name"
  4. app: "app-name"
  5. enable_auth:
  6. auth_username: username
  7. auth_password: password

app:路由配置项在Nacos中所处的app namespace:配置信息在Nacos所处的namespace addr:Nacos服务地址 enable_auth:可选配置项,若启用了Nacos的认证功能,则需要配置此项,auth_username对应帐号,auth_password对应密钥

配置条件路由

在nacos中创建条件路由配置项时, app和namespace为配置nacos时所填写的信息; group:固定为condition; name:需要和 服务名称 保持一致;

配置标签路由

在nacos中创建标签路由配置项时,

app:配置nacos时所填写的app; namespace:配置nacos时所填写的namespace; group:固定为tag; name:固定为application;

注意事项

dubbo rust目前还没有实现对于应用的区分,无法区分服务来自哪个应用; 故对于应用级别的配置项,默认对所有服务生效 因此对于标签路由和条件路由,都仅能配置一条应用级别的配置,配置名称(name)指定为application

例:

nacos-example.png

对应的配置项:

服务级别的条件路由配置:

  1. configVersion: v1.0
  2. scope: "service"
  3. force: false
  4. enabled: true
  5. key: "org.apache.dubbo.sample.tri.Greeter"
  6. conditions:
  7. - method=greet => ip=127.*

标签路由配置:

  1. configVersion: v1.0
  2. force: true
  3. enabled: true
  4. key: shop-detail
  5. tags:
  6. - name: local
  7. match:
  8. - key: ip
  9. value: 127.0.0.1

应用级别的条件路由配置:

  1. configVersion: v1.0
  2. scope: "application"
  3. force: false
  4. enabled: true
  5. key: application
  6. conditions:
  7. - ip=127.0.0.1 => port=8000~8888

最后修改 September 16, 2023: Add documentation for Dubbo-Rust (#2812) (aa68ca9aaa2)