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
- path:
- 推薦使用,配置中心位址,比如
- 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-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