流量治理规则
流量管理
流量治理的本质是根据既定的路由规则将请求分发到应用服务,如下图所示
in
- 可以存在多个路由规则,不同的路由规则有优先级。例如:Router(1) -> Router(2) -> … -> Router(n)
- 一个路由规则可以路由到多个不同的应用服务。例如:Router(2) 可以路由到 Service(1) 或 Service(2)
- 多个不同的路由规则可以路由到同一个应用服务。例如:Router(1) 和 Router(2) 都可以路由到 Service(2)
- 路由规则也可以不路由到任何应用服务。例如:Router(m) 不路由到任何 Service,所有命中 Router(m) 的请求都会因为没有对应的应用服务处理而导致错误
- 应用服务可以是单个实例,也可以是应用集群。
Dubbo Mesh 格式流量治理介绍
Dubbo 提供支持 Mesh 方式的流量治理策略,可以轻松实现 A/B 测试,[金丝雀发布](./mesh-style/canary -deployment/), 蓝绿部署 等能力。
Dubbo 将整个流量治理分为两部分:VirtualService 和 DestinationRule。当 Consumer 接收到请求时,会根据 DubboRoute 和 [DubboRouteDetail](./mesh- style/virtualservice/#dubboroutedetail) 匹配到 DubboDestination 中的对应子网,最后根据 DestinationRule 中配置的 子网 信息中的标签找到需要进行特定路由的对应 Provider 集群。in
- VirtualService 主要处理入站流量分流规则,支持服务级别和方法级别的分流。
- DubboRoute 主要解决服务级别的分流问题。同时,也提供了重试机制、超时、故障注入、镜像流量等能力。
- DubboRouteDetail 主要解决一个服务中的方法级别的分流问题。支持方法名、方法参数、参数个数、参数类型、Header 等各个维度的分流能力。同时,也支持方法级别的重试机制、超时、故障注入、镜像流量等能力。
- DubboDestination 用于描述路由流量的目标地址,支持 host、port、子网等方式。
- DestinationRule 主要处理目标地址规则,可以通过 host、子网等与 Provider 集群关联。同时,可以通过 trafficPolicy 实现负载均衡。
这种设计理念很好的解决了流量分流与目标地址之间的耦合问题。不仅简化了配置规则,有效避免了配置冗余的问题,而且支持 VirtualService 和 DestinationRule 的任意组合,可以灵活支持各种业务使用场景。
上次修改时间:2023 年 1 月 2 日:增强 en 文档 (#1798) (95a9f4f6c1c)