查看dubbo端口(dubbo注册zk后是内网地址问题)

:暂无数据 2026-04-27 17:00:02 0
在深入了解查看dubbo端口的路上,dubbo注册zk后是内网地址问题就像一道绕不开的坎。别担心,本篇攻略将助你轻松跨越。

本文目录

dubbo注册zk后是内网地址问题

1、查看当前hostname

hostname

2、修改/etc/hosts文件

vim /etc/hosts

将hostname对应的ip地址改为外网地址

3、重启jar包即可
【注】修改/etc/hosts文件 记得将localhost新增为*****  本地ip地址,防止tomcat启动不起来(***** 无法在地址)*****: 无法指定被请求的地址 (Bind failed))

dubbo服务器线程使用情况查看

在dubbo服务器上,执行telnet可进入dubbo命令控制行:

点击回车,进入dubbo控制台

ls
显示服务列表。

ls -l
显示服务详细信息列表。

ls XxxService
显示服务的方法列表。

ls -l XxxService
显示服务的方法详细信息列表。

ps
显示服务端口列表。

ps -l
显示服务地址列表。

ps 20880
显示端口上的连接信息。

ps -l 20880
显示端口上的连接详细信息。

trace XxxService
跟踪1次服务任意方法的调用情况。

trace XxxService 10
跟踪10次服务任意方法的调用情况。

trace XxxService xxxMethod
跟踪1次服务方法的调用情况

trace XxxService xxxMethod 10
跟踪10次服务方法的调用情况。

linux查看dubbo注册哪些服务

直连加不发布服务
DUBBO的配置属性里面对消费端提供了不从注册中心发现服务的机制,直接配置远程接口的地址,这样可以保证消费端连接到制定的环境接口。这样消费端是解决了问题,但是服务提供端呢?如上图的B1它即是消费端也是服务提供端,它提供A1所依赖的接口,那么如果B1将它的服务发布到注册中心里面(这里需要提醒,STABLE环境机制里面所有子环境公用一个注册中心),那么势必会导致stable环境里面的A会发现B1提供的服务?势必会导致stable环境的不稳定(stable环境的机制是stable环境只能进不能出,就是不能调用外部其他子环境的服务)?所以B1不能发布服务到注册中心,dubbo也提供了相关的配置属性来支持这一点。下面我例举出通过哪些配置可以实现这种方案:
服务消费端:
DUBBO在消费端提供了一个url的属性来指定某个服务端的地址
《!--lang:xml--》
《dubbo:reference inte***ce="*****" check="false" id="helloWorldService"/》
默认的方式是从注册中心发现接口为*****的服务,但是如果需要直连,可以在*****下面配置*****=dubbo://ip:port/*****可以通过配置*****=dubbo://ip:port/来让某个消费者系统的服务都指向制定的服务器地址(关于配置信息可以参考《DUBBO配置规则详解》)

如何修改并获得dubbo服务的端口号

package *****;
import *****;
import *****;
import ********truct;
import *****;
import *****;
import *****;
import *****;
import *****;
/**
* 这是一个进程启动多个dubbo服务的DubboPortHandler另一种写法。以前的方案见DubboNamespaceHandlerEx
* 利用spring修改受spring管理bean的属性信息
*
* @author doctor
*
* @time 2014年12月31日 上午9:43:52
*/
@Component
public class DubboPortHandler2 {
@Autowired
private ApplicationContext applicationContext;
private int port = 20080;
@PostC***truct
public void init() {
Map《String, ProtocolConfig》 beansOfType = *****(*****);
for (Entry《String, ProtocolConfig》 item : *****()) {
port = *****();
*****().setPort(port);
}
}
public int getPort() {
return port;
}
}

zk客户端命令查看dubbo服务的生产者和消费者

 假设zookeeper安装在*****这台服务器上,现在我们通过命令行查看dubbo在zookeeper注册服务的生产者和消费者信息

