Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add multi level tag document #2775

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion content/zh-cn/overview/core-features/traffic/tag-rule.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,13 @@ weight: 2

本文要讲的就是标签路由规则就是 `动态规则打标`。

标签路由是一套严格隔离的流量体系,对于同一个应用而言,一旦打了标签则这部分地址子集就被隔离出来,只有带有对应标签的请求流量可以访问这个地址子集,这部分地址不再接收没有标签或者具有不同标签的流量。
标签路由是一套严格隔离的流量体系,对于同一个应用而言,一旦打了标签则这部分地址子集就被隔离出来,只有带有对应标签的请求流量可以访问这个地址子集,这部分地址不再接收没有标签或者具有不同标签的流量;此外,标签路由支持多层级(level1|level2),调用时会逐渐缩短层级匹配服务提供方

举个例子,如果我们将一个应用进行打标,打标后划分为 tag-a、tag-b、无 tag 三个地址子集,则访问这个应用的流量,要么路由到 tag-a (当请求上下文 dubbo.tag=tag-a),要么路由到 tag-b (dubbo.tag=tag-b),或者路由到无 tag 的地址子集 (dubbo.tag 未设置),不会出现混调的情况。

再举一个多层级的例子,有个beta环境,多个团队在使用,其中team1在开发大项目,小团队partner1在开发子功能,当请求上下文 (dubbo.tag=beta|team1|partner1)发起,会先优先路由到beta|team1|partner1,否则路由到beta|team1,否则否由到beta,最后如果没能匹配到任何层级的标签,只能路由到无 tag 的地址子集。


标签路由的作用域是提供者应用,消费者应用无需配置标签路由规则。一个提供者应用内的所有服务只能有一条分组规则,不会有服务 A 使用一条路由规则、服务 B 使用另一条路由规则的情况出现。以下条件路由示例,在 `shop-detail` 应用中圈出了一个隔离环境 `gray`,`gray` 环境包含所有带有 `env=gray` 标识的机器实例。

```yaml
Expand Down