目前公司有的项目依旧在使用dubbo2.5.4版本,在dubbo初始化的时候很是慢。致使咱们在本地测试的时候跑一次测试类要5分钟。因而想到了优化,初步的想法是耗时操做应该是在加载注册中心和创建TCP链接的时候。因此就直接将断点加在了ReferenceConfig#createProxy
中的loadRegistries
。测试
此时发现了一个奇怪的问题就是有两个注册中心URL(两个RegistryConfig实例),一个是配置的注册中心地址,一个默认生成的本机0.0.0.0:9090
地址,在链接默认地址的很是慢。优化
检查dubbo配置文件,发现使用了两个registry标签,其中一个就是用来配置不检查注册中心的。可是实际上这至关于配置连两个注册中心,可是一个没有配置地址,而真正的注册中心检查也没有生效(咱们的注册中心使用的是ZK集群,历来没挂过),可是在2.5.4版本dubbo不会报错,而是解析多个标签再生成一个名为RegistryConfig2
的实例。因此配置为一个标签就解决了。url
其实这个问题主要的缘由仍是对dubbo的配置不熟悉,原来的开发人员没有仔细看文档,不过在2.7.0版本dubbo已经把这个点给优化掉了,2.7.0版本在加载注册中心urls的时候,会加一步checkRegistry
,若是注册中心地址为空,会直接报错的。code