You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2021/06/17 09:59:20 UTC

[dubbo-website] branch master updated: docs: Supplement the documentation related traffic management and routing rule (#829)

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git


The following commit(s) were added to refs/heads/master by this push:
     new c1a13c3  docs: Supplement the documentation related traffic management and routing rule (#829)
c1a13c3 is described below

commit c1a13c32876a402c6a3d448fd28e4fcf59c80754
Author: Xiong, Pin <pi...@foxmail.com>
AuthorDate: Thu Jun 17 04:59:11 2021 -0500

    docs: Supplement the documentation related traffic management and routing rule (#829)
    
    1. introduce what traffic management
    2. improve routing rule's description partly
    3. adjust the structure of traffic managememt and routing rule
---
 .../zh/docs/v3.0/concepts/traffic-management.md    |  25 +-
 content/zh/docs/v3.0/examples/routing-rule.md      | 944 ---------------------
 content/zh/docs/v3.0/examples/routing/_index.md    |   7 +
 .../v3.0/examples/routing/ab-testing-deployment.md |  19 +
 .../v3.0/examples/routing/blue-green-deployment.md |  19 +
 .../v3.0/examples/routing/canary-deployment.md     |  20 +
 .../v3.0/examples/routing/demo-rule-deployment.md  | 349 ++++++++
 .../examples/routing/dynamic-rule-deployment.md    |  78 ++
 .../examples/routing/weight-rule-deployment.md     |  48 ++
 content/zh/docs/v3.0/references/routers/_index.md  | 265 +++++-
 .../v3.0/references/routers/destination-rule.md    |  94 ++
 .../zh/docs/v3.0/references/routers/routerule.md   | 944 ---------------------
 .../docs/v3.0/references/routers/virtualservice.md | 481 +++++++++++
 .../imgs/v3/concepts/what-is-traffic-control.png   | Bin 0 -> 307011 bytes
 14 files changed, 1402 insertions(+), 1891 deletions(-)

diff --git a/content/zh/docs/v3.0/concepts/traffic-management.md b/content/zh/docs/v3.0/concepts/traffic-management.md
index 5ccff84..3921b6d 100644
--- a/content/zh/docs/v3.0/concepts/traffic-management.md
+++ b/content/zh/docs/v3.0/concepts/traffic-management.md
@@ -6,4 +6,27 @@ weight: 3
 description: "通过 Dubbo 定义的路由规则,实现对流量分布的控制"
 ---
 
-流量控制
\ No newline at end of file
+### 流量管理
+
+`Dubbo`提供了强大的流量管理能力。流量管理的本质是将请求根据制定好的路由规则分发到应用服务上,如下图所示:
+
+![What is traffic control](/imgs/v3/concepts/what-is-traffic-control.png)
+
+其中:
++ 路由规则可以有多个,不同的路由规则之间存在优先级。如:Router(1) -> Router(2) -> …… -> Router(n)
++ 一个路由规则可以路由到多个不同的应用服务。如:Router(2)即可以路由到Service(1)也可以路由到Service(2)
++ 多个不同的路由规则可以路由到同一个应用服务。如:Router(1)和Router(2)都可以路由到Service(2)
++ 路由规则也可以不路由到任何应用服务。如:Router(m)没有路由到任何一个Service上,所有命中Router(m)的请求都会因为没有对应的应用服务处理而导致报错
++ 应用服务可以是单个的实例,也可以是一个应用集群。
+
+### 应用场景
+`Dubbo`支持生产上常用的流量应用场景。
+
+##### 蓝绿部署
+蓝绿部署是让线上的老版本继续运行,直接部署新版本然后进行测试,当新版本测试通过以后,将流量切到新版本,最后将老版本同时也升级到新版本。整个过程无需停机,风险较小且可控。
+
+##### AB测试
+AB测试是用来测试应用功能的一种方案。通过科学的实验设计、样本采样、流量分割和校验等方式来获得具有代表性的实验结论,并确信该结论再推广到全部流量可信。
+
+##### 金丝雀部署
+金丝雀部署是在原有版本可用的情况下,同时部署一个新版本应用作为“金丝雀”,测试新版本的性能和表现,在保障整体系统稳定的前提下,尽早发现、及时调整。
\ No newline at end of file
diff --git a/content/zh/docs/v3.0/examples/routing-rule.md b/content/zh/docs/v3.0/examples/routing-rule.md
deleted file mode 100644
index 65da3c5..0000000
--- a/content/zh/docs/v3.0/examples/routing-rule.md
+++ /dev/null
@@ -1,944 +0,0 @@
----
-type: docs
-title: "路由规则"
-linkTitle: "路由规则"
-weight: 12
-description: "使用路由规则管控服务流量。"
----
-
-### 基本思想:基于路由链,采用 Pipeline 的处理方式
-
-![route-rule1.png](/imgs/user/route-rule1.png)
-
-
-可以把路由链的逻辑简单的理解为 target = rn(...r3(r2(r1(src))))。对于每一个 router 内部的逻辑,可以抽象为输入地址 addrs-in 与 router 中按全量地址 addrs-all 实现切分好的 n 个互不相交的地址池 addrs-pool-1 ... addrs-pool-n 按实现定义好的规则取交集作为输出 addrs-out。以此类推,完成整个路由链的计算。
-
-![route-rule2.png](/imgs/user/route-rule2.png)
-
-另外一方面,如果 router(n) 需要执行 fallback 逻辑的时候,那么需要经过 router(n) 就应该决定好 fallback 逻辑
-
-
-### fallback 处理原则
-
-由于多个 router 之间多个条件组件之后,很容易出现地址被筛选为空的情况,那么我们需要针对这情况进行 fallback 处理,保证业务在正确性的前提下,能够顺利找到有效地址。
-
-首先我们看一下以下规则
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo-route
-spec:
-  hosts:
-  - demo  // 统一定义为应用名 
-  dubbo:
-    - service:
-      - exact: com.taobao.hsf.demoService:1.0.0
-      - exact: com.taobao.hsf.demoService:2.0.0
-      routedetail:
-       - name: sayHello-String-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "sayHello"
-               .....
-             argp:
-              - string
-         route:
-          - destination:
-              host: demo
-              subset: v1
-            fallback:
-              destination:
-                host: demo
-                subset: v2
-              fallback:
-                destination:
-                  host: demo
-                  subset: v3
-
-       - name: sayHello-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "s-method"
-         route:
-          - destination:
-             host: demo
-             subset: v2
-            fallback:
-              destination:
-                host: demo
-                subset: v3
-
-       - name: interface-route 
-         route:
-          - destination: 
-            host: demo
-            subset: v3
-
-    - service:
-      
-      ....
----
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: demo-route
-spec:
-  host: demo
-  subsets:
-    - name: v1
-      labels:
-        sigma.ali/mg: v1-host
-
-    - name: v2
-      labels:
-        sigma.ali/mg: v2-host
-
-    - name: v3
-      labels:
-        sigma.ali/mg: v3-host
-
-```
-
-我们以脚本路由为例,这个脚本路由的匹配条件是遵循一个原则的,就是匹配的范围是从精确到广泛的一个过程,在这个示例来说,就是 sayHello(string)参数 -> sayHello 方法 -> 接口级路由 的一个匹配查找过程。
-
-那么如果我们已经满足某个条件,但是选到的 subset 地址为空,我们将如何进行 fallback 处理呢?
-
-以匹配 sayHello(string)参数 条件为例,我们选择到的是 v1 subset,如果是空,我们可以向上一级是寻找地址,也就是方法级去寻找地址,具体的配置为下
-
-```
-       - name: sayHello-String-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "sayHello"
-               .....
-             argp:
-              - string
-         route:
-          - destination:
-              host: demo
-              subset: v1
-            fallback:
-              destination:
-                host: demo
-                subset: v2
-              fallback:
-                destination:
-                  host: demo
-                  subset: v3
-```
-
-此时我们选到的地址是 v2 方法级地址,如果 v2 还是没有地址,根据规则的定义,我们是可以 fallback 到 v3 接口级。
-
-假设我们有一个方法匹配时,如果没有地址,需要不进行 fallback,直接报错,我们可以这样配置
-
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo-route
-spec:
-  hosts:
-  - demo  // 统一定义为应用名 
-  dubbo:
-    - service:
-      - exact: com.taobao.hsf.demoService:1.0.0
-      - exact: com.taobao.hsf.demoService:2.0.0
-      routedetail:
-       - name: sayHello-String-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "sayHello"
-               .....
-             argp:
-              - string
-         route:
-          - destination:
-              host: demo
-              subset: v1
-            fallback:
-              destination:
-                host: demo
-                subset: v2
-              fallback:
-                destination:
-                  host: demo
-                  subset: v3
-
-       - name: sayHello-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "s-method"
-         route:
-          - destination:
-             host: demo
-             subset: v2
-            fallback:
-              destination:
-                host: demo
-                subset: v3
-       - name: some-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "some-method"
-         route:
-          - destination:
-             host: demo
-             subset: v4
-             
-       - name: interface-route 
-         route:
-          - destination: 
-            host: demo
-            subset: v3
-
-    - service:
-
-      ....
----
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: demo-route
-spec:
-  host: demo
-  subsets:
-    - name: v1
-      labels:
-        sigma.ali/mg: v1-host
-
-    - name: v2
-      labels:
-        sigma.ali/mg: v2-host
-
-    - name: v3
-      labels:
-        sigma.ali/mg: v3-host
-```
-
-从这个规则我们看出来匹配到 some-method  条件时对应的是 v4 subset,那么 v4 为空时,因为没有配置 fallback ,此时会直接报错
-
-#### fallback 处理原则总结
-
-- 我们应该在 VirtualService route 中配置好 Destination 的 fallback 处理逻辑
-- 在 fallback subset 时,如果对应的 subset 也配置有 fallback subset 时,也应递归处理;fallback subset 之间的关系也应该是从具体到广泛
-- 我们在编写匹配条件时,应该遵循从 具体条件到广泛条件 的原则
-
-### RouteChain 的组装模式 (目前未实现)
-
-![route-rule3.png](/imgs/user/route-rule3.png)
-
-
-我们看到上面的图,在路由的过程当中,我们是 Pipeline 的处理方式,Pipeline 的 Router 节点存在顺序,并且每个 Router 都有一个唯一对应的 VirtualService 和 **多个** 相应的 DestinationRule 进行描述。
-
-以 Nacos 上存着的路由规则配置为例,配置的格式如下:
-
-```
-DataId: Demo.rule.yaml
-GROUP: HSF
-
-content:
-
-VirtualService A
----
-DestinationRule A1
----
-DestinationRule A2 
----
-VirtualService B
----
-DestinationRule B
----
-VirtualService C
----
-DestinationRule C
----
-...
-```
-
-`VirtualService A` 与 `DestinationRule A1` 、`DestinationRule A2` 组成一个 Router A,`VirtualService B` 与 `DestinationRule B` 组成 Router B,以此类推,完成整个 router 链的组装。
-
-
-### 规则规范
-
-#### VirtualService  name 规范,决定 Router 类型
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo/ScriptRouter
-```
-
-VirtualService 中的 name 属性,应以 `应用名/Router类型定义`
-
-Router类型有以下列表:
-
-| name|  Description |
-| --- | --- |
-| StandardRouter | 完全使用标准 VirtualService 描述的 Router |
-| 待补充 | 待补充 |
-
-
-
-#### VirtualService
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| hosts | string[] |  一般指应用名 | NO  |
-| dubbo | DubboRoute[] | dubbo 路由规则,顺序执行,符合条件立即返回 | NO |
-
-
-#### DubboRoute
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name | string | 规则的名字,方便识别规则用意 | NO |
-| services | StringMatch[] | 规则生效的服务名列表,可使用具体的服务名,也可以使用正则 * 的方式进行匹配;默认不配置,则代表所有的服务都生效 | |
-| fault | dubboFaultInject[] | 故障注入 |  |
-| mirror | Destination | 镜像流量 |  |
-| retries | DubboRetry[]  | 重试相关 |  |
-| timeout | DubboTimeout[] | 超时相关 |  |
-| routedetail | DubboRouteDetail[] | 具体的流量规则,顺序执行,符合条件立即返回 | YES |
-
-
-#### DubboRouteDetail
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name | string |  | NO |
-| match | DubboMatchRequest[] |  |  |
-| route | DubboRouteDestination[] | | |
-| mirror | Destination |  |  |
-| retries | DubboRetry[]  |  |  |
-| timeout | DubboTimeout[] |  |  | 
-
-
-#### DubboMatchRequest
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name | string |  | NO |
-| method | DubboMethodMatch | 方法相关的匹配 |  |
-| sourceLabels | map\<string, string\> | 调用端打的相关 lables, 包含应用名、机器分组、机器环境变量信息等; 对于 HSF-JAVA 来说,可以从上报的 URL 拿到对应的 key/value |  |
-| attachments | DubboAttachmentMatch | 请求附带的其他信息,比如 HSF 请求上下文、Eagleeye 上下文等 |  |
-| headers | map\<string, StringMatch\> | 通用的请求协议字段等,如接口名、方法名、超时等 |  |
-| threshold | DoubleMatch | 调用的 subset 列表的机器,占整个 host 的阀值 | |
-
-由于 headers 、attachemes 、method 之间可能存在字段一样重复的情况,TODO 进一步细化
-
-#### DubboMethodMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name_match | StringMatch | 匹配请求中的调用方法名 | NO |
-| argc | int | 匹配请求的参数个数 |  |
-| args | DubboMethodArg[]| 为 DubboMethodArg 类型的数组,表示每个参数值需要满足的条件 |  |
-| argp | StringMatch[] | 匹配请求的参数类型 |  |
-| headers | map\<string, StringMatch\> | 预留 |  |
-
-#### DubboMethodArg
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| index | uint32 | 匹配参数的位置,index字段从1开始(即第$index个参数) | YES |
-| type | string | 匹配参数的类型,以java的 string 类型为例,该字段取值 java.lang.String,该字段默认为 java.lang.String | |
-| str_value | ListStringMatch | 匹配参数的值,根据$type进行解析 ListStringMatcher:匹配 java.lang.String) | NO |
-| num_value | ListDoubleMatch | 数值类型匹配 | NO |
-| bool_value | BoolMatch | bool 值类型匹配| NO |
-| reserve | reserve  | 复杂类型的匹配,暂时不定义| NO |
-
-
-
-```
-ListOfDubboMethodArgSamples:
-- index: 1
-  str_value:
-      oneof:
-      - regex: "*abc*"
-      - exact: parameter-1
-- index: 2
-  type: java.lang.Double
-  num_value:
-      oneof:
-      - range:
-          start: 100.1
-- index: 3
-  type: java.lang.Boolean
-- index: 4 
-  type: java.lang.Integer
-  num_value:
-      oneof:
-      - range:
-          start: 1
-          end: 100
-```
-
-#### ListStringMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| oneof | StringMatch[] | 任何一个 StringMatch 匹配则匹配 | |
-
-#### StringMatch
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| exact | string (oneof)  | exact string match | |
-| prefix | string (oneof)  | prefix-based match | |
-| regex | string (oneof)  |RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax)  | |
-| noempty | string (oneof)  | no empty string | |
-| empty | string (oneof)  | empty string | |
-
-
-#### ListDoubleMatch
-ListDoubleMatch 用于匹配 int/long/double 类型的数值参数
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| oneof | DoubleMatch[] | 任何一个 DoubleMatch 匹配则匹配 | |
-
-#### DoubleMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| exact | double(oneof)  | 数值完全匹配| |
-| range | DoubleRangeMatch(oneof)  | 数值范围匹配 | |
-| mode | double | 取模操作,需要与上面两个语义一起配置使用 | |
-
-#### DoubleRangeMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| start | double | 数值大于或等于 | |
-| end | double  | 数值小于 | |
-
-
-#### BoolMatch
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| exact | bool(oneof) | true/false ,完全匹配 | |
-
-#### ObjectMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| type | string | 匹配参数的类型,以java的 string 类型为例,该字段取值 java.lang.String,该字段默认为 java.lang.String | |
-| str_value | ListStringMatch | 匹配参数的值,根据$type进行解析 ListStringMatcher:匹配 java.lang.String) | NO |
-| num_value | ListDoubleMatch | | NO |
-| bool_value | BoolMatch | | NO |
-
-
-
-#### DubboAttachmentMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| eagleeyecontext| map\<string, StringMatch\> | 鹰眼上下文 | NO |
-| dubbocontext| map\<string, StringMatch\> | Dubbo 请求上下文 | NO |
-| reserve | reserve | reserve | reserve | 
-
-#### DubboRouteDestination
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| destination | DubboDestination | 路由目标 Destination  | YES |
-| weight | int  | 路由权重  | NO  |
-
-#### DubboDestination
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| host | string | 注册中心里面对应的 key 值,现在是接口名 |YES|
-| subset | string | | |
-| port | PortSelector| | |
-| fallback | DubboDestination | fallback 到的另外一个地址列表 | |
-
-
-#### DestinationRule
-
-与 DestinationRule 相关的 ServiceEntry/WorkloadEntry 等定义与开源保持一致
-
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| host | string |  |  |
-| trafficPolicy | TrafficPolicy | | |
-| subsets | Subset[] | One or more named sets that represent individual versions of a service. Traffic policies can be overridden at subset level. |  |
-
-#### Subset
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name | string |  |  |
-| labels | map<string, string> | | |
-| trafficPolicy | trafficPolicy | | |
-
-
-### 规则示例
-
-#### 类 groovy 脚本动态路由
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo/StandardRouter
-spec:
-  hosts:
-  - demo
-  dubbo:
-    - services:
-      - exact: com.taobao.hsf.demoservice:1.0.0
-      routedetail:
-       - name: sayHello-route
-         match: 
-          - method:
-             name_match: 
-               exact: "s-method"
-             argc: 5
-             args:
-               - index: 2
-                 type: double
-                 num_value:
-                   oneof:
-                   - range:
-                       start: 100.1
-               - index: 1
-                 type: string 
-                 str_value:
-                   oneof:
-                   - regex: "*abc*"
-                   - exact: parameter-1
-               - index: 3
-                 type: bool
-               - index: 4 
-                 type: int
-                 num_value:
-                   oneof:
-                   - range:
-                       start: 1
-                       end: 100
-          - sourcelables:
-             sigma.ali/appName: "ump2"
-         route:
-          - destination:
-             host: demo
-             subset: v1
-             fallback:
-               host:demo 
-               subset: v2
-
-       - name: default-route
-         route:
-          - destination: 
-            host: demo 
-            subset: v2
----
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: reviews-route
-spec:
-  host: demo
-  subsets:
-    - name: v1
-      labels:
-        sigma.ali/mg: v1-host
-    - name: v2
-      labels:
-        sigma.ali/mg: v2-host
-```
-
-#### 权重路由
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: reviews-route
-spec:
-  hosts:
-  - reviews.prod.svc.cluster.local
-  dubbo:
-    - name: weightRoute
-      routedetail:
-       - name: weght
-         route:
-          - destination:
-             host: reviews.prod.svc.cluster.local
-             subset: v1
-             weight: 60
-
-          - destination:
-             host: reviews.prod.svc.cluster.local
-             subset: v2
-             weight: 40
-
-
----
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: reviews-route
-spec:
-  host: reviews.prod.svc.cluster.local
-  subsets:
-    - name: v1
-      labels:
-        version: v1
-    - name: v2
-      labels:
-        version: v2
-```
-
-
-### 具体示例
-
-现有名为 Demo 的应用,
-提供的服务有:
-
-```
-com.taobao.hsf.DemoService:1.0.0
-
-```
-
-服务提供者 IP 列表及 URL 如下
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-
-10.0.0.4:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-10.0.0.5:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-
-10.0.0.6:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-10.0.0.7:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo/UnitRouter
-spec:
-  hosts:
-  - demo
-  dubbo:
-    - name: UnitServiceRoute
-      services:
-        - exact: com.taobao.hsf.DemoService:1.0.0
-      routedetail:
-       - name: center-env
-         match:
-          - context:
-              hsfcontext:
-                user_unit: 
-                  exact: CENTER
-         route:
-          - destination:
-              host: demo
-              subset: CENTER
-              fallback: // 单元化没有 fallback,直接报错
-       - name: unsh-env
-         match:
-          - context:
-              hsfcontext:
-                user_unit: 
-                  exact: UNSH
-            route:
-             - destination:
-                 host: demo
-                 subset: UNSH
-       - name: unsz-env
-         match:
-          - context:
-              hsfcontext:
-                user_unit: 
-                  exact: UNSZ
-            route:
-             - destination:
-                 host: demo
-                 subset: UNSZ
-       - name: zbmix-env
-         match:
-          - context:
-              hsfcontext:
-                user_unit: 
-                  exact: ZBMIX
-            route:
-             - destination:
-                 host: demo
-                 subset: ZBMIX
-
----- 
-
-
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: demo/UnitRouter
-spec:
-  host: demo // 这个和上面的保持一致
-  subsets:
-    - name: CENTER
-      labels:
-        sigma.ali/unit: CENTER
-    - name: UNSH
-      labels:
-        sigma.ali/unit: UNSH
-    - name: UNSZ
-      labels:
-        sigma.ali/unit: UNSZ
-    - name: ZBMIX
-      labels:
-        sigma.ali/unit: ZBMIX
-
-
-----
-
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo/MachineRouter
-spec:
-  hosts:
-  - demo
-  dubbo:
-    - name: MachineRoomRouteDefault // 同机房
-      services:
-        - regex: *
-      routedetail:
-       - name: na61-samesite-route  // 把 na61 机房的流量打到 na61、na610 机房
-         match:
-          - sourcelables:
-              sigma.ali/site: na61
-         route:              
-           - destination:
-              host: demo
-              subset: na61
-           - destination:
-              host: demo
-              subset: na610
-              weight: 40
-       - name: na62-samesite-route  // 把 na62 机房的流量打到 na62 机房
-         match:
-          - sourcelables:
-             sigma.ali/site: na62
-         route:              
-          - destination:
-             host: demo
-             subset: na62
-       - name: default // 兜底路由,其他机房的流量随意打
-         route:
-          - destination:
-             host: demo
-    .....
-
---------
-
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: demo/MachineRouter
-spec:
-  host: demo// 这个和上面的保持一致
-  subsets:
-    - name: na61
-      labels:
-        sigma.ali/site: na61
-    - name: na610
-      labels:
-        sigma.ali/site: na610
-    - name: na62
-      labels:
-        sigma.ali/site: na62
-    - name: na620
-      labels:
-        sigma.ali/site: na620
-    .....
-
-```
-
-
-
-以上面的配置为例,假设消费者在 CENTER 标的 na62 机房,请求上下文中的 user_unit 属于 CENTER
-
-那么我们有以下路由流程:
-
-我们经过 UnitRouter 时,地址被划分为四个部份
-
-CENTER:
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-
-UNSH
-
-```
-10.0.0.4:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-10.0.0.5:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-
-```
-
-
-
-UNSZ
-
-```
-10.0.0.6:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-10.0.0.7:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-
-```
-
-UNZBMIX
-
-```
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-因为 user_unit 属于 CENTER ,所以我们选择 CENTER 的部分,作为 MachineRoomRouter 的地址输入,即为
-
-CENTER
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-在第二步中,MachineRoomRoute 可以被划分为五个部份
-
-
-na61
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-
-na610
-
-```
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-na62
-
-```
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-na620
-
-```
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-fallback
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-
-10.0.0.4:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-10.0.0.5:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-
-10.0.0.6:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-10.0.0.7:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-由于消费者在 na62 机房发起调用,匹配了
-
-```
-       - name: na62-samesite-route  // 把 na62 机房的流量打到 na62 机房
-         match:
-          - sourcelables:
-             sigma.ali/site: na62
-         route:              
-          - destination:
-             host: demo
-             subset: na62
-
-```
-
-
-这个规则,那么就是选取
-
-na62
-
-```
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-而 UnitRouter 给 MachineRoomRouter 的输入为
-
-CENTER
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-
-两个取交集的结果为
-
-```
- 10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-这个结果将做为一下路由的输出,重复前面的动作;
-
-如果这个路由规则已经结束,那么调用的地址将为
-
-```
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
diff --git a/content/zh/docs/v3.0/examples/routing/_index.md b/content/zh/docs/v3.0/examples/routing/_index.md
new file mode 100644
index 0000000..e1bc90f
--- /dev/null
+++ b/content/zh/docs/v3.0/examples/routing/_index.md
@@ -0,0 +1,7 @@
+---
+type: docs
+title: "路由规则"
+linkTitle: "路由规则"
+weight: 12
+description: "Dubbo在不同场景下使用的路由方案"
+---
diff --git a/content/zh/docs/v3.0/examples/routing/ab-testing-deployment.md b/content/zh/docs/v3.0/examples/routing/ab-testing-deployment.md
new file mode 100644
index 0000000..29a87e6
--- /dev/null
+++ b/content/zh/docs/v3.0/examples/routing/ab-testing-deployment.md
@@ -0,0 +1,19 @@
+---
+type: docs
+title: "Ab测试"
+linkTitle: "Ab测试"
+weight: 30
+description: "在线上的老版本继续运行的前提下,直接部署新版本然后进行测试,当新版本测试通过以后,将流量切到新版本,最后将老版本同时也升级到新版本。"
+---
+
+#### 场景描述
+描述当前IDC、服务部署、服务信息、希望实现的效果等相关情况
+#### 操作工艺
+
++ 步骤1
+    + 路由配置
+    + 验证方案
+
++ 步骤2
+    + 路由配置
+    + 验证方案
\ No newline at end of file
diff --git a/content/zh/docs/v3.0/examples/routing/blue-green-deployment.md b/content/zh/docs/v3.0/examples/routing/blue-green-deployment.md
new file mode 100644
index 0000000..17a207e
--- /dev/null
+++ b/content/zh/docs/v3.0/examples/routing/blue-green-deployment.md
@@ -0,0 +1,19 @@
+---
+type: docs
+title: "蓝绿部署"
+linkTitle: "蓝绿部署"
+weight: 20
+description: "在线上的老版本继续运行的前提下,直接部署新版本然后进行测试,当新版本测试通过以后,将流量切到新版本,最后将老版本同时也升级到新版本。"
+---
+
+#### 场景描述
+描述当前IDC、服务部署、服务信息、希望实现的效果等相关情况
+#### 操作工艺
+
++ 步骤1
+    + 路由配置
+    + 验证方案
+
++ 步骤2
+    + 路由配置
+    + 验证方案
\ No newline at end of file
diff --git a/content/zh/docs/v3.0/examples/routing/canary-deployment.md b/content/zh/docs/v3.0/examples/routing/canary-deployment.md
new file mode 100644
index 0000000..57fc22b
--- /dev/null
+++ b/content/zh/docs/v3.0/examples/routing/canary-deployment.md
@@ -0,0 +1,20 @@
+---
+type: docs
+title: "金丝雀部署"
+linkTitle: "金丝雀部署"
+weight: 40
+description: "在原有版本可用的情况下,同时部署一个新版本应用作为“金丝雀”,测试新版本的性能和表现,在保障整体系统稳定的前提下,尽早发现、及时调整。"
+---
+
+
+#### 场景描述
+描述当前IDC、服务部署、服务信息、希望实现的效果等相关情况
+#### 操作工艺
+
++ 步骤1
+    + 路由配置
+    + 验证方案
+
++ 步骤2
+    + 路由配置
+    + 验证方案
\ No newline at end of file
diff --git a/content/zh/docs/v3.0/examples/routing/demo-rule-deployment.md b/content/zh/docs/v3.0/examples/routing/demo-rule-deployment.md
new file mode 100644
index 0000000..85a9471
--- /dev/null
+++ b/content/zh/docs/v3.0/examples/routing/demo-rule-deployment.md
@@ -0,0 +1,349 @@
+---
+type: docs
+title: "使用案例"
+linkTitle: "使用案例"
+weight: 18
+description: "基于实际情况来制定路由规则。"
+---
+
+#### 应用服务
+
+```yaml
+com.taobao.hsf.DemoService:1.0.0
+```
+
+#### 服务地址
+
+```yaml
+10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+
+10.0.0.4:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
+10.0.0.5:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
+
+10.0.0.6:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
+10.0.0.7:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
+
+10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+
+```
+#### 路由规则
+
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/UnitRouter
+spec:
+  hosts:
+  - demo
+  dubbo:
+    - name: UnitServiceRoute
+      services:
+        - exact: com.taobao.hsf.DemoService:1.0.0
+      routedetail:
+       - name: center-env
+         match:
+          - context:
+              hsfcontext:
+                user_unit: 
+                  exact: CENTER
+         route:
+          - destination:
+              host: demo
+              subset: CENTER
+              fallback: // 单元化没有 fallback,直接报错
+       - name: unsh-env
+         match:
+          - context:
+              hsfcontext:
+                user_unit: 
+                  exact: UNSH
+            route:
+             - destination:
+                 host: demo
+                 subset: UNSH
+       - name: unsz-env
+         match:
+          - context:
+              hsfcontext:
+                user_unit: 
+                  exact: UNSZ
+            route:
+             - destination:
+                 host: demo
+                 subset: UNSZ
+       - name: zbmix-env
+         match:
+          - context:
+              hsfcontext:
+                user_unit: 
+                  exact: ZBMIX
+            route:
+             - destination:
+                 host: demo
+                 subset: ZBMIX
+
+---- 
+
+
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: demo/UnitRouter
+spec:
+  host: demo // 这个和上面的保持一致
+  subsets:
+    - name: CENTER
+      labels:
+        sigma.ali/unit: CENTER
+    - name: UNSH
+      labels:
+        sigma.ali/unit: UNSH
+    - name: UNSZ
+      labels:
+        sigma.ali/unit: UNSZ
+    - name: ZBMIX
+      labels:
+        sigma.ali/unit: ZBMIX
+
+
+----
+
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/MachineRouter
+spec:
+  hosts:
+  - demo
+  dubbo:
+    - name: MachineRoomRouteDefault // 同机房
+      services:
+        - regex: *
+      routedetail:
+       - name: na61-samesite-route  // 把 na61 机房的流量打到 na61、na610 机房
+         match:
+          - sourcelables:
+              sigma.ali/site: na61
+         route:              
+           - destination:
+              host: demo
+              subset: na61
+           - destination:
+              host: demo
+              subset: na610
+              weight: 40
+       - name: na62-samesite-route  // 把 na62 机房的流量打到 na62 机房
+         match:
+          - sourcelables:
+             sigma.ali/site: na62
+         route:              
+          - destination:
+             host: demo
+             subset: na62
+       - name: default // 兜底路由,其他机房的流量随意打
+         route:
+          - destination:
+             host: demo
+    .....
+
+----
+
+----
+
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: demo/MachineRouter
+spec:
+  host: demo// 这个和上面的保持一致
+  subsets:
+    - name: na61
+      labels:
+        sigma.ali/site: na61
+    - name: na610
+      labels:
+        sigma.ali/site: na610
+    - name: na62
+      labels:
+        sigma.ali/site: na62
+    - name: na620
+      labels:
+        sigma.ali/site: na620
+    .....
+
+```
+
+#### 案例说明
+
+以上面的配置为例,假设消费者在CENTER标的na62机房,请求上下文中的user_unit属于CENTER
+
+那么我们有以下路由流程:
+
+我们经过 UnitRouter 时,地址被划分为四个部份
+
++ CENTER:
+
+```yaml
+10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+```
+
+
++ UNSH
+
+```yaml
+10.0.0.4:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
+10.0.0.5:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
+
+```
+
++ UNSZ
+
+```yaml
+10.0.0.6:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
+10.0.0.7:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
+
+```
+
++ UNZBMIX
+
+```yaml
+10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+
+```
+
+因为 user_unit属于CENTER,所以我们选择CENTER的部分,作为MachineRoomRouter的地址输入,即为
+
+CENTER
+
+```yaml
+10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+```
+
+在第二步中,MachineRoomRoute 可以被划分为五个部份
+
+
+na61
+
+```yaml
+10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+```
+
+
+na610
+
+```yaml
+10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+```
+
+na62
+
+```yaml
+10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+
+```
+
+na620
+
+```yaml
+10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+```
+
+##### fallback
+
+```yaml
+10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+
+10.0.0.4:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
+10.0.0.5:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
+
+10.0.0.6:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
+10.0.0.7:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
+
+10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+
+```
+
+由于消费者在 na62 机房发起调用,匹配了
+
+```yaml
+       - name: na62-samesite-route  // 把 na62 机房的流量打到 na62 机房
+         match:
+          - sourcelables:
+             sigma.ali/site: na62
+         route:              
+          - destination:
+             host: demo
+             subset: na62
+
+```
+
+
+这个规则,那么就是选取
+
+na62
+
+```yaml
+10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
+
+```
+
+而UnitRouter给MachineRoomRouter的输入为
+
+CENTER
+
+```yaml
+10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+```
+
+
+两个取交集的结果为
+
+```yaml
+ 10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+```
+
+这个结果将做为一下路由的输出,重复前面的动作;
+
+如果这个路由规则已经结束,那么调用的地址将为
+
+```yaml
+10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
+
+```
\ No newline at end of file
diff --git a/content/zh/docs/v3.0/examples/routing/dynamic-rule-deployment.md b/content/zh/docs/v3.0/examples/routing/dynamic-rule-deployment.md
new file mode 100644
index 0000000..fc71c2c
--- /dev/null
+++ b/content/zh/docs/v3.0/examples/routing/dynamic-rule-deployment.md
@@ -0,0 +1,78 @@
+---
+type: docs
+title: "动态路由"
+linkTitle: "动态路由"
+weight: 15
+description: "类groovy脚本动态路由。"
+---
+
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  - demo
+  dubbo:
+    - services:
+      - exact: com.taobao.hsf.demoservice:1.0.0
+      routedetail:
+       - name: sayHello-route
+         match: 
+          - method:
+             name_match: 
+               exact: "s-method"
+             argc: 5
+             args:
+               - index: 2
+                 type: double
+                 num_value:
+                   oneof:
+                   - range:
+                       start: 100.1
+               - index: 1
+                 type: string 
+                 str_value:
+                   oneof:
+                   - regex: "*abc*"
+                   - exact: parameter-1
+               - index: 3
+                 type: bool
+               - index: 4 
+                 type: int
+                 num_value:
+                   oneof:
+                   - range:
+                       start: 1
+                       end: 100
+          - sourcelables:
+             sigma.ali/appName: "ump2"
+         route:
+          - destination:
+             host: demo
+             subset: v1
+             fallback:
+               host:demo 
+               subset: v2
+
+       - name: default-route
+         route:
+          - destination: 
+            host: demo 
+            subset: v2
+---
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: reviews-route
+spec:
+  host: demo
+  subsets:
+    - name: v1
+      labels:
+        sigma.ali/mg: v1-host
+    - name: v2
+      labels:
+        sigma.ali/mg: v2-host
+```
\ No newline at end of file
diff --git a/content/zh/docs/v3.0/examples/routing/weight-rule-deployment.md b/content/zh/docs/v3.0/examples/routing/weight-rule-deployment.md
new file mode 100644
index 0000000..65a4d1c
--- /dev/null
+++ b/content/zh/docs/v3.0/examples/routing/weight-rule-deployment.md
@@ -0,0 +1,48 @@
+
+---
+type: docs
+title: "权重路由"
+linkTitle: "权重路由"
+weight: 16
+description: "基于用户自定权重实现路由功能。"
+---
+
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: reviews-route
+spec:
+  hosts:
+  - reviews.prod.svc.cluster.local
+  dubbo:
+    - name: weightRoute
+      routedetail:
+       - name: weght
+         route:
+          - destination:
+             host: reviews.prod.svc.cluster.local
+             subset: v1
+             weight: 60
+
+          - destination:
+             host: reviews.prod.svc.cluster.local
+             subset: v2
+             weight: 40
+
+
+---
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: reviews-route
+spec:
+  host: reviews.prod.svc.cluster.local
+  subsets:
+    - name: v1
+      labels:
+        version: v1
+    - name: v2
+      labels:
+        version: v2
+```
\ No newline at end of file
diff --git a/content/zh/docs/v3.0/references/routers/_index.md b/content/zh/docs/v3.0/references/routers/_index.md
index 04fd14e..1bf9ff8 100644
--- a/content/zh/docs/v3.0/references/routers/_index.md
+++ b/content/zh/docs/v3.0/references/routers/_index.md
@@ -3,5 +3,266 @@ type: docs
 title: "路由规则"
 linkTitle: "路由规则"
 weight: 40
-description: "Dubbo 支持的路由类型及配合方式"
----
\ No newline at end of file
+description: "Dubbo支持的路由类型及配合方式"
+---
+
+### 基本思想
+基于路由链,采用Pipeline的处理方式,如下图所示:
+
+![route-rule1.png](/imgs/user/route-rule1.png)
+
+
+可以把路由链的逻辑简单的理解为 target = rn(...r3(r2(r1(src))))。对于每一个 router 内部的逻辑,可以抽象为输入地址 addrs-in 与 router 中按全量地址 addrs-all 实现切分好的 n 个互不相交的地址池 addrs-pool-1 ... addrs-pool-n 按实现定义好的规则取交集作为输出 addrs-out。以此类推,完成整个路由链的计算。
+
+![route-rule2.png](/imgs/user/route-rule2.png)
+
+另外一方面,如果 router(n) 需要执行 fallback 逻辑的时候,那么需要经过 router(n) 就应该决定好 fallback 逻辑
+
+
+### fallback 处理原则
+
+由于多个 router 之间多个条件组件之后,很容易出现地址被筛选为空的情况,那么我们需要针对这情况进行 fallback 处理,保证业务在正确性的前提下,能够顺利找到有效地址。
+
+首先我们看一下以下规则
+
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo-route
+spec:
+  hosts:
+  - demo  // 统一定义为应用名 
+  dubbo:
+  - service:
+    - exact: com.taobao.hsf.demoService:1.0.0
+    - exact: com.taobao.hsf.demoService:2.0.0
+    routedetail:
+    - name: sayHello-String-method-route
+      match: 
+      - method:
+          name_match: 
+            exact: "sayHello"
+            .....
+          argp:
+          - string
+      route:
+      - destination:
+          host: demo
+          subset: v1
+        fallback:
+          destination:
+            host: demo
+            subset: v2
+          fallback:
+            destination:
+              host: demo
+              subset: v3
+
+      - name: sayHello-method-route
+        match: 
+        - method:
+            name_match: 
+              exact: "s-method"
+        route:
+        - destination:
+            host: demo
+            subset: v2
+          fallback:
+            destination:
+              host: demo
+              subset: v3
+
+      - name: interface-route 
+        route:
+        - destination: 
+          host: demo
+          subset: v3
+
+  - service:
+      
+      ....
+---
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: demo-route
+spec:
+  host: demo
+  subsets:
+  - name: v1
+    labels:
+      sigma.ali/mg: v1-host
+
+  - name: v2
+    labels:
+      sigma.ali/mg: v2-host
+
+  - name: v3
+    labels:
+      sigma.ali/mg: v3-host
+
+```
+
+我们以脚本路由为例,这个脚本路由的匹配条件是遵循一个原则的,就是匹配的范围是从精确到广泛的一个过程,在这个示例来说,就是 sayHello(string)参数 -> sayHello 方法 -> 接口级路由 的一个匹配查找过程。
+
+那么如果我们已经满足某个条件,但是选到的 subset 地址为空,我们将如何进行 fallback 处理呢?
+
+以匹配 sayHello(string)参数 条件为例,我们选择到的是 v1 subset,如果是空,我们可以向上一级是寻找地址,也就是方法级去寻找地址,具体的配置为下
+
+```yaml
+       - name: sayHello-String-method-route
+         match: 
+          - method:
+             name_match: 
+               exact: "sayHello"
+               .....
+             argp:
+              - string
+         route:
+          - destination:
+              host: demo
+              subset: v1
+            fallback:
+              destination:
+                host: demo
+                subset: v2
+              fallback:
+                destination:
+                  host: demo
+                  subset: v3
+```
+
+此时我们选到的地址是 v2 方法级地址,如果 v2 还是没有地址,根据规则的定义,我们是可以 fallback 到 v3 接口级。
+
+假设我们有一个方法匹配时,如果没有地址,需要不进行 fallback,直接报错,我们可以这样配置
+
+
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo-route
+spec:
+  hosts:
+  - demo  // 统一定义为应用名 
+  dubbo:
+  - service:
+    - exact: com.taobao.hsf.demoService:1.0.0
+    - exact: com.taobao.hsf.demoService:2.0.0
+    routedetail:
+      - name: sayHello-String-method-route
+        match: 
+        - method:
+            name_match: 
+              exact: "sayHello"
+              .....
+            argp:
+            - string
+        route:
+        - destination:
+            host: demo
+            subset: v1
+          fallback:
+            destination:
+              host: demo
+              subset: v2
+            fallback:
+              destination:
+                host: demo
+                subset: v3
+
+      - name: sayHello-method-route
+        match: 
+        - method:
+            name_match: 
+              exact: "s-method"
+        route:
+        - destination:
+            host: demo
+            subset: v2
+          fallback:
+            destination:
+              host: demo
+              subset: v3
+      - name: some-method-route
+        match: 
+        - method:
+            name_match: 
+              exact: "some-method"
+        route:
+        - destination:
+            host: demo
+            subset: v4
+            
+      - name: interface-route 
+        route:
+        - destination: 
+          host: demo
+          subset: v3
+
+  - service:
+
+      ....
+---
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: demo-route
+spec:
+  host: demo
+  subsets:
+  - name: v1
+    labels:
+      sigma.ali/mg: v1-host
+
+  - name: v2
+    labels:
+      sigma.ali/mg: v2-host
+
+  - name: v3
+    labels:
+      sigma.ali/mg: v3-host
+```
+
+从这个规则我们看出来匹配到 some-method  条件时对应的是 v4 subset,那么 v4 为空时,因为没有配置 fallback ,此时会直接报错
+
+#### fallback 处理原则总结
+
+- 我们应该在 VirtualService route 中配置好 Destination 的 fallback 处理逻辑
+- 在 fallback subset 时,如果对应的 subset 也配置有 fallback subset 时,也应递归处理;fallback subset 之间的关系也应该是从具体到广泛
+- 我们在编写匹配条件时,应该遵循从 具体条件到广泛条件 的原则
+
+### RouteChain 的组装模式 (目前未实现)
+
+![route-rule3.png](/imgs/user/route-rule3.png)
+
+
+我们看到上面的图,在路由的过程当中,我们是 Pipeline 的处理方式,Pipeline 的 Router 节点存在顺序,并且每个 Router 都有一个唯一对应的 VirtualService 和 **多个** 相应的 DestinationRule 进行描述。
+
+以 Nacos 上存着的路由规则配置为例,配置的格式如下:
+
+```yaml
+DataId: Demo.rule.yaml
+GROUP: HSF
+
+content:
+
+VirtualService A
+---
+DestinationRule A1
+---
+DestinationRule A2 
+---
+VirtualService B
+---
+DestinationRule B
+---
+VirtualService C
+---
+DestinationRule C
+---
+...
+```
+
+`VirtualService A` 与 `DestinationRule A1` 、`DestinationRule A2` 组成一个 Router A,`VirtualService B` 与 `DestinationRule B` 组成 Router B,以此类推,完成整个 router 链的组装。
\ No newline at end of file
diff --git a/content/zh/docs/v3.0/references/routers/destination-rule.md b/content/zh/docs/v3.0/references/routers/destination-rule.md
new file mode 100644
index 0000000..57b563a
--- /dev/null
+++ b/content/zh/docs/v3.0/references/routers/destination-rule.md
@@ -0,0 +1,94 @@
+---
+type: docs
+title: "DestinationRule"
+linkTitle: "DestinationRule"
+weight: 40
+description: "目标地址规则"
+---
+
+
+#### DestinationRule
+`DestinationRule`用来处理目标地址的规则,与`DestinationRule`相关的`ServiceEntry`, `WorkloadEntry`等定义与开源保持一致
++ 使用示例
+
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: demo-route
+spec:
+  host: demo
+  subsets:
+  trafficPolicy:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| name | string | 规则的名字,方便识别规则用意 | YES |
+| host | string | 注册中心里面对应的key值,现在是接口名 | YES |
+| trafficPolicy | TrafficPolicy | 流量策略 | NO |
+| subsets | Subset[] | 服务的单一版本或多版本的命名 | YES |
+
+#### Subset
+`Subset`应用服务的命名,可以是单个也可以是多个版本
++ 使用示例
+
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: demo-route
+spec:
+  subsets: #Subnet[]
+  - name:
+    labels:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| name | string | 服务版本名称 | YES |
+| labels | map<string, string> | 打在服务身上的标签 | YES |
+
+#### TrafficPolicy
+`TrafficPolicy`表示负载均衡策略
++ 使用示例
+
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: demo-route
+spec:
+  trafficPolicy: #TrafficPolicy
+    loadBalancer:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| loadBalancer | LoadBalancerSettings | 负载均衡设置 | YES |
+
+#### LoadBalancerSettings
+`LoadBalancerSettings`用来表示负载均衡相关的配置
++ 使用示例
+
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata:
+  name: demo-route
+spec:
+  trafficPolicy: 
+    loadBalancer: #LoadBalancerSettings
+      simple:
+      consistentHash:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| simple | string | 负载均衡策略,其中包括:`ROUND_ROBIN`, `LEAST_CONN`, `RANDOM`, `PASSTHROUGH` | YES |
+| consistentHash | ConsistentHashLB | 一致性Hash策略(未实现)	NO
+ | NO |
\ No newline at end of file
diff --git a/content/zh/docs/v3.0/references/routers/routerule.md b/content/zh/docs/v3.0/references/routers/routerule.md
deleted file mode 100644
index 11a3b0e..0000000
--- a/content/zh/docs/v3.0/references/routers/routerule.md
+++ /dev/null
@@ -1,944 +0,0 @@
----
-type: docs
-title: "路由规则规范说明"
-linkTitle: "路由规则规范说明"
-weight: 12
-description: "Dubbo 路由规则规范说明"
----
-
-### 基本思想:基于路由链,采用 Pipeline 的处理方式
-
-![route-rule1.png](/imgs/user/route-rule1.png)
-
-
-可以把路由链的逻辑简单的理解为 target = rn(...r3(r2(r1(src))))。对于每一个 router 内部的逻辑,可以抽象为输入地址 addrs-in 与 router 中按全量地址 addrs-all 实现切分好的 n 个互不相交的地址池 addrs-pool-1 ... addrs-pool-n 按实现定义好的规则取交集作为输出 addrs-out。以此类推,完成整个路由链的计算。
-
-![route-rule2.png](/imgs/user/route-rule2.png)
-
-另外一方面,如果 router(n) 需要执行 fallback 逻辑的时候,那么需要经过 router(n) 就应该决定好 fallback 逻辑
-
-
-### fallback 处理原则
-
-由于多个 router 之间多个条件组件之后,很容易出现地址被筛选为空的情况,那么我们需要针对这情况进行 fallback 处理,保证业务在正确性的前提下,能够顺利找到有效地址。
-
-首先我们看一下以下规则
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo-route
-spec:
-  hosts:
-  - demo  // 统一定义为应用名 
-  dubbo:
-    - service:
-      - exact: com.taobao.hsf.demoService:1.0.0
-      - exact: com.taobao.hsf.demoService:2.0.0
-      routedetail:
-       - name: sayHello-String-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "sayHello"
-               .....
-             argp:
-              - string
-         route:
-          - destination:
-              host: demo
-              subset: v1
-            fallback:
-              destination:
-                host: demo
-                subset: v2
-              fallback:
-                destination:
-                  host: demo
-                  subset: v3
-
-       - name: sayHello-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "s-method"
-         route:
-          - destination:
-             host: demo
-             subset: v2
-            fallback:
-              destination:
-                host: demo
-                subset: v3
-
-       - name: interface-route 
-         route:
-          - destination: 
-            host: demo
-            subset: v3
-
-    - service:
-      
-      ....
----
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: demo-route
-spec:
-  host: demo
-  subsets:
-    - name: v1
-      labels:
-        sigma.ali/mg: v1-host
-
-    - name: v2
-      labels:
-        sigma.ali/mg: v2-host
-
-    - name: v3
-      labels:
-        sigma.ali/mg: v3-host
-
-```
-
-我们以脚本路由为例,这个脚本路由的匹配条件是遵循一个原则的,就是匹配的范围是从精确到广泛的一个过程,在这个示例来说,就是 sayHello(string)参数 -> sayHello 方法 -> 接口级路由 的一个匹配查找过程。
-
-那么如果我们已经满足某个条件,但是选到的 subset 地址为空,我们将如何进行 fallback 处理呢?
-
-以匹配 sayHello(string)参数 条件为例,我们选择到的是 v1 subset,如果是空,我们可以向上一级是寻找地址,也就是方法级去寻找地址,具体的配置为下
-
-```
-       - name: sayHello-String-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "sayHello"
-               .....
-             argp:
-              - string
-         route:
-          - destination:
-              host: demo
-              subset: v1
-            fallback:
-              destination:
-                host: demo
-                subset: v2
-              fallback:
-                destination:
-                  host: demo
-                  subset: v3
-```
-
-此时我们选到的地址是 v2 方法级地址,如果 v2 还是没有地址,根据规则的定义,我们是可以 fallback 到 v3 接口级。
-
-假设我们有一个方法匹配时,如果没有地址,需要不进行 fallback,直接报错,我们可以这样配置
-
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo-route
-spec:
-  hosts:
-  - demo  // 统一定义为应用名 
-  dubbo:
-    - service:
-      - exact: com.taobao.hsf.demoService:1.0.0
-      - exact: com.taobao.hsf.demoService:2.0.0
-      routedetail:
-       - name: sayHello-String-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "sayHello"
-               .....
-             argp:
-              - string
-         route:
-          - destination:
-              host: demo
-              subset: v1
-            fallback:
-              destination:
-                host: demo
-                subset: v2
-              fallback:
-                destination:
-                  host: demo
-                  subset: v3
-
-       - name: sayHello-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "s-method"
-         route:
-          - destination:
-             host: demo
-             subset: v2
-            fallback:
-              destination:
-                host: demo
-                subset: v3
-       - name: some-method-route
-         match: 
-          - method:
-             name_match: 
-               exact: "some-method"
-         route:
-          - destination:
-             host: demo
-             subset: v4
-             
-       - name: interface-route 
-         route:
-          - destination: 
-            host: demo
-            subset: v3
-
-    - service:
-
-      ....
----
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: demo-route
-spec:
-  host: demo
-  subsets:
-    - name: v1
-      labels:
-        sigma.ali/mg: v1-host
-
-    - name: v2
-      labels:
-        sigma.ali/mg: v2-host
-
-    - name: v3
-      labels:
-        sigma.ali/mg: v3-host
-```
-
-从这个规则我们看出来匹配到 some-method  条件时对应的是 v4 subset,那么 v4 为空时,因为没有配置 fallback ,此时会直接报错
-
-#### fallback 处理原则总结
-
-- 我们应该在 VirtualService route 中配置好 Destination 的 fallback 处理逻辑
-- 在 fallback subset 时,如果对应的 subset 也配置有 fallback subset 时,也应递归处理;fallback subset 之间的关系也应该是从具体到广泛
-- 我们在编写匹配条件时,应该遵循从 具体条件到广泛条件 的原则
-
-### RouteChain 的组装模式 (目前未实现)
-
-![route-rule3.png](/imgs/user/route-rule3.png)
-
-
-我们看到上面的图,在路由的过程当中,我们是 Pipeline 的处理方式,Pipeline 的 Router 节点存在顺序,并且每个 Router 都有一个唯一对应的 VirtualService 和 **多个** 相应的 DestinationRule 进行描述。
-
-以 Nacos 上存着的路由规则配置为例,配置的格式如下:
-
-```
-DataId: Demo.rule.yaml
-GROUP: HSF
-
-content:
-
-VirtualService A
----
-DestinationRule A1
----
-DestinationRule A2 
----
-VirtualService B
----
-DestinationRule B
----
-VirtualService C
----
-DestinationRule C
----
-...
-```
-
-`VirtualService A` 与 `DestinationRule A1` 、`DestinationRule A2` 组成一个 Router A,`VirtualService B` 与 `DestinationRule B` 组成 Router B,以此类推,完成整个 router 链的组装。
-
-
-### 规则规范
-
-#### VirtualService  name 规范,决定 Router 类型
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo/ScriptRouter
-```
-
-VirtualService 中的 name 属性,应以 `应用名/Router类型定义`
-
-Router类型有以下列表:
-
-| name|  Description |
-| --- | --- |
-| StandardRouter | 完全使用标准 VirtualService 描述的 Router |
-| 待补充 | 待补充 |
-
-
-
-#### VirtualService
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| hosts | string[] |  一般指应用名 | NO  |
-| dubbo | DubboRoute[] | dubbo 路由规则,顺序执行,符合条件立即返回 | NO |
-
-
-#### DubboRoute
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name | string | 规则的名字,方便识别规则用意 | NO |
-| services | StringMatch[] | 规则生效的服务名列表,可使用具体的服务名,也可以使用正则 * 的方式进行匹配;默认不配置,则代表所有的服务都生效 | |
-| fault | dubboFaultInject[] | 故障注入 |  |
-| mirror | Destination | 镜像流量 |  |
-| retries | DubboRetry[]  | 重试相关 |  |
-| timeout | DubboTimeout[] | 超时相关 |  |
-| routedetail | DubboRouteDetail[] | 具体的流量规则,顺序执行,符合条件立即返回 | YES |
-
-
-#### DubboRouteDetail
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name | string |  | NO |
-| match | DubboMatchRequest[] |  |  |
-| route | DubboRouteDestination[] | | |
-| mirror | Destination |  |  |
-| retries | DubboRetry[]  |  |  |
-| timeout | DubboTimeout[] |  |  | 
-
-
-#### DubboMatchRequest
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name | string |  | NO |
-| method | DubboMethodMatch | 方法相关的匹配 |  |
-| sourceLabels | map\<string, string\> | 调用端打的相关 lables, 包含应用名、机器分组、机器环境变量信息等; 对于 HSF-JAVA 来说,可以从上报的 URL 拿到对应的 key/value |  |
-| attachments | DubboAttachmentMatch | 请求附带的其他信息,比如 HSF 请求上下文、Eagleeye 上下文等 |  |
-| headers | map\<string, StringMatch\> | 通用的请求协议字段等,如接口名、方法名、超时等 |  |
-| threshold | DoubleMatch | 调用的 subset 列表的机器,占整个 host 的阀值 | |
-
-由于 headers 、attachemes 、method 之间可能存在字段一样重复的情况,TODO 进一步细化
-
-#### DubboMethodMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name_match | StringMatch | 匹配请求中的调用方法名 | NO |
-| argc | int | 匹配请求的参数个数 |  |
-| args | DubboMethodArg[]| 为 DubboMethodArg 类型的数组,表示每个参数值需要满足的条件 |  |
-| argp | StringMatch[] | 匹配请求的参数类型 |  |
-| headers | map\<string, StringMatch\> | 预留 |  |
-
-#### DubboMethodArg
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| index | uint32 | 匹配参数的位置,index字段从1开始(即第$index个参数) | YES |
-| type | string | 匹配参数的类型,以java的 string 类型为例,该字段取值 java.lang.String,该字段默认为 java.lang.String | |
-| str_value | ListStringMatch | 匹配参数的值,根据$type进行解析 ListStringMatcher:匹配 java.lang.String) | NO |
-| num_value | ListDoubleMatch | 数值类型匹配 | NO |
-| bool_value | BoolMatch | bool 值类型匹配| NO |
-| reserve | reserve  | 复杂类型的匹配,暂时不定义| NO |
-
-
-
-```
-ListOfDubboMethodArgSamples:
-- index: 1
-  str_value:
-      oneof:
-      - regex: "*abc*"
-      - exact: parameter-1
-- index: 2
-  type: java.lang.Double
-  num_value:
-      oneof:
-      - range:
-          start: 100.1
-- index: 3
-  type: java.lang.Boolean
-- index: 4 
-  type: java.lang.Integer
-  num_value:
-      oneof:
-      - range:
-          start: 1
-          end: 100
-```
-
-#### ListStringMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| oneof | StringMatch[] | 任何一个 StringMatch 匹配则匹配 | |
-
-#### StringMatch
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| exact | string (oneof)  | exact string match | |
-| prefix | string (oneof)  | prefix-based match | |
-| regex | string (oneof)  |RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax)  | |
-| noempty | string (oneof)  | no empty string | |
-| empty | string (oneof)  | empty string | |
-
-
-#### ListDoubleMatch
-ListDoubleMatch 用于匹配 int/long/double 类型的数值参数
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| oneof | DoubleMatch[] | 任何一个 DoubleMatch 匹配则匹配 | |
-
-#### DoubleMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| exact | double(oneof)  | 数值完全匹配| |
-| range | DoubleRangeMatch(oneof)  | 数值范围匹配 | |
-| mode | double | 取模操作,需要与上面两个语义一起配置使用 | |
-
-#### DoubleRangeMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| start | double | 数值大于或等于 | |
-| end | double  | 数值小于 | |
-
-
-#### BoolMatch
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| exact | bool(oneof) | true/false ,完全匹配 | |
-
-#### ObjectMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| type | string | 匹配参数的类型,以java的 string 类型为例,该字段取值 java.lang.String,该字段默认为 java.lang.String | |
-| str_value | ListStringMatch | 匹配参数的值,根据$type进行解析 ListStringMatcher:匹配 java.lang.String) | NO |
-| num_value | ListDoubleMatch | | NO |
-| bool_value | BoolMatch | | NO |
-
-
-
-#### DubboAttachmentMatch
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| eagleeyecontext| map\<string, StringMatch\> | 鹰眼上下文 | NO |
-| dubbocontext| map\<string, StringMatch\> | Dubbo 请求上下文 | NO |
-| reserve | reserve | reserve | reserve | 
-
-#### DubboRouteDestination
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| destination | DubboDestination | 路由目标 Destination  | YES |
-| weight | int  | 路由权重  | NO  |
-
-#### DubboDestination
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| host | string | 注册中心里面对应的 key 值,现在是接口名 |YES|
-| subset | string | | |
-| port | PortSelector| | |
-| fallback | DubboDestination | fallback 到的另外一个地址列表 | |
-
-
-#### DestinationRule
-
-与 DestinationRule 相关的 ServiceEntry/WorkloadEntry 等定义与开源保持一致
-
-
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| host | string |  |  |
-| trafficPolicy | TrafficPolicy | | |
-| subsets | Subset[] | One or more named sets that represent individual versions of a service. Traffic policies can be overridden at subset level. |  |
-
-#### Subset
-| Field | Type | Description | Required |
-| --- | --- | --- | --- |
-| name | string |  |  |
-| labels | map<string, string> | | |
-| trafficPolicy | trafficPolicy | | |
-
-
-### 规则示例
-
-#### 类 groovy 脚本动态路由
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo/StandardRouter
-spec:
-  hosts:
-  - demo
-  dubbo:
-    - services:
-      - exact: com.taobao.hsf.demoservice:1.0.0
-      routedetail:
-       - name: sayHello-route
-         match: 
-          - method:
-             name_match: 
-               exact: "s-method"
-             argc: 5
-             args:
-               - index: 2
-                 type: double
-                 num_value:
-                   oneof:
-                   - range:
-                       start: 100.1
-               - index: 1
-                 type: string 
-                 str_value:
-                   oneof:
-                   - regex: "*abc*"
-                   - exact: parameter-1
-               - index: 3
-                 type: bool
-               - index: 4 
-                 type: int
-                 num_value:
-                   oneof:
-                   - range:
-                       start: 1
-                       end: 100
-          - sourcelables:
-             sigma.ali/appName: "ump2"
-         route:
-          - destination:
-             host: demo
-             subset: v1
-             fallback:
-               host:demo 
-               subset: v2
-
-       - name: default-route
-         route:
-          - destination: 
-            host: demo 
-            subset: v2
----
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: reviews-route
-spec:
-  host: demo
-  subsets:
-    - name: v1
-      labels:
-        sigma.ali/mg: v1-host
-    - name: v2
-      labels:
-        sigma.ali/mg: v2-host
-```
-
-#### 权重路由
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: reviews-route
-spec:
-  hosts:
-  - reviews.prod.svc.cluster.local
-  dubbo:
-    - name: weightRoute
-      routedetail:
-       - name: weght
-         route:
-          - destination:
-             host: reviews.prod.svc.cluster.local
-             subset: v1
-             weight: 60
-
-          - destination:
-             host: reviews.prod.svc.cluster.local
-             subset: v2
-             weight: 40
-
-
----
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: reviews-route
-spec:
-  host: reviews.prod.svc.cluster.local
-  subsets:
-    - name: v1
-      labels:
-        version: v1
-    - name: v2
-      labels:
-        version: v2
-```
-
-
-### 具体示例
-
-现有名为 Demo 的应用,
-提供的服务有:
-
-```
-com.taobao.hsf.DemoService:1.0.0
-
-```
-
-服务提供者 IP 列表及 URL 如下
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-
-10.0.0.4:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-10.0.0.5:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-
-10.0.0.6:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-10.0.0.7:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-```
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo/UnitRouter
-spec:
-  hosts:
-  - demo
-  dubbo:
-    - name: UnitServiceRoute
-      services:
-        - exact: com.taobao.hsf.DemoService:1.0.0
-      routedetail:
-       - name: center-env
-         match:
-          - context:
-              hsfcontext:
-                user_unit: 
-                  exact: CENTER
-         route:
-          - destination:
-              host: demo
-              subset: CENTER
-              fallback: // 单元化没有 fallback,直接报错
-       - name: unsh-env
-         match:
-          - context:
-              hsfcontext:
-                user_unit: 
-                  exact: UNSH
-            route:
-             - destination:
-                 host: demo
-                 subset: UNSH
-       - name: unsz-env
-         match:
-          - context:
-              hsfcontext:
-                user_unit: 
-                  exact: UNSZ
-            route:
-             - destination:
-                 host: demo
-                 subset: UNSZ
-       - name: zbmix-env
-         match:
-          - context:
-              hsfcontext:
-                user_unit: 
-                  exact: ZBMIX
-            route:
-             - destination:
-                 host: demo
-                 subset: ZBMIX
-
----- 
-
-
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: demo/UnitRouter
-spec:
-  host: demo // 这个和上面的保持一致
-  subsets:
-    - name: CENTER
-      labels:
-        sigma.ali/unit: CENTER
-    - name: UNSH
-      labels:
-        sigma.ali/unit: UNSH
-    - name: UNSZ
-      labels:
-        sigma.ali/unit: UNSZ
-    - name: ZBMIX
-      labels:
-        sigma.ali/unit: ZBMIX
-
-
-----
-
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: VirtualService
-metadata:
-  name: demo/MachineRouter
-spec:
-  hosts:
-  - demo
-  dubbo:
-    - name: MachineRoomRouteDefault // 同机房
-      services:
-        - regex: *
-      routedetail:
-       - name: na61-samesite-route  // 把 na61 机房的流量打到 na61、na610 机房
-         match:
-          - sourcelables:
-              sigma.ali/site: na61
-         route:              
-           - destination:
-              host: demo
-              subset: na61
-           - destination:
-              host: demo
-              subset: na610
-              weight: 40
-       - name: na62-samesite-route  // 把 na62 机房的流量打到 na62 机房
-         match:
-          - sourcelables:
-             sigma.ali/site: na62
-         route:              
-          - destination:
-             host: demo
-             subset: na62
-       - name: default // 兜底路由,其他机房的流量随意打
-         route:
-          - destination:
-             host: demo
-    .....
-
---------
-
-apiVersion: service.dubbo.apache.org/v1alpha1
-kind: DestinationRule
-metadata:
-  name: demo/MachineRouter
-spec:
-  host: demo// 这个和上面的保持一致
-  subsets:
-    - name: na61
-      labels:
-        sigma.ali/site: na61
-    - name: na610
-      labels:
-        sigma.ali/site: na610
-    - name: na62
-      labels:
-        sigma.ali/site: na62
-    - name: na620
-      labels:
-        sigma.ali/site: na620
-    .....
-
-```
-
-
-
-以上面的配置为例,假设消费者在 CENTER 标的 na62 机房,请求上下文中的 user_unit 属于 CENTER
-
-那么我们有以下路由流程:
-
-我们经过 UnitRouter 时,地址被划分为四个部份
-
-CENTER:
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-
-UNSH
-
-```
-10.0.0.4:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-10.0.0.5:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-
-```
-
-
-
-UNSZ
-
-```
-10.0.0.6:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-10.0.0.7:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-
-```
-
-UNZBMIX
-
-```
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-因为 user_unit 属于 CENTER ,所以我们选择 CENTER 的部分,作为 MachineRoomRouter 的地址输入,即为
-
-CENTER
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-在第二步中,MachineRoomRoute 可以被划分为五个部份
-
-
-na61
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-
-na610
-
-```
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-na62
-
-```
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-na620
-
-```
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-fallback
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-
-10.0.0.4:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-10.0.0.5:12200?_p=hessian2&APP=demo&st=et12&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSH
-
-10.0.0.6:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-10.0.0.7:12200?_p=hessian2&APP=demo&st=SA128&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNSZ
-
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-由于消费者在 na62 机房发起调用,匹配了
-
-```
-       - name: na62-samesite-route  // 把 na62 机房的流量打到 na62 机房
-         match:
-          - sourcelables:
-             sigma.ali/site: na62
-         route:              
-          - destination:
-             host: demo
-             subset: na62
-
-```
-
-
-这个规则,那么就是选取
-
-na62
-
-```
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.8:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.9:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-10.0.0.10:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=UNZBMIX
-
-```
-
-而 UnitRouter 给 MachineRoomRouter 的输入为
-
-CENTER
-
-```
-10.0.0.1:12200?_p=hessian2&APP=demo&st=na61&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.3:12200?_p=hessian2&APP=demo&st=na610&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-10.0.0.4:12200?_p=hessian2&APP=demo&st=na620&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-
-两个取交集的结果为
-
-```
- 10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
-这个结果将做为一下路由的输出,重复前面的动作;
-
-如果这个路由规则已经结束,那么调用的地址将为
-
-```
-10.0.0.2:12200?_p=hessian2&APP=demo&st=na62&v=2.0&_TIMEOUT=3000&_ih2=y&mg=demohost&_CONNECTTIMEOUT=1000&_SERIALIZETYPE=hessian&ut=CENTER
-
-```
-
diff --git a/content/zh/docs/v3.0/references/routers/virtualservice.md b/content/zh/docs/v3.0/references/routers/virtualservice.md
new file mode 100644
index 0000000..b02f6e4
--- /dev/null
+++ b/content/zh/docs/v3.0/references/routers/virtualservice.md
@@ -0,0 +1,481 @@
+---
+type: docs
+title: "VirtualService"
+linkTitle: "VirtualService"
+weight: 30
+description: "入站流量的规则"
+---
+
+#### VirtualService
+`VirtualService`是用来处理入站流量的规则,也就是说用来描述哪些入站流量适用于该路由规则。
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| name | string |  应以 `应用名/Router类型`的方式来命名。`name`属性一经定义Router类型就确定下来了 | YES  |
+| hosts | string[] |  一般指应用名 | NO  |
+| dubbo | DubboRoute[] | dubbo 路由规则,顺序执行,符合条件立即返回 | NO |
+
+Router类型如下:
+
+| name|  Description |
+| --- | --- |
+| StandardRouter | 完全使用标准 VirtualService 描述的 Router |
+| 待补充 | 待补充 |
+
+
+#### DubboRoute
+`DubboRoute`是`VirtualService`中的属性,用来描述路由策略的边界。
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo: #DubboRoute
+  - name:
+    service:
+    fault:
+    mirror:
+    retries:
+    timeout:
+    routedetail:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| name | string | 规则的名字,方便识别规则用意 | NO |
+| services | StringMatch[] | 规则生效的服务名列表,可使用具体的服务名,也可以使用正则 * 的方式进行匹配;默认不配置,则代表所有的服务都生效 | |
+| fault | dubboFaultInject[] | 故障注入(未实现) | NO |
+| mirror | Destination | 镜像流量(未实现) | NO |
+| retries | DubboRetry[]  | 重试相关(未实现) | NO |
+| timeout | DubboTimeout[] | 超时相关(未实现) | NO |
+| routedetail | DubboRouteDetail[] | 具体的流量规则,顺序执行,符合条件立即返回 | YES |
+
+#### DubboRouteDetail
+`DubboRouteDetail`用来描述详细的路由规则
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail: #DubboRouteDetail
+    - name:
+      match:
+      route:
+      mirror:
+      retries:
+      timeout:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| name | string | 规则详情的名字,方便识别规则用意 | NO |
+| match | DubboMatchRequest[] | 匹配条件 | YES |
+| route | DubboRouteDestination[] | 符合条件的流量的实际目标地址 | YES |
+| mirror | Destination | 镜像流量(未实现) | NO |
+| retries | DubboRetry[]  | 重试相关(未实现) | NO |
+| timeout | DubboTimeout[] | 超时相关(未实现) | NO | 
+
+
+#### DubboMatchRequest
+`DubboMatchRequest`用来描述请求的匹配规则
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match: #DubboMatchRequest
+      - name:
+        method:
+        sourceLabels:
+        attachments:
+        headers:
+        threshold:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| name | string | 匹配规则名称 | YES |
+| method | DubboMethodMatch | 方法相关的匹配 | YES |
+| sourceLabels | map\<string, string\> | 调用端打的相关 lables, 包含应用名、机器分组、机器环境变量信息等; 对于 HSF-JAVA 来说,可以从上报的 URL 拿到对应的 key/value | YES |
+| attachments | DubboAttachmentMatch | 请求附带的其他信息,比如 HSF 请求上下文、Eagleeye 上下文等 | NO |
+| headers | map\<string, StringMatch\> | 通用的请求协议字段等,如接口名、方法名、超时等 | NO |
+| threshold | DoubleMatch | 调用的 subset 列表的机器,占整个 host 的阀值 | NO |
+
+由于 headers 、attachemes 、method 之间可能存在字段一样重复的情况,TODO 进一步细化
+
+#### DubboMethodMatch
+`DubboMethodMatch`是用来实现方法的匹配
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match:
+      - method: #DubboMethodRequest
+        - name_match:
+          argc:
+          args:
+          argp:
+          headers:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| name_match | StringMatch | 匹配请求中的调用方法名 | YES |
+| argc | int | 匹配请求的参数个数 | NO |
+| args | DubboMethodArg[]| 为 DubboMethodArg 类型的数组,表示每个参数值需要满足的条件 | NO |
+| argp | StringMatch[] | 匹配请求的参数类型 | NO |
+| headers | map\<string, StringMatch\> | 预留 | NO |
+
+#### DubboMethodArg
+`DubboMethodArg`用来实现方法参数的匹配
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match:
+      - method:
+        - args: #DubboMethodArg
+          - index:
+            str_value:
+            type:
+            num_value:
+            bool_value:
+            reserve:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| index | uint32 | 匹配参数的位置,index字段从1开始(即第$index个参数) | YES |
+| type | string | 匹配参数的类型,以java的 string 类型为例,该字段取值 java.lang.String,该字段默认为 java.lang.String | YES |
+| str_value | ListStringMatch | 匹配参数的值,根据$type进行解析 ListStringMatcher:匹配 java.lang.String) | NO |
+| num_value | ListDoubleMatch | 数值类型匹配 | NO |
+| bool_value | BoolMatch | bool 值类型匹配| NO |
+| reserve | reserve  | 复杂类型的匹配,暂时不定义| NO |
+
+
+#### DubboAttachmentMatch
+`DubboAttachmentMatch`用来对任意对象的完全匹配
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match:
+      - attachments: #DubboAttachmentMatch
+          eagleeyecontext:
+          dubbocontext:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| eagleeyecontext| map\<string, StringMatch\> | 鹰眼上下文 | NO |
+| dubbocontext| map\<string, StringMatch\> | Dubbo 请求上下文 | NO |
+
+#### ListStringMatch
+`ListStringMatch`是一组`StringMatch`集合,任何一个 `StringMatch`匹配则匹配
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match:
+      - method:
+        - args:
+          - index: 1
+            str_value:  #ListStringMatch
+              oneof:
+              - regex: "*abc*"
+              - exact: parameter-1
+```
+
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| oneof | StringMatch[] | 任何一个`StringMatch`匹配则匹配 | NO |
+
+#### StringMatch
+`StringMatch`用来描述字符串匹配规则
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - service: #StringMatch
+    - exact: org.apache.dubbo.demoService:1.0.0
+    - prefix: org.apache.dubbo.hello
+    - regex: org.apache.dubbo.*Service:2.0.0
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| exact | string (oneof)  | 完全匹配 | NO |
+| prefix | string (oneof)  | 前缀匹配 | NO |
+| regex | string (oneof)  | [正则匹配](https://github.com/google/re2/wiki/Syntax)  | NO |
+| noempty | string (oneof)  | 非空字符匹配 | NO |
+| empty | string (oneof)  | 空字符匹配 | NO |
+
+
+#### ListDoubleMatch
+`ListDoubleMatch`是一组`DoubleMatch`集合,任何一个 `DoubleMatch`匹配则匹配参数
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match:
+      - method:
+        - args:
+          - index: 1
+            type: java.lang.Double
+            num_value: #ListDoubleMatch
+              oneof:
+              - range:
+                  start: 1
+                  end: 100
+                  
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| oneof | DoubleMatch[] | 任何一个`DoubleMatch`匹配则匹配 | NO |
+
+#### DoubleMatch
+`DoubleMatch`用于匹配 `int`, `long`, `double`类型的数值
+
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match:
+      - method:
+        - args:
+          - index: 1
+            type: java.lang.Double
+            num_value:
+              oneof: #DoubleMatch[]
+              - range:
+                  start: 1
+                  end: 100
+              #假设当前输入的Double类型的参数值为x,
+              #则下面表达式的意思是:x%mode=exact, 
+              #即当x%10=6才匹配
+              - exact: 6
+                mode: 10
+                  
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| exact | double(oneof)  | 数值完全匹配| NO |
+| range | DoubleRangeMatch(oneof)  | 数值范围匹配 | NO |
+| mode | double | 取模操作,需要与上面两个语义一起配置使用 | NO |
+
+#### DoubleRangeMatch
+`DoubleRangeMatch`是对`double`值的范围进行匹配
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match:
+      - method:
+        - args:
+          - index: 1
+            type: java.lang.Double
+            num_value:
+              oneof:
+              - range: #DoubleRangeMatch
+                  start: 1.2
+                  end: 1000.5
+                  
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| start | double | 数值大于或等于 | YES |
+| end | double  | 数值小于 | YES |
+
+
+#### BoolMatch
+`BoolMatch`用来对`true`, `false`的完全匹配
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match:
+      - method:
+        - args: 
+          - index: 1
+            type: java.lang.Boolean
+            bool_value: #BoolMatch
+              - exact: true
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| exact | bool(oneof) | `true`, `false` ,完全匹配 | |
+
+#### ObjectMatch(未实现)
+`ObjectMatch`用来对任意对象的完全匹配
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - match:
+      - method:
+        - args: 
+          - index: 1
+            type: java.lang.String
+            str_value:
+              oneof:
+              - regex: "*abc*"
+              - exact: parameter-1
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| type | string | 匹配参数的类型,以java的 string 类型为例,该字段取值 java.lang.String,该字段默认为 java.lang.String | YES |
+| str_value | ListStringMatch | 匹配参数的值,根据$type进行解析 ListStringMatcher:匹配 java.lang.String) | NO |
+| num_value | ListDoubleMatch | | NO |
+| bool_value | BoolMatch | | NO |
+
+#### DubboRouteDestination
+`DubboRouteDestination`用来描述流量到目标地址的策略
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - route: #DubboRouteDestination
+        destination:
+        weight: 50
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| destination | DubboDestination | 路由目标 Destination  | YES |
+| weight | int  | 路由权重  | NO  |
+
+#### DubboDestination
+`DubboDestination`用来描述路由流量的目标地址
++ 使用示例
+```yaml
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata:
+  name: demo/StandardRouter
+spec:
+  hosts:
+  dubbo:
+  - routedetail:
+    - route: #DubboRouteDestination
+        destination:
+          host:
+          subnet:
+          port:
+          fallback:
+```
++ 属性说明
+
+| Field | Type | Description | Required |
+| --- | --- | --- | --- |
+| host | string | 注册中心里面对应的`key`值,现在是接口名 |YES|
+| subset | string | 地址列表 | YES |
+| port | int| 端口号 | YES |
+| fallback | DubboDestination | fallback到的另外一个地址列表 | NO |
\ No newline at end of file
diff --git a/static/imgs/v3/concepts/what-is-traffic-control.png b/static/imgs/v3/concepts/what-is-traffic-control.png
new file mode 100644
index 0000000..7b98460
Binary files /dev/null and b/static/imgs/v3/concepts/what-is-traffic-control.png differ