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

科技资讯 投稿 7300 0 评论

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

背景信息

可以使用标签路由对不同环境中的不同版本进行流量隔离,将秒杀订单流量或不同渠道订单流量路由到特殊环境,将正常的流量路由到日常环境。即使特殊环境异常,本应进入特殊环境的流量也不会进入日常环境,不影响日常环境的使用。

启动运行Dubbo-Admin

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

git clone https://github.com/apache/dubbo-admin.git

直接可以下载到IDE中

    dubbo-admin-distribution:主要用于操作安装和打包使用的项目组件
  • dubbo-admin-server:dubbo-admin服务的后台服务springboot类型的项目
  • dubbo-admin-test:dubbo-admin服务的测试服务
  • dubbo-admin-ui:dubbo-admin的ui服务,主要会显示前端的ui页面。

通过源码打包运行

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

Dubbo-Admin 动态进行流量隔离

Dubbo提供动态流量隔离的服务治理能力,可以在无需重启应用的情况下,动态进行流量隔离。Dubbo可以通过XML配置,注解配置,动态配置实现流量隔离,这里主要介绍动态配置的方式。

允许多个Provider端服务

标签路由规则

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

标签路由

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

---
  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"]
 ...

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

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

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

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

路由规则的优先级

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

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

运行服务提供者

开发服务消费者

RpcContext.getContext(.setAttachment("dubbo.tag",name;

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

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

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

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

编程笔记 » [Dubbo3终极特性]「流量治理体系」一文教你如何通过Dubbo-Admin实现动态进行流量隔离机制

赞同 (37) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