目前公司有的項目依舊在使用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