Dubbo 代理路由配置 (proto)

Dubbo 代理 配置概述.

extensions.filters.network.dubbo_proxy.v3.RouteConfiguration

[extensions.filters.network.dubbo_proxy.v3.RouteConfiguration proto]

{
  "name": ...,
  "interface": ...,
  "group": ...,
  "version": ...,
  "routes": []
}
name

(string) 路由配置的名称。为将来在异步路由发现中使用而保留。

interface

(string) 服务的接口名称。支持后缀或前缀形式的通配符接口。例如 *.methods.add 将匹配 com.dev.methods.addcom.prod.methods.add 等。 com.dev.methods.* 将匹配 com.dev.methods.addcom.dev.methods.update 等。特殊通配符 * 匹配任何接口。

注意

通配符将不会匹配空字符串。例如 *.methods.add 将匹配 com.dev.methods.add 但不会匹配 .methods.add

group

(string) 接口所属的组。

version

(string) 接口的版本号。

routes

(repeated extensions.filters.network.dubbo_proxy.v3.Route) 将按照顺序与传入请求匹配的路由列表。第一个匹配的路由将被使用。

extensions.filters.network.dubbo_proxy.v3.Route

[extensions.filters.network.dubbo_proxy.v3.Route proto]

{
  "match": {...},
  "route": {...}
}
match

(extensions.filters.network.dubbo_proxy.v3.RouteMatch, REQUIRED) 路由匹配参数。

route

(extensions.filters.network.dubbo_proxy.v3.RouteAction, REQUIRED) 将请求路由到某个上游集群。

extensions.filters.network.dubbo_proxy.v3.RouteMatch

[extensions.filters.network.dubbo_proxy.v3.RouteMatch proto]

{
  "method": {...},
  "headers": []
}
method

(extensions.filters.network.dubbo_proxy.v3.MethodMatch) 方法级路由匹配。

headers

(repeated config.route.v3.HeaderMatcher) 指定路由应匹配的一组报头。路由器将根据路由配置中指定的所有报头检查请求的报头。如果路由中的所有报头都存在于请求中且具有相同的值(或者如果配置中没有值字段,则基于存在),则会发生匹配。

extensions.filters.network.dubbo_proxy.v3.RouteAction

[extensions.filters.network.dubbo_proxy.v3.RouteAction proto]

{
  "cluster": ...,
  "weighted_clusters": {...},
  "metadata_match": {...}
}
cluster

(string) 指示应将请求路由到的上游集群。

必须准确设置一个 clusterweighted_clusters

weighted_clusters

(config.route.v3.WeightedCluster) 可以为给定的路由指定多个上游集群。根据分配给每个集群的权重将请求路由到其中一个上游集群。目前 ClusterWeight 只支持 name 和 weight 字段。

必须准确设置一个 clusterweighted_clusters

metadata_match

(config.core.v3.Metadata) 子集负载均衡器使用的可选端点元数据匹配条件。仅在上游集群中与该字段中设置的内容匹配的元数据的端点将被视为负载均衡。过滤器名称应指定为 envoy.lb

extensions.filters.network.dubbo_proxy.v3.MethodMatch

[extensions.filters.network.dubbo_proxy.v3.MethodMatch proto]

{
  "name": {...},
  "params_match": {...}
}
name

(type.matcher.v3.StringMatcher) 方法的名称。

params_match

(repeated map<uint32, extensions.filters.network.dubbo_proxy.v3.MethodMatch.ParameterMatchSpecifier>) 方法参数定义。键是参数索引,从 0 开始。值是参数匹配类型。

extensions.filters.network.dubbo_proxy.v3.MethodMatch.ParameterMatchSpecifier

[extensions.filters.network.dubbo_proxy.v3.MethodMatch.ParameterMatchSpecifier proto]

参数匹配类型。

{
  "exact_match": ...,
  "range_match": {...}
}
exact_match

(string) 如果指定,报头匹配将根据报头的值执行。

只能设置一个 exact_matchrange_match

range_match

(type.v3.Int64Range) 如果指定,报头匹配将根据范围执行。如果请求报头值在此范围内,则规则将匹配。整个请求报头值必须以基数 10 表示一个整数:由一个可选的加号或减号后跟一系列数字组成。如果报头值不表示整数,则规则将不匹配。对于空值、浮点数或仅报头值的子序列是整数的情况,匹配将失败。

示例

  • 对于范围 [-10,0),路由将匹配报头值为 -1,但不会匹配 0、“somestring”、“10.9”、“-1somestring”

只能设置一个 exact_matchrange_match

extensions.filters.network.dubbo_proxy.v3.MultipleRouteConfiguration

[extensions.filters.network.dubbo_proxy.v3.MultipleRouteConfiguration proto]

{
  "name": ...,
  "route_config": []
}
name

(string) 命名路由配置的名称。此名称在异步路由发现中使用。

route_config

(repeated extensions.filters.network.dubbo_proxy.v3.RouteConfiguration) Dubbo 连接管理器的路由表。