【Dubbo3终极特性】「流量治理体系」一文教你如何通过Dubbo-Admin实现动态进行流量隔离机制

简介: 【Dubbo3终极特性】「流量治理体系」一文教你如何通过Dubbo-Admin实现动态进行流量隔离机制

背景信息


如果一个应用有多个版本在线上同时运行,部署在不同环境中,如日常环境和特殊环境,则 可以使用标签路由对不同环境中的不同版本进行流量隔离,将秒杀订单流量或不同渠道订单流量路由到特殊环境,将正常的流量路由到日常环境。即使特殊环境异常,本应进入特殊环境的流量也不会进入日常环境,不影响日常环境的使用。




启动运行Dubbo-Admin


在运行之前,我们需要保障进行运行对应的Dubbo-Admin服务,可以参考  【Dubbo3终极特性】「流量治理体系」一文教你如何搭建Dubbo3的控制台服务Dubbo-Admin,进行搭建和运行启动Dubbo-Admin服务。


因为dubbo-admin-server会将dubbo-admin-ui打包为资源文件,所以启动dubbo-admin-server就可直接访问页面了


我们在这里可以直接下载clone源码

git clone https://github.com/apache/dubbo-admin.git
复制代码

直接可以下载到IDE中

image.png

  • dubbo-admin-distribution:主要用于操作安装和打包使用的项目组件


  • dubbo-admin-server:dubbo-admin服务的后台服务springboot类型的项目


  • dubbo-admin-test:dubbo-admin服务的测试服务


  • dubbo-admin-ui:dubbo-admin的ui服务,主要会显示前端的ui页面。



通过源码打包运行


  1. dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址
  2. 构建
  • mvn clean package -Dmaven.test.skip=true
  1. 启动
  • mvn --projects dubbo-admin-server spring-boot:run或者
  • cd dubbo-admin-distribution/target; java -jar dubbo-admin-${project.version}.jar
  1. 访问 http://localhost:38080

image.png

可以直接再IDE的md文件中进行允许编译对应的dubbo-admin的代码以及运行服务。




Dubbo-Admin 动态进行流量隔离


Dubbo提供动态流量隔离的服务治理能力,可以在无需重启应用的情况下,动态进行流量隔离。


Dubbo可以通过XML配置,注解配置,动态配置实现流量隔离,这里主要介绍动态配置的方式。



允许多个Provider端服务


你可以直接进行运行服务进行运行多个实例。如下所示。

image.png

当然也可以通过VM参数进行调整为不同的dubbo.protocol.port,方便我们进行路由转发机制。



标签路由规则


将服务提供者进行分组,约束流量只在指定分组中流转,从而实现流量隔离的目的,有两种方式可以完成实例分组,分别是动态规则打标和静态规则打标


2.1 动态规则相较于静态规则优先级更高

image.png



标签路由


登录Dubbo-Admin控制台

image.png

用户名为root,密码为root。

在左侧导航栏选择服务治理 > 标签路由。

image.png

点击创建按钮,在创建新标签规则面板中,填写规则内容,然后单击保存。

image.png

配置模板

---
  force: false
  runtime: true
  enabled: true
  key: application-provider
  tags:
    - name: tag1
      addresses: ["127.0.0.1:20880"]
    - name: tag2
      addresses: ["127.0.0.1:20881"]
 ...
复制代码

对于流量隔离场景,只需要理清楚以下问题基本就知道配置该怎么写了:



修改服务所属提供者应用的配置。


应用:scope: application, key: app-name(还可使用services指定某几个服务)。


当路由结果为空,是否强制返回。


  • force=false: 当路由结果为空,降级请求tag为空的提供者。
  • force=true: 当路由结果为空,直接返回异常。



路由规则的优先级


priority=1: 路由规则的优先级,用于排序,优先级越大越靠前执行,可不填,缺省为 0。

配置是否只对某几个特定实例生效。


