dubbo-2.5.4版本标签使用不当,导致初始化过慢的问题

目前公司有的项目依旧在使用dubbo2.5.4版本,在dubbo初始化的时候非常慢。导致我们在本地测试的时候跑一次测试类要5分钟。于是想到了优化,初步的想法是耗时操作应该是在加载注册中心和建立TCP连接的时候。所以就直接将断点加在了ReferenceConfig#createProxy中的loadRegistries

此时发现了一个奇怪的问题就是有两个注册中心URL(两个RegistryConfig实例),一个是配置的注册中心地址,一个默认生成的本机0.0.0.0:9090地址,在连接默认地址的非常慢。

检查dubbo配置文件,发现使用了两个registry标签,其中一个就是用来配置不检查注册中心的。但是实际上这相当于配置连两个注册中心,但是一个没有配置地址,而真正的注册中心检查也没有生效(我们的注册中心使用的是ZK集群,从来没挂过),但是在2.5.4版本dubbo不会报错,而是解析多个标签再生成一个名为RegistryConfig2的实例。所以配置为一个标签就解决了。

其实这个问题主要的原因还是对dubbo的配置不熟悉,原来的开发人员没有仔细看文档,不过在2.7.0版本dubbo已经把这个点给优化掉了,2.7.0版本在加载注册中心urls的时候,会加一步checkRegistry,如果注册中心地址为空,会直接报错的。

转载于:https://juejin.im/post/5cf75ea2e51d45777540fd6f

你可能感兴趣的:(java,网络)