首先通过命令切换到/*****

(2182为zookeeper在服务器上提供服务的端口)会看到如下截图:

然后在命令行再输入:

查看目录信息,就能看到注册的dubbo服务,截图如下:

在命令行依次输入:

会看到dubbo服务提供的对外接口,截图如下:

查看消费者命令:

会看到消费者的信息,截图如下:

查看生产者命令:

会看到生产者的信息,截图如下:

dubbo是如何启动的

已知,在项目启动过程中,我们会将dubbo的配置文件写到spring的配置文件里,如下xml文件:

《dubbo:application name="anyname_provider" /》
《!-- 使用zookeeper注册中心暴露服务地址 --》
《dubbo:registry address="zookeeper://*****:2181" /》
《!-- 用dubbo协议在20880端口暴露服务 --》
《dubbo:protocol name="dubbo" port="20880" /》
《!-- 声明需要暴露的服务接口 --》
《dubbo:service inte***ce="*****"
ref="demoService" /》

从官方文档中,我们能看到如下:

启动过程.png

也就是说spring启动过程中,随着Spring在初始化过程中,碰到dubbo命名的标签,如(《dubbo:service》,《dubbo:registry》)等标签,会由DubboNamespaceHandler类处理,具体原理见链接Spring自定义标签

DubboBeanDefinitionParser代码如下:

public class DubboNamespaceHandler extends NamespaceHandlerSupport {    static {
*****(*****);
}    public void init() {
registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(*****, true));
registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(*****, true));
registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(*****, true));
registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(*****, true));
registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(*****, true));
registerBeanDefinitionParser("c***umer", new DubboBeanDefinitionParser(C********, true));
registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(*****, true));
registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(*****, true));
registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(*****, false));
registerBeanDefinitionParser("annotation", new AnnotationBeanDefinitionParser());
}
}

遇到不同的标签,会由不同的Parser处理,这里重点看服务发布,这行代码:

registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(*****, true));

也就是说,当Spring容器处理完《dubbo:service》标签后,会在Spring容器中生成一个ServiceBean ,服务的发布也会在ServiceBean中完成。不妨看一下ServiceBean的定义:

public class ServiceBean《T》 extends ServiceConfig《T》 implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener《ContextRefreshedEvent》, BeanNameAware {
}

该Bean实现了很多接口,关于InitializingBean,DisposableBean,ApplicationContextAware,BeanNameAware,这些接口的使用介绍如下链接:

  • InitializingBean&DisposableBean

  • BeanNameAware& ApplicationContextAware

  • 而在Spring初始化完成Bean的组装,会调用InitializingBean的afterPropertiesSet方法,在Spring容器加载完成,会接收到事件ContextRefreshedEvent,调用ApplicationListener的onApplicationEvent方法。

    在afterPropertiesSet中,和onApplicationEvent中,会调用export(),在export()中,会暴露dubbo服务,具体区别在于是否配置了delay属性,是否延迟暴露,如果delay不为null,或者不为-1时,会在afterPropertiesSet中调用export()暴露dubbo服务,如果为null,或者为-1时,会在Spring容器初始化完成,接收到ContextRefreshedEvent事件,调用onApplicationEvent,暴露dubbo服务。

    部分ServiceBean的代码如下:

  • public class ServiceBean《T》 extends ServiceConfig《T》 implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener《ContextRefreshedEvent》, BeanNameAware { //Spring容器初始化完成,调用

  • public void onApplicationEvent(ContextRefreshedEvent event) {        if (isDelay() && !isExported() && !isUnexported()) {            if (*****()) {

  •                *****("The service ready on spring started. service: " + getInte***ce());

  •            }            //暴露服务

  •            export();

  •        }

  •    }    //判断是否延迟发布

  •  private boolean isDelay() {

  •        Integer delay = getDelay();

  •        ProviderConfig provider = getProvider();        if (delay == null && provider != null) {

  •            delay = *****();

  •        }        return supportedApplicationListener && (delay == null || delay == -1);

  •    } //当bean初始化完成调用

  • public void afterPropertiesSet() throws Exception {        //......此处省略10000行代码

  •        if (!isDelay()) {            //暴露服务

  •            export();

  •        }

  •    }

  • }

  • 在export(),暴露服务过程中,如果发现有delay属性,则延迟delay时间,暴露服务,如果没有,则直接暴露服务。

  • public synchronized void export() {        //忽略若干行代码

  •        if (delay != null && delay 》 0) {            //当delay不为null,且大于0时,延迟delay时间,暴露服务

  •            *****(new Runnable() {                public void run() {                    //暴露服务

  •                    doExport();

  •                }

  •            }, delay, *****);

  •        } else {            //直接暴露服务

  •            doExport();

  •        }

  •    }

  • 而在doExport()中,验证参数,按照不同的Protocol,比如(dubbo,injvm)暴露服务,在不同的zookeeper集群节点上注册自己的服务。

  • protected synchronized void doExport() {         //忽略10000行代码

  •        doExportUrls();        //忽略10000行代码

  •    } private void doExportUrls() {

  •        List《URL》 registryURLs = loadRegistries(true);        for (ProtocolConfig protocolConfig : protocols) {            //按照不同的Protocal暴露服务

  •            doExportUrlsFor1Protocol(protocolConfig, registryURLs);

  •        }

  •    }


  • 作者:一滴水的坚持
    ***隐藏网址***
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

感谢你花费时间阅读这篇关于查看dubbo端口的长文。我们深知,把dubbo注册zk后是内网地址问题这样的复杂概念讲清楚不易,如果你觉得我们做到了,请告诉我们;如果还有疑问,更请告诉我们!
本文编辑:admin

本文相关文章:


查看dubbo端口(如何修改并获得dubbo服务的端口号)

查看dubbo端口(如何修改并获得dubbo服务的端口号)

就像学骑车需要掌握平衡一样,理解查看dubbo端口的窍门,恰恰在于把握好如何修改并获得dubbo服务的端口号这个“平衡点”。

2026年4月9日 08:00

更多文章:


废品回收html5模板(老板让我写一个废旧物资回收企业简介,请问哪里有范本啊)

废品回收html5模板(老板让我写一个废旧物资回收企业简介,请问哪里有范本啊)

大家好,废品回收html5模板相信很多的网友都不是很明白,包括老板让我写一个废旧物资回收企业简介,请问哪里有范本啊也是一样,不过没有关系,接下来就来为大家分享关于废品回收html5模板和老板让我写一个废旧物资回收企业简介,请问哪里有范本啊的

2026年4月28日 21:20

strlwr函数的用法(C语言求一个关于字符串的函数)

strlwr函数的用法(C语言求一个关于字符串的函数)

你是否好奇,为什么人人都在谈strlwr函数的用法?它和C语言求一个关于字符串的函数之间究竟存在着怎样微妙的联系?答案就在下文。

2026年4月28日 21:00

powerful woman(关于Oprah Winfrey)

powerful woman(关于Oprah Winfrey)

powerful woman和关于Oprah Winfrey,看似独立,实则血脉相连。它们是如何相互影响的?本文将为你层层剖析。

2026年4月28日 20:40

settimeout(function)(求教js中这个语句setTimeout(function(){alert(’执行完过了3秒了’)},2000);)

settimeout(function)(求教js中这个语句setTimeout(function(){alert(’执行完过了3秒了’)},2000);)

本篇内容旨在成为您理解settimeout(function)的实用手册,其中求教js中这个语句setTimeout(function(){alert(’执行完过了3秒了’)},2000);将是我们要重点打磨的章节。

2026年4月28日 20:20

美国新冠疫情最新消息今天新增(美国新冠疫情确诊人数有增加吗)

美国新冠疫情最新消息今天新增(美国新冠疫情确诊人数有增加吗)

从我第一次听说美国新冠疫情最新消息今天新增到真正弄懂美国新冠疫情确诊人数有增加吗,也走过一些弯路。下面就把我的学习心得分享给大家,希望能让您的入门之路更顺畅。

2026年4月28日 20:00

asp财务上代表什么意思(ASP在财务中是什么东西的简写中文名称和英文全称是什么)

asp财务上代表什么意思(ASP在财务中是什么东西的简写中文名称和英文全称是什么)

本文旨在解决您关于asp财务上代表什么意思的两大困惑:一是理清基本概念,二是深入解析ASP在财务中是什么东西的简写中文名称和英文全称是什么。内容干练,直奔主题。

2026年4月28日 19:40

structure动词词性的用法(翻译:reboot system now.这句什么意思)

structure动词词性的用法(翻译:reboot system now.这句什么意思)

本篇关于structure动词词性的用法的讲解,将摒弃陈词滥调,直击翻译:reboot system now.这句什么意思这一实战要害,给你可即刻应用的策略。

2026年4月28日 19:20

特斯拉潮州事件最新进展(潮州事件是怎么回事)

特斯拉潮州事件最新进展(潮州事件是怎么回事)

承接之前对特斯拉潮州事件最新进展的讨论,本篇我们将视角下沉,专门来聊聊实操中无法回避的潮州事件是怎么回事问题,让知识落地。

2026年4月28日 19:00

微信文件传输助手会被监管吗?微信显示被网监是什么意思

微信文件传输助手会被监管吗?微信显示被网监是什么意思

你是否好奇,为什么人人都在谈微信监管?它和微信文件传输助手会被监管吗之间究竟存在着怎样微妙的联系?答案就在下文。

2026年4月28日 18:40

php建立站点(怎么才能在一个服务器上建立多个PHP站点)

php建立站点(怎么才能在一个服务器上建立多个PHP站点)

正如一位名家所言:“弄懂怎么才能在一个服务器上建立多个PHP站点,是通往php建立站点殿堂的捷径。” 今天,我们就来走一走这条捷径。

2026年4月28日 18:20

最近更新

powerful woman(关于Oprah Winfrey)
2026-04-28 20:40:02 浏览:0
热门文章

mysql insert into字段顺序问题(mysql insert into的问题)
2026-04-13 16:00:02 浏览:1
split函数 sql(求sql split函数的用法)
2026-03-26 20:40:01 浏览:1
标签列表