您可以通过虚拟服务管理Dubbo服务的流量。本文介绍Dubbo服务的虚拟服务涉及的参数。

虚拟服务示例

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: demoservice0
spec:
  hosts:
  - providers:com.alibaba.edas.DemoService0
  dubbo:
  - routes:
    - match:
      - method:
          name_match:
            exact: "sayHello"
          argc: 1
          args:
          - index: 1
            strValue:
              patterns:
              - exact: "jack"
            type: java.lang.String
      route:
      - destination:
          subset: v1
        weight: 100
    - match:
      - method:
          name_match:
           exact: "sayHello"
          argc: 1
          args:
          - index: 1
            strValue:
              patterns:
              - exact: "lily"
            type: java.lang.String
       headers:
         app:
          patterns:
            - exact: "consumer1"
      route:
      - destination:
          subset: v2
        weight: 100
    services:
    - prefix: providers:com.alibaba.edas.DemoService0

DubboServiceRoute

DubboServiceRoute是转发Dubbo请求时的路由规则。

参数 类型 描述 是否必填
services StringMatch[] 对哪些Dubbo服务生效, 建议按一个应用一个VirtualService配置。
routes DubboRoute[] 路由目标,为一个DubboRouteDestination类型的数组,表示满足条件的流量目标。

DubboRoute

DubboRoute是Dubbo请求匹配具体服务时的路由规则。

参数 类型 描述 是否必填
match DubboMatchRequest[] 条件字段match,为一个DubboMatchRequest类型的数组,表示Dubbo请求满足的条件。
route DubboRouteDestination[] 路由目标,为一个DubboRouteDestination类型的数组,表示满足条件的流量目标。

DubboMatchRequest

DubboMatchRequest用于匹配请求。

参数 类型 描述 是否必填
method DubboMethodMatch 匹配请求中的调用方法名和参数。
headers map<string, ListStringMatch> 匹配请求中的header。

ListStringMatch

ListStringMatch用于匹配请求头中给定字段的参数值。
说明 区分大小写。
参数 类型 描述 是否必填
patterns StringMatch[] 表达式集合,需要满足StringMatch描述的匹配条件。
action String
  • In:表示patterns描述的StringMatch,满足一个即可。默认为In。
  • NotIn:需要与patterns描述的StringMatch都不匹配。
headers:
  app:
    patterns:
    - exact: "ump2"
  key:
    patterns:
    - prefix: "value"
    - exact: "specific-value"
    action: In
  exceptkey:
    patterns:
    - prefix: "notexist"
    action: NotIn

DubboMethodMatch

参数 类型 描述 是否必填
name String 匹配名称。
name_match StringMatch 匹配请求中的调用方法名。
argc Uint32 匹配请求的参数个数。
args DubboMethodArg[] 为DubboMethodArg类型的数组,表示每个参数值需要满足的条件。

DubboMethodArg

DubboMethodArg用于匹配请求中的调用参数。

参数 类型 描述 是否必填
index Uint32 匹配参数的位置,index字段从1开始(即第$index个参数)。
type String 匹配参数的类型,以Java的string类型为例,该字段取值java.lang.String,该字段默认为java.lang.String。
str_value ListStringMatch 匹配参数的值,根据$type进行解析ListStringMatcher匹配 java.lang.String。
num_value ListDoubleMatch 匹配参数的值,根据$type进行解析ListDoubleMatcher匹配 java.lang.Double/java.lang.Long/java.lang.Integer。
bool_value ListBoolMatch 匹配参数的值,根据$type进行解析ListBoolMatcher匹配 java.lang.Boolean。