网上看到很多教程,由于Dubbo 的升级,大多都过时了。本文记录笔者的实践。
1. ZooKeeper,
没有变化,略。
2. Dubbo 2.7.3
在POM 中,很多人还在使用老的ali 的依赖包和老的zk cleint 包。本人采用全新的apache Dubbo 依赖,详细如下:
<!-- Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator-framework.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator-framework.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-metadata-report-zookeeper</artifactId>
<version>${dubbo.version}</version>
</dependency>
3. Dubbo Admin
老版本是以war 包形式提供,新版直接是 spring Boot App。
https://github.com/apache/dubbo-admin
3.1 没有编译好直接用的 JAR, 需要自己编译 工程 “dubbo-admin-server” 得到 jar 包,然后直接运行即可,
3.2 默认8080 端口。 如果要改, 编辑 “application.properties”, 加入如下行:
server.port: 6868
3.3 如果zookeeper 有其他配置, 同样修改该文件:
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
#group
admin.registry.group=dubbo
admin.config-center.group=dubbo
admin.metadata-report.group=dubbo
admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
admin.apollo.appId=test
admin.apollo.env=dev
admin.apollo.cluster=default
admin.apollo.namespace=dubbo
3.4. 重点来了, 配置好后,Admin 不能读取元数据。
报如下错误:
https://github.com/apache/dubbo-admin/issues/456
解决方法:
https://github.com/apache/dubbo-admin/commit/419c7d35c29482c024123628995e3855eab72f19#diff-faafa5ff0a309cfcdba8a5ca4f18954eL72
回滚如下代码,就正常了。
privatefinalstaticStringMETADATA_NODE_NAME="service.data";
returntoRootDir()+metadataIdentifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.PATH)+
Constants.PATH_SEPARATOR+METADATA_NODE_NAME;
3.5 如果有zookeeper 集群, 则如下配置:
参照:
https://github.com/apache/dubbo-admin/issues/461
admin.registry.address=zookeeper://ip:port?backup=ip:port,ip:port
#admin.config-center=zookeeper://127.0.0.1:2181
#admin.metadata-report.address=zookeeper://127.0.0.1:2181