Dubbo Proxy Route Configuration

Dubbo Proxy configuration overview.

config.filter.network.dubbo_proxy.v2alpha1.RouteConfiguration

[config.filter.network.dubbo_proxy.v2alpha1.RouteConfiguration proto]

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

(string) The name of the route configuration. Reserved for future use in asynchronous route discovery.

interface

(string) The interface name of the service.

group

(string) Which group does the interface belong to.

version

(string) The version number of the interface.

routes

(config.filter.network.dubbo_proxy.v2alpha1.Route) The list of routes that will be matched, in order, against incoming requests. The first route that matches will be used.

config.filter.network.dubbo_proxy.v2alpha1.Route

[config.filter.network.dubbo_proxy.v2alpha1.Route proto]

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

(config.filter.network.dubbo_proxy.v2alpha1.RouteMatch, REQUIRED) Route matching parameters.

route

(config.filter.network.dubbo_proxy.v2alpha1.RouteAction, REQUIRED) Route request to some upstream cluster.

config.filter.network.dubbo_proxy.v2alpha1.RouteMatch

[config.filter.network.dubbo_proxy.v2alpha1.RouteMatch proto]

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

(config.filter.network.dubbo_proxy.v2alpha1.MethodMatch) Method level routing matching.

headers

(route.HeaderMatcher) Specifies a set of headers that the route should match on. The router will check the request’s headers against all the specified headers in the route config. A match will happen if all the headers in the route are present in the request with the same values (or based on presence if the value field is not in the config).

config.filter.network.dubbo_proxy.v2alpha1.RouteAction

[config.filter.network.dubbo_proxy.v2alpha1.RouteAction proto]

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

(string) Indicates the upstream cluster to which the request should be routed.

Precisely one of cluster, weighted_clusters must be set.

weighted_clusters

(route.WeightedCluster) Multiple upstream clusters can be specified for a given route. The request is routed to one of the upstream clusters based on weights assigned to each cluster. Currently ClusterWeight only supports the name and weight fields.

Precisely one of cluster, weighted_clusters must be set.

config.filter.network.dubbo_proxy.v2alpha1.MethodMatch

[config.filter.network.dubbo_proxy.v2alpha1.MethodMatch proto]

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

(type.matcher.StringMatcher) The name of the method.

params_match

(map<uint32, config.filter.network.dubbo_proxy.v2alpha1.MethodMatch.ParameterMatchSpecifier>) Method parameter definition. The key is the parameter index, starting from 0. The value is the parameter matching type.

config.filter.network.dubbo_proxy.v2alpha1.MethodMatch.ParameterMatchSpecifier

[config.filter.network.dubbo_proxy.v2alpha1.MethodMatch.ParameterMatchSpecifier proto]

The parameter matching type.

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

(string) If specified, header match will be performed based on the value of the header.

Only one of exact_match, range_match may be set.

range_match

(type.Int64Range) If specified, header match will be performed based on range. The rule will match if the request header value is within this range. The entire request header value must represent an integer in base 10 notation: consisting of an optional plus or minus sign followed by a sequence of digits. The rule will not match if the header value does not represent an integer. Match will fail for empty values, floating point numbers or if only a subsequence of the header value is an integer.

Examples:

  • For range [-10,0), route will match for header value -1, but not for 0, “somestring”, 10.9, “-1somestring”

Only one of exact_match, range_match may be set.