环境使用
nacos server: 2.5.0;
dubbo admin: develop分支;dubbo admin github
npm: 11.3.0;
IntelliJ IDEA 2025.1; Apache Maven 3.9.0; Java version: 17.0.9
nacos server启动
./startup.sh -m standalone
,启动之后,访问浏览器页面:localhost:8848正常展示;
dubbo admin配置
下载dubbo admin源码到本地,并使用idea打开;
git clone git@github.com:apache/dubbo-admin.git
修改dubbo-admin-server模块
源码下载下来之后默认使用的是zookeeper作为注册中心,需要进行修改来使用nacos作为注册中心。
首先可以看到项目使用的是properties格式的配置文件进行配置,在application.properties默认激活的是dev的profile:spring.profiles.active=dev
,因此需要关注application.properties和application-dev.properties两个文件的修改。
首先修改application.properties文件,注释掉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
添加nacos作为配置中心的配置:admin.config-center=nacos://127.0.0.1:8848?&namespace=9bf28ee1-daf9-4932-a453-a18de35a8be8&group=dubbo&username=nacos&password=nacos
上面的namespace是我们在nacos中创建的命名空间之后自动生成的命名空间ID,需要先在nacos中创建命名空间。在配置文件中可以观察到推荐的配置方式是将一些nacos的配置信息拼接到url地址上面,而不再单独的使用例如admin.config-center.username
等来单独配置这些属性。

注释掉下方的注册中心地址配置:dubbo.registry.address=${admin.registry.address}
。
修改application-dev.properties文件,目前该文件中只看到zookeeper的相关配置,注释掉即可。

可以看到经过上面的修改我们只添加了配置中心的配置,接下来继续添加注册中心和和元数据中心的相关配置。
进入nacos的控制台,我这里提前创建好了两个新的命名空间:

在上面添加配置中心配置的时候使用的是命名空间ID为9bf28ee1-daf9-4932-a453-a18de35a8be8即名为config的命名空间。接下来我们切换到配置列表界面,在config命名空间下添加配置:

Data Id必须为dubbo.properties
,其他的配置可以变化;dubbo.properties中的内容为:dubbo.registry.address=nacos://127.0.0.1:8848?group=DEFAULT_GROUP&namespace=public&username=nacos&password=nacos
dubbo.metadata-report.address=nacos://127.0.0.1:8848?namespace=e4dbdf98-93c4-425c-8221-d8b7c67e96b3&group=demo&username=nacos&password=nacos
上面metadata-report address地址中的namespace则是我们之前创建的名称为metadata的命名空间的ID值。
接下来直接运行启动类DubboAdminApplication即可。
dubbo admin ui配置
我们进入dubbo-admin-ui模块开启命令行,执行npm install
命令;随后执行npm run dev
启动ui。

打开浏览器访问界面,默认的用户名/密码为:root/root。

到此,我们的dubbo admin已经成功启动了。
启动dubbo服务提供者
这里假设我们已经有了一个注册中心为nacos的服务提供者程序,需要保证的是我们配置的metadata-report地址和group与我们在dubbo admin中配置的一致:

检查一致之后,启动服务提供者程序并切换到nacos的配置管理界面找到对应的命名空间刷新:

我的示例程序中定义了两个服务接口,因此可以看到这里出现了两个接口。
@DubboService(group = "demo")
public class DemoServiceImpl implements DemoService {
@Override
public String sayHello(String name) {
return "Hello " + name;
}
}
@DubboService(group = "demo")
public class HelloFilterImpl implements HelloFilter {
@Override
public String helloFilter() {
return "Hello Filter";
}
}
验证dubbo admin
进入dubbo admin浏览器界面的服务查询页面,可以看到我们定义的dubbo服务:

点进DemoService的服务,点击详情查看一下详细的信息:

可以看到能够正常展示出来并且元数据也正常展示。
接下来我们对接口进行测试,点击服务旁边的测试按钮这样可以直接发送请求来测试我们暴露出来的方法:

接口测试结果:

可以看到接口成功返回。
问题汇总
1. 执行npm install
命令的时候,出现下面的异常:

这个错误是因为 淘宝镜像源(registry.npm.taobao.org)的 SSL 证书过期,导致 npm 无法安全下载包。
解决方法:将package-lock.json中的registry.npm.taobao.org
使用registry.npmmirror.com
进行全部替换。
2. 执行npm run dev的时候,出现下面的异常:Error: error:0308010C:digital envelope routines::unsupported
:

通常出现在 Node.js 18+ 版本中,是由于 OpenSSL 3.0 默认启用更严格的加密策略,而某些旧项目或工具链(如 Webpack 4、Vue CLI 等)使用了不兼容的加密方式导致的。
解决方法:在运行命令前添加环境变量,允许旧版加密方式:export NODE_OPTIONS=--openssl-legacy-provider # Linux/macOS
补充:在经过一段时间的运行之后,上面问题2中使用export解决问题的方式存在问题,如果同时也在使用vs code软件的情况下,这种方式会影响vs code的启动,导致vs code启动时总是会出现Unable to resolve your shell environment: Unexpected exit code from spawned shell
的错误提示。

因此在搜索相关资料明确问题的原因(参考文章)之后,得知是添加到.bash_profile文件中的NODE_OPTIONS的问题。修改后的问题处理方式为在程序启动时添加NODE_OPTIONS的方式来解决,命令如下:NODE_OPTIONS="--openssl-legacy-provider" npm run dev
,可以成功启动。
