apache / dubbo-admin

The ops and reference implementation for Apache Dubbo
https://dubbo.apache.org
Apache License 2.0
3.98k stars 2.17k forks source link

DubboAdmin支持Dubbo3+Nacos做如下变更是否合适 #952

Open liudaac opened 1 year ago

liudaac commented 1 year ago

Environment

Steps to reproduce this issue

  1. 集成Dubbo3.x应用发现问题

NacosServiceMapping的初始化逻辑注入Url为metadataUrl,参考代码ConfigServer.getServiceMapping(ServiceDiscovery serviceDiscovery, InstanceRegistryCache instanceRegistryCache) 而目前按照Dubbo的处理逻辑,metadataUrl的group默认值为dubbo、registryUrl的group默认值为DEFAULT_GROUP,即存在metadataUrl与registryUrl不一致的情况,此时NacosServiceMapping使用metadataUrl初始化则导致getAllServiceNames()结果为空,现象为管理界面服务列表为空,此处应该修改为使用registryUrl进行初始化,才能使服务列表正常获取和显示,参考如下

@Bean
    @DependsOn("dubboRegistry")
    ServiceMapping getServiceMapping(ServiceDiscovery serviceDiscovery, InstanceRegistryCache instanceRegistryCache) {
        ServiceMapping serviceMapping = new NoOpServiceMapping();
        if (registryUrl == null) {
            return serviceMapping;
        }
        MappingListener mappingListener = new AdminMappingListener(serviceDiscovery, instanceRegistryCache);
        serviceMapping = ExtensionLoader.getExtensionLoader(ServiceMapping.class).getExtension(registryUrl.getProtocol());
        serviceMapping.addMappingListener(mappingListener);
        serviceMapping.init(registryUrl);
        return serviceMapping;
    }
wuwen5 commented 1 year ago

1148