所有实例:addresses: ["0.0.0.0"] 或addresses: ["0.0.0.0:*"]   具体由side值决定。


指定实例:addersses[实例地址列表]。



运行服务提供者


可以从dubbo-admin中看到对应的服务已经注册上来了

image.png



开发服务消费者

image.png

RpcContext.getContext().setAttachment("dubbo.tag",name);
复制代码

切换不同的tag参数,即可完成流量转发:tag1 tag2

我们通过name参数进行切换标签


请求 GET http://127.0.0.1:8082/add?name=tag1&age=12

image.png

我们可以看到打印了对应provider1服务的日志

请求  GET http://127.0.0.1:8082/add?name=tag2&age=12

image.png

我们可以看到打印了对应provider2服务的日志


小伙伴们,你们学会了嘛?




相关文章
|
1月前
|
存储 负载均衡 Dubbo
Dubbo阶段性总结及3.0新特性
该文章是对Dubbo技术的一次总结,包括对Dubbo框架的整体架构、服务提供者发布注册原理、SPI机制、服务消费者订阅原理、服务调用原理、线程池模型、负载均衡机制、服务容错机制等内容的回顾,并简要介绍了Dubbo 3.0的新特性。
Dubbo阶段性总结及3.0新特性
|
1月前
|
负载均衡 Dubbo Java
Dubbo服务Spi机制和原理
该文章主要介绍了Dubbo中的SPI(Service Provider Interface)机制和原理,包括SPI的基本概念、Dubbo中的SPI分类以及SPI机制的实现细节。
Dubbo服务Spi机制和原理
|
4月前
|
XML Cloud Native Dubbo
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南(一)
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南
253 1
|
4月前
|
Dubbo Cloud Native 应用服务中间件
【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中心、注册中心的原理及开发实战(中)
【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中心、注册中心的原理及开发实战(中)
137 1
|
4月前
|
设计模式 JSON Dubbo
超越接口:探索Dubbo的泛化调用机制
超越接口:探索Dubbo的泛化调用机制
247 0
|
4月前
|
XML Dubbo Java
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南(二)
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南
271 0
|
4月前
|
Kubernetes Dubbo 应用服务中间件
【Dubbo3终极特性】「流量治理体系」一文教你如何搭建Dubbo3的控制台服务Dubbo-Admin
【Dubbo3终极特性】「流量治理体系」一文教你如何搭建Dubbo3的控制台服务Dubbo-Admin
282 0
|
4月前
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
|
21天前
|
Dubbo Java 应用服务中间件
💥Spring Cloud Dubbo火爆来袭!微服务通信的终极利器,你知道它有多强大吗?🔥
【8月更文挑战第29天】随着信息技术的发展,微服务架构成为企业应用开发的主流模式,而高效的微服务通信至关重要。Spring Cloud Dubbo通过整合Dubbo与Spring Cloud的优势,提供高性能RPC通信及丰富的生态支持,包括服务注册与发现、负载均衡和容错机制等,简化了服务调用管理并支持多种通信协议,提升了系统的可伸缩性和稳定性,成为微服务通信领域的优选方案。开发者仅需关注业务逻辑,而无需过多关心底层通信细节,使得Spring Cloud Dubbo在未来微服务开发中将更加受到青睐。
44 0
|
1月前
|
负载均衡 Dubbo 应用服务中间件
框架巨擘:Dubbo如何一统异构微服务江湖,成为开发者的超级武器!
【8月更文挑战第8天】在软件开发中,微服务架构因灵活性和可扩展性备受欢迎。面对异构微服务的挑战,Apache Dubbo作为高性能Java RPC框架脱颖而出。它具备服务注册与发现、负载均衡及容错机制等核心特性,支持多种通信协议和序列化方式,能有效连接不同技术栈的微服务。Dubbo的插件化设计保证了面向未来的扩展性,使其成为构建稳定高效分布式系统的理想选择。
35 5