出自:https://www.cnblogs.com/gossip/p/6021698.html

一、背景:

1、Dubbo服务正常注册到ZooKeeper

2、客户端调用Dubbo服务正常

二、原因:

Dubbo-Admin未配置分组信息

三、解决步骤:

1、dubbo.properties添加分组信息:/usr/local/src/tomcat7/webapps/dubbo-admin/WEB-INF

dubbo.registry.group=/dubbo/mygroup

2、dubbo-admin.xml添加分组信息:/usr/local/src/tomcat7/webapps/dubbo-admin/WEB-INF/classes/META-INF/spring

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

3、重启tomcat

四、参考博客如下:http://blog.csdn.net/cfydaniel/article/details/44980193

今天重新配置了下dubbo,结果发现管理控制台上没有显示可用的服务,由于前阵子刚配置的时候是没有问题的,于是开始逐步排查。

项目注册中心用的zookeeper集群,provider是采用jar包方式启动的,consumer在tomcat容器内运行,并且consumer已经可以消费到provider提供的服务了,说明注册中心已经里面已经有服务注册。通过zookeeper客户端连接到zk服务器上,也可以看到创建的服务节点

根目录下有paopao,zookeeper两个目录,其中paopao是根据配置中注册中心registry的group属性分组标识而创建的,zookeeper是zk默认的节点,paopao下面有两个已经注册的服务节点。

然后查看dubbo-admin的配置,dubbo的管理控制台是在单独的tomcat下运行的,安装及配置可以参考http://dubbo.io/Administrator+Guide-zh.htm,找到webapps/ROOT/WEB-INF/dubbo.properties文件,其内容如下:

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

猛地发现registry没有配置group分组!自己之前在生产者和消费者的配置文件中也没有显式指明分组,默认的group就为dubbo。现在由于在服务提供的配置文件中对registry显式指明了group分组,因此管理控制台的配置中如果没有声明group与provider、consumer的group一致,那么就找不到对应的服务。 于是修改dubbo.properties文件,添加注册中心分组:

dubbo.registry.group=paopao

满怀着激动的心情重启了服务,结果发现管理台界面还是没有找到服务!然后上网查找但是无奈网上dubbo相关的文档和讨论真的太少了,后来经群里一个朋友的提醒,查看了${TOMCAT_HOME}/webapps/ROOT/WEB-INF/classes/META-INF/spring下的dubbo-admin.xml文件,dubbo管理控制台在启动的时候会加载该xml文件并读取里面的配置信息初始化dubbo和zookeeper,dubbo-admin.xml内容如下:

<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>

可以看到,该文件竟然默认是没有registry的group属性的,因此只在dubbo.properties中添加分组配置根本不起作用。于是修改dubbo-admin.xml文件中的dubbo:registry项为:

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

保存后重启tomcat实例,发现已经注册的服务提供者和消费者信息,一切OK!

下面把provider和consumer的主要配置信息也贴出来供大家参考:

provider.xml:

<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="paopao-provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry group="paopao" address="zookeeper://192.168.199.191:2181?backup=192.168.199.192:2181,192.168.199.193:2181"/>
<!-- 监控中心配置,从注册中心发现监控中心地址 -->
<dubbo:monitor protocol="registry"/>
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
<dubbo:annotation package="com.zhilin.paopao.provider.service"/>

consumer.xml:

<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="consumer-of-app" />
<!-- 使用zookeeper注册中心暴露发现服务地址 -->
<dubbo:registry group="paopao" address="zookeeper://192.168.199.191:2181?backup=192.168.199.192:2181,192.168.199.193:2181"/>
<!-- 监控中心配置,从注册中心发现监控中心地址 -->
<dubbo:monitor protocol="registry"/>
<!-- 生成远程服务代理 -->
<dubbo:reference version="1.0.0" id="userService" interface="com.zhilin.paopao.service.UserService" />

Dubbo_异常_服务注册运行正常但是Dubbo-Admin看不到服务的更多相关文章

  1. Dubbo_异常_服务注册运行正常但是Dubbo-Admin看不到服务(亲测可用)

    一.背景: 1.Dubbo服务正常注册到ZooKeeper 2.客户端调用Dubbo服务正常 二.原因: Dubbo-Admin未配置分组信息 三.解决步骤: 1.dubbo.properties添加 ...

  2. 服务注册发现Eureka之一:Spring Cloud Eureka的服务注册与发现

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...

  3. 服务注册发现consul之五:Consul移除失效服务的正确姿势

    spring cloud微服务不定期会出现网络请求失败的错误.于是看了下后台日志,发现有几个请求会报如下的异常: Caused by: feign.RetryableException: Connec ...

  4. .net core grpc consul 实现服务注册 服务发现 负载均衡(二)

    在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...

  5. SpringCloud Netflix Eureka(服务注册/发现)

    ⒈Eureka是什么? Eureka是Netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务以实现云端中间层服务发现和故障转移,服务注册与发现对于微服务架构来 ...

  6. java框架之SpringCloud(3)-Eureka服务注册与发现

    在上一章节完成了一个简单的微服务案例,下面就通过在这个案例的基础上集成 Eureka 来学习 Eureka. 介绍 概述 Eureka 是 Netflix 的一个子模块,也是核心模块之一.Eureka ...

  7. 服务注册中心Eureka vs Zookeeper vs Consul

    前言 在现在云计算和大数据快速发展的今天,业务快速发展和变化.我们以前的单一应用难以应对这种快速的变化, 因此我们需要将以前单一的大应用不断进行差分,分成若干微小的应用或者服务,这就是微服务的思想.但 ...

  8. Dubbo服务注册与发现

    目录 一.分布式基本理论 1.1.分布式基本定义 1.2 架构发展演变 1.3.RPC简介 二.Dubbo理论简介 三.Dubbo环境搭建 3.1 Zookeeper搭建 3.2 Dubbo管理页面搭 ...

  9. [ASP.NET Core 3框架揭秘] 依赖注入[6]:服务注册

    通过<利用容器提供服务>我们知道作为依赖注入容器的IServiceProvider对象是通过调用IServiceCollection接口的扩展方法BuildServiceProvider创 ...

随机推荐

  1. 项目Beta冲刺(团队)——05.25(3/7)

    项目Beta冲刺(团队)--05.25(3/7) 格式描述 课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺(团队) 团队名称:为了交项目干杯 作业目标:记录Beta敏捷冲刺第3 ...

  2. javascript Date format(js日期格式化) 转载

    本文转载地址http://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html // 对Date的扩展,将 Date 转化为指定格 ...

  3. 由PPPOE看Linux网络协议栈的实现

    http://www.cnblogs.com/zmkeil/archive/2013/05/01/3053545.html 这个标题起得比较纠结,之前熟知的PPPOE是作为PPP协议的底层载体,而实际 ...

  4. [React] Handle React Suspense Errors with an Error Boundary

    Error Boundaries are the way you handle errors with React, and Suspense embraces this completely. Le ...

  5. Let Start

      A free timing software with very small memory occupation. This tool is a pure green convenient off ...

  6. Numpy | 03 数据类型

    numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型. 下表列举了常用 NumPy 基本类型: 名称 描 ...

  7. 如何设置网站的robots.txt

    做过网站优化的朋友都知道,搜索引擎蜘蛛爬行抓取网站时首先会去访问根目录下的robots.txt文件,如果robots文件存在,则会根据robots文件内设置的规则进行爬行抓取,如果文件不存在则会顺着首 ...

  8. LOJ3058. 「HNOI2019」白兔之舞 [DP,MTT]

    LOJ 前置知识:任意长度NTT 普通NTT只能做\(2^k\)的循环卷积,尝试扩展成长度为\(n\)的循环卷积,保证模意义下\(\omega_n\)存在. 不管怎样还是要算点值.推式子: \[ \b ...

  9. [linux][c++]linux c++ 通过xcb库获取屏幕大小

    linux c++ 通过xcb库获取屏幕大小 #include <stdio.h> #include <xcb/xcb.h> /** clang++ main.cpp -o m ...

  10. go语言Mac下编译安装语言包

    这两天公司成立了go语言学习兴趣小组,慕名参与了学习.目前对于go是0基础,只知道它可以做高并发.效率快.编译简单.母语是C. go的安装有多种形式,编译安装是比较慢的一个,今天我就记录一下学习go编 ...