20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题

文章目录

    • 一. 项目拉取
    • 二. 前后端项目启动
    • 三. 显示元数据
    • 四. 简单一提: 服务熔断及服务降级
      • 1. dubbo-admin带的服务熔断及服务降级
      • 2. 旧版控制台
      • 3. dubbo服务降级熔断 原理

一. 项目拉取

官网搭建dubbo-admin

官网clone对应项目

  • 该admin控制台为前后端分离项目,需要分开跑前后端程序
  • url: https://github.com/apache/dubbo-admin

这里我使用IDEA进行 clone操作

由于Dubbo的更新,Readme可能会变,这里放张截图
20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第1张图片

目录结构如图:
20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第2张图片

二. 前后端项目启动

后端项目

  • 修改注册中心配置,启动主启动类
  • 或者修改配置后,mvn clean package打成jar包运行

这里是在IDE里启动

前端项目

  • 命令行打开到dubbo-admin-ui所在文件夹
  • 第一次运行,先执行npm install
  • 再npm run dev
  • 访问localhost:808120.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第3张图片
    20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第4张图片

这里写了个provider的demo,所以才有服务查询结果

三. 显示元数据

参考该 issues
官方文档提供的步骤

20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第5张图片

步骤

  • dubbo-admin-server,添加如下图代码
  • dubbo远程通信的服务提供者,的配置中添加dubbo.metadatareport.address=zookeeper://127.0.0.1:2181。我这使用的是SpringBoot搭建的服务提供者,pom如下
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>2.7.3version>
        dependency>

dubbo-admin-server

    @PostConstruct
    public void init() throws Exception {
        CuratorFramework zkClient = CuratorFrameworkFactory.builder().
                connectString("127.0.0.1:2181").
                retryPolicy(new ExponentialBackoffRetry(1000, 3)).build();
        zkClient.start();

        if (zkClient.checkExists().forPath("/dubbo/config/dubbo/dubbo.properties") == null) {
            zkClient.create().creatingParentsIfNeeded().forPath("/dubbo/config/dubbo/dubbo.properties");
        }
        zkClient.setData().forPath("/dubbo/config/dubbo/dubbo.properties", ("dubbo.registry.address=zookeeper://127.0.0.1:2181\n" +
                "dubbo.metadata-report.address=zookeeper://127.0.0.1:2181").getBytes());
    }

服务提供方配置
20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第6张图片

这里要注意版本!版本!!版本。原先我在服务提供方使用2.7.5的jar,但是按这样配置,显示不出元数据,应该是元数据的配置写法和版本有关。后来改成2.7.3,就可以了。此提供方配置的写法,对应的是2.7.3的jar

        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>2.7.3version>
        dependency>

显示结果
20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第7张图片

四. 简单一提: 服务熔断及服务降级

网上很多视频是教旧版的dubbo-admin控制台,找了旧版的控制台进行比较

1. dubbo-admin带的服务熔断及服务降级

服务降级: 根据实际业务情况,调整流量,关闭不必要的服务,防止影响核心业务

  • 通过dubbo-admin控制台,在消费者处 — 点屏蔽服务。即: 在消费者处就不会发起远程调用了,直接返回null

服务容错 — 失败为null: 当服务超时,调用端发生了错误,进行容错机制

  • 通过dubbo-admin控制台,在消费者处 — 点容错。即: 在消费者处进行远程调用,成功则远程调用,失败则是返回null
  • 上面的是学习旧版dubbo-admin的笔记。现在没有发现直接点击的降级与容错
  • 降级熔断还可以用hystrix

2. 旧版控制台

20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第8张图片

  • 旧版控制台可以直接控制服务熔断与服务降级
  • 在新版控制台,没有发现这个功能…手动狗头。有发现的话,可以tell tell me

3. dubbo服务降级熔断 原理

只深入一点,没太深究

官方文档提供的描述

20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第9张图片
1. 简单说明: 其实就是往zookeeper放入对应的节点标记,mock=force为降级配置,mock=fail为熔断配置。之后调用前,先去zookeeper查看对应节点,进行判断后,再决定是否调用服务

2. debug查看:

  • 上面图中 registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&mock=force:return+null"));
  • debug时 对应的Registry实现类为ZookeeperRegistry,调用其register方法(该方法是在父类FailbackRegistry中)
    20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题_第10张图片
  • 主要逻辑在doRegister方法中,doRegister为FailbackRegistry的抽象方法,具体实现在ZookeeperRegistry
  • 这里是模版方法模式,真滴很常用! ,有兴趣可以了解下


zookeeper中查看该对应节点
在这里插入图片描述

你可能感兴趣的:(20.2.17 dubbo-admin控制台搭建、元数据不显示等相关问题)