天天看點

Dubbo Admin“無中繼資料資訊,請更新至Dubbo 2.7以上版本...” 解決方案

      dubbo目前更新至2.7以上版本,使用它的管理頁面元件dubbo admin時,出現無法顯示中繼資料的提示,即可以看到注冊的接口的名字,但是無法看見詳情如接口參數、釋出者消費者資訊等等。如下:

Dubbo Admin“無中繼資料資訊,請更新至Dubbo 2.7以上版本...” 解決方案

     解決方法官網也說了,就是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以上版本...” 解決方案

     或者重寫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