Dubbo Admin“无元数据信息,请升级至Dubbo 2.7以上版本...” 解决方案

      dubbo目前升级至2.7以上版本,使用它的管理页面组件dubbo admin时,出现无法显示元数据的提示,即可以看到注册的接口的名字,但是无法看见详情如接口参数、发布者消费者信息等等。如下:

在这里插入图片描述

     解决方法官网也说了,就是https://github.com/apache/dubbo-admin/wiki/Dubbo-Admin%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E

  • admin.config-center
    • 推荐使用,配置中心地址,比如admin.config-center="zookeeper://127.0.0.1:2181"
    • 需要在配置中心中,配置注册中心和元数据中心地址配置格式如下:
    • zookeeper
      • path: /dubbo/config/dubbo/dubbo.properties
      • content:
        dubbo.registry.address=zookeeper://127.0.0.1:2181
        dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
  • admin.registry.address
    • 不推荐使用,老版本的配置中心地址,比如:admin.registry.address="zookeeper://127.0.0.1:2181"
    • 如使用该配置,Dubbo Admin会将其作为注册中心和配置中心使用,元数据中心将无法使用,会影响服务测试等功能

    下面解释一下,首先下载ZooInspector,这个可以查看zk节点,方便后面新增节点。上面那段话的意思是,dubbo-admin-server工程中,application.properties文件中 仅配置config-center地址,不配置注册中心和元数据中心地址,项目通过配置中心去获得对应的注册中心和元数据中心地址。所以,要正确获得元数据信息,必须是:

  1)ZK中拥有节点/dubbo/config/dubbo/dubbo.properties;

  2)dubbo-admin仅保留config-center配置;

  3)provider的dubbo版本不能为2.7.5或以上,因为2.7.5又改了元数据的类型,无语ing目前这个很难解,推荐dubbo 2.7.3

  好了,我们进行改造!

  一、首先让ZK有dubbo节点,只要用ZooInspector创建就行了!这个最简单了!

Dubbo Admin“无元数据信息,请升级至Dubbo 2.7以上版本...” 解决方案_第1张图片

     或者重写dubbo-admin-server,添加一段代码,在启动前先插入节点!

public class DubboAdminApplication {

        private static final String DUBBO_PROP_NODE = "/dubbo/config/dubbo/dubbo.properties";
        private static final String DUBBO_REGISTRY_ADDR = "zookeeper://127.0.0.1:2181";
        private static final String DUBBO_METADATA_ADDR = "zookeeper://127.0.0.1:2181";
        
        public static void init() throws Exception {
        String dubboNodeContent = MessageFormat.format("dubbo.registry.address={0}\n" +
                "dubbo.metadata-report.address={1}", DUBBO_REGISTRY_ADDR, DUBBO_METADATA_ADDR);
        CuratorFramework zkClient = CuratorFrameworkFactory.builder().
                connectString("127.0.0.1:2181").
                retryPolicy(new ExponentialBackoffRetry(1000, 3)).build();
        zkClient.start();
 
        if (zkClient.checkExists().forPath(DUBBO_PROP_NODE) == null) {
            zkClient.create().creatingParentsIfNeeded().forPath(DUBBO_PROP_NODE);
        }
        zkClient.setData().forPath(DUBBO_PROP_NODE, dubboNodeContent.getBytes());
        System.out.println("新增zk节点数据成功!");
    }

 
    public static void main (String[] args) throws Exception{
        init();
        SpringApplication.run(DubboAdminApplication.class, args);
    }
}

    这个很简单,init函数就是插入节点的操作!后面我们放出来的jar包就是这个代码编译的哈哈!

    二、修改dubbo-admin-server的application.properties

server.port=38080  #让dubbo-admin管理页面以38080端口启动
# centers in dubbo2.7
#admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://127.0.0.1:2181
#admin.metadata-report.address=zookeeper://127.0.0.1:2181

admin.root.user.name=root
admin.root.user.password=root
#group
#admin.registry.group=dubbo
admin.config-center.group=dubbo
#admin.metadata-report.group=dubbo

  三、dubbo-provider

  必须是2.7.3,我这边是dubbo2.7.3搭配spring 2.2.2。

  经过以上改造,就能顺利解决元数据显示问题。我会上传一个已经编译好的dubbo-admin的jar包,里面已经添加了新增zk节点的代码,方便各位筒子直接下载运行!!

https://download.csdn.net/download/xiaxuepiaopiao/12296203

你可能感兴趣的:(Dubbo,Admin)