dubbo管理控制臺(tái)找不到服務(wù) 解決小記

今天重新配置了下dubbo,結(jié)果發(fā)現(xiàn)管理控制臺(tái)上沒(méi)有顯示可用的服務(wù),由于前陣子剛配置的時(shí)候是沒(méi)有問(wèn)題的,于是開(kāi)始逐步排查。

項(xiàng)目注冊(cè)中心用的zookeeper集群,provider是采用jar包方式啟動(dòng)的,consumer在tomcat容器內(nèi)運(yùn)行,并且consumer已經(jīng)可以消費(fèi)到provider提供的服務(wù)了,說(shuō)明注冊(cè)中心已經(jīng)里面已經(jīng)有服務(wù)注冊(cè)。通過(guò)zookeeper客戶端連接到zk服務(wù)器上,也可以看到創(chuàng)建的服務(wù)節(jié)點(diǎn)

根目錄下有paopao,zookeeper兩個(gè)目錄,其中paopao是根據(jù)配置中注冊(cè)中心registry的group屬性分組標(biāo)識(shí)而創(chuàng)建的,zookeeper是zk默認(rèn)的節(jié)點(diǎn),paopao下面有兩個(gè)已經(jīng)注冊(cè)的服務(wù)節(jié)點(diǎn)。

然后查看dubbo-admin的配置,dubbo的管理控制臺(tái)是在單獨(dú)的tomcat下運(yùn)行的,安裝及配置可以參考http://dubbo.io/Administrator+Guide-zh.htm,找到webapps/ROOT/WEB-INF/dubbo.properties文件,其內(nèi)容如下:

dubbo.registry.address=zookeeper://192.168.199.191:2181?backup=192.168.199.192:2181,192.168.199.193:2181

dubbo.admin.root.password=Daniel

dubbo.admin.guest.password=guest

猛地發(fā)現(xiàn)registry沒(méi)有配置group分組!自己之前在生產(chǎn)者和消費(fèi)者的配置文件中也沒(méi)有顯式指明分組,默認(rèn)的group就為dubbo。現(xiàn)在由于在服務(wù)提供的配置文件中對(duì)registry顯式指明了group分組,因此管理控制臺(tái)的配置中如果沒(méi)有聲明group與provider、consumer的group一致,那么就找不到對(duì)應(yīng)的服務(wù)。

于是修改dubbo.properties文件,添加注冊(cè)中心分組:

dubbo.registry.group=paopao

滿懷著激動(dòng)的心情重啟了服務(wù),結(jié)果發(fā)現(xiàn)管理臺(tái)界面還是沒(méi)有找到服務(wù)!然后上網(wǎng)查找但是無(wú)奈網(wǎng)上dubbo相關(guān)的文檔和討論真的太少了,后來(lái)經(jīng)群里一個(gè)朋友的提醒,查看了${TOMCAT_HOME}/webapps/ROOT/WEB-INF/classes/META-INF/spring下的dubbo-admin.xml文件,dubbo管理控制臺(tái)在啟動(dòng)的時(shí)候會(huì)加載該xml文件并讀取里面的配置信息初始化dubbo和zookeeper,dubbo-admin.xml內(nèi)容如下:

<beans xmlns="http://www.springframework.org/schema/beans"

? ? ? ? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

? ? ? ? xmlns:context="http://www.springframework.org/schema/context"

? ? ? ? xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

? ? ? ? xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

? ? ? ? ? ? ? ? http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

? ? ? ? ? ? ? ? http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

? ? ? ? <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

? ? ? ? ? ? ? ? <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />

? ? ? ? ? ? ? ? <property name="ignoreResourceNotFound" value="true" />

? ? ? ? ? ? ? ? <property name="locations">

? ? ? ? ? ? ? ? ? ? ? ? <list>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <value>/WEB-INF/dubbo.properties</value>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <value>file://${user.home}/dubbo.properties</value>

? ? ? ? ? ? ? ? ? ? ? ? </list>

? ? ? ? ? ? ? ? </property>

? ? ? ? </bean>

? ? ? ? <dubbo:application name="dubbo-admin" />

? ? ? ? <dubbo:registry address="${dubbo.registry.address}" check="false" file="false" />

? ? ? ? <dubbo:reference id="registryService" interface="com.alibaba.dubbo.registry.RegistryService" check="false" />

? ? ? ? <bean id="configService" class="com.alibaba.dubbo.governance.service.impl.ConfigServiceImpl" />

? ? ? ? <bean id="consumerService" class="com.alibaba.dubbo.governance.service.impl.ConsumerServiceImpl" />

? ? ? ? <bean id="overrideService" class="com.alibaba.dubbo.governance.service.impl.OverrideServiceImpl" />

? ? ? ? <bean id="ownerService" class="com.alibaba.dubbo.governance.service.impl.OwnerServiceImpl" />

? ? ? ? <bean id="providerService" class="com.alibaba.dubbo.governance.service.impl.ProviderServiceImpl" />

? ? ? ? <bean id="routeService" class="com.alibaba.dubbo.governance.service.impl.RouteServiceImpl" />

? ? ? ? <bean id="userService" class="com.alibaba.dubbo.governance.service.impl.UserServiceImpl">

? ? ? ? ? ? ? ? <property name="rootPassword" value="${dubbo.admin.root.password}" />

? ? ? ? ? ? ? ? <property name="guestPassword" value="${dubbo.admin.guest.password}" />

? ? ? ? </bean>

? ? ? ? <bean id="governanceCache" class="com.alibaba.dubbo.governance.sync.RegistryServerSync" />

</beans>

可以看到,該文件竟然默認(rèn)是沒(méi)有registry的group屬性的,因此只在dubbo.properties中添加分組配置根本不起作用。于是修改dubbo-admin.xml文件中的<dubbo:registry>項(xiàng)為:

<dubbo:registry group="${dubbo.registry.group}" address="${dubbo.registry.address}" check="false" file="false" />

保存后重啟tomcat實(shí)例,發(fā)現(xiàn)已經(jīng)注冊(cè)的服務(wù)提供者和消費(fèi)者信息,一切OK!

下面把provider和consumer的主要配置信息也貼出來(lái)供大家參考:

provider.xml:

? ? <!-- 提供方應(yīng)用信息,用于計(jì)算依賴關(guān)系 -->

? ? <dubbo:application name="paopao-provider"? />

? ? <!-- 使用zookeeper注冊(cè)中心暴露服務(wù)地址 -->

? ? <dubbo:registry group="paopao" address="zookeeper://192.168.199.191:2181?backup=192.168.199.192:2181,192.168.199.193:2181"/>


? ? <!-- 監(jiān)控中心配置,從注冊(cè)中心發(fā)現(xiàn)監(jiān)控中心地址 -->

? ? <dubbo:monitor protocol="registry"/>

? ? <!-- 用dubbo協(xié)議在20880端口暴露服務(wù) -->

? ? <dubbo:protocol name="dubbo" port="20880" />

? ? <!-- 掃描注解包路徑,多個(gè)包用逗號(hào)分隔,不填pacakge表示掃描當(dāng)前ApplicationContext中所有的類 -->

? ? <dubbo:annotation package="com.zhilin.paopao.provider.service"/>

consumer.xml:

<pre name="code" class="html">  <!-- 消費(fèi)方應(yīng)用名,用于計(jì)算依賴關(guān)系,不是匹配條件,不要與提供方一樣 -->

? ? <dubbo:application name="consumer-of-app"? />

? ? <!-- 使用zookeeper注冊(cè)中心暴露發(fā)現(xiàn)服務(wù)地址 -->

? ? <dubbo:registry group="paopao" address="zookeeper://192.168.199.191:2181?backup=192.168.199.192:2181,192.168.199.193:2181"/>

  <!-- 監(jiān)控中心配置,從注冊(cè)中心發(fā)現(xiàn)監(jiān)控中心地址 -->

  <dubbo:monitor protocol="registry"/>

? ? <!-- 生成遠(yuǎn)程服務(wù)代理 -->

? ? <dubbo:reference version="1.0.0" id="userService" interface="com.zhilin.paopao.service.UserService" />

最后給你們推薦一個(gè)群,如果你還想提升自己

歡迎加入Java技術(shù)交流群:659270626

本群提供免費(fèi)的學(xué)習(xí)指導(dǎo) 提供Spring源碼、MyBatis、Netty、Redis,Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx、分布式、高并發(fā)、性能調(diào)優(yōu)、等架構(gòu)技術(shù)架構(gòu)資料 以及免費(fèi)的解答

不懂的問(wèn)題都可以在本群提出來(lái) 之后還會(huì)有職業(yè)生涯規(guī)劃以及面試指導(dǎo)?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容