Dubbo 如何查看元数据中心中的数据(Dubbo 2.7.X)

dubbo中元数据是啥?

元数据就是描述数据的数据,比如服务的名称,服务地址,方法列表,方法参数,服务版本等等。

上一篇介绍了如何去部署我们新版本的Dubbo Admin(2.7),这篇主要说下怎么去查看注册中心中的数据。
新版的Dubbo Admin将注册中心拆分出来,元数据独立出来,可以使用zk,redis等。如果dubbo用的还是2.7之前的,那么在新版Admin中是看不见元数据的。
如果需要看到元数据,可以看看上一篇文章。最终效果如下:
Dubbo 如何查看元数据中心中的数据(Dubbo 2.7.X)_第1张图片
获取元数据示例

com.demo.demoapi.service.providers.DemoService 是我写的一个demo。里面有个getMetadata方法,是用来获取DemoService的元数据信息的,
通过dubbo admin 测试接口或者通过接口调用都可以获取到元数据信息。如下:
Dubbo 如何查看元数据中心中的数据(Dubbo 2.7.X)_第2张图片

接口调用获取:
Dubbo 如何查看元数据中心中的数据(Dubbo 2.7.X)_第3张图片
获取元数据代码分析

消费者代码
Dubbo 如何查看元数据中心中的数据(Dubbo 2.7.X)_第4张图片

@RequestMapping("/getMetadata")
public String getMetadata() {
    String interfaceName = demoService.getClass().getInterfaces()[1].getName();
    return demoService.getMetadata(interfaceName);
}

api代码
在这里插入图片描述

String getMetadata(String interfaceName);

提供者代码
Dubbo 如何查看元数据中心中的数据(Dubbo 2.7.X)_第5张图片

@Override
public String getMetadata(String interfaceName) {
    CuratorFramework client = null;
    try {
        client = CuratorFrameworkFactory.newClient("127.0.0.1:2181", new ExponentialBackoffRetry(1000, 3));
        client.start();
        String path = "/dubbo/metadata/" + interfaceName + "/provider/providers";
        if (client.checkExists().forPath(path) == null) {
            return null;
        }
        String metadata = new String(client.getData().forPath(path));
        return metadata;
    } catch (Exception ex) {
        return "未获取到数据源";
    } finally {
        if (client != null) {
            client.close();
        }
    }
}

核心代码也看出了了,就是涉及到 CuratorFramework这块的,Curator就是一套zookeeper的客户端框架,相当于封装了一层,让开发者操作zk更方便,不用管
太多底层的东西。具体可以看下 Curator的 说明。这里代码就是创建一个zk客户端,然后获取dubbo/metadata节点下相应服务的数据。
当然如果不想自己写代码,也可以用客户端软件来直接查看,比如:
Dubbo 如何查看元数据中心中的数据(Dubbo 2.7.X)_第6张图片

你可能感兴趣的:(Java)