关于dubbo注册到zk时,请求ip出错问题

先简述一下最近出的一个问题。

公司内部的发布系统,发布我们最新的应用之后,应用启动成功,用ps或者jps命令都能看到,然后dubbo-monitor里面也查询到服务已经注册成功。但是发现应用无法访问。

1、先排除代码问题。因为本期配置文件没有做任何修改,只是添加了一个接口,而且服务启动成功,所以大概率不是代码的问题。

2、查询提供服务的接口,先访问我们的api网关,然后去dubbo调用接口。这时候发现服务注册在zk上的ip不对,不是我们之前发布机器的ip(地址简称为A),,而是另外一台(IP简称为B)。问题应该就出在这里。

再去在改服务器下输入hostname指令,发现hostname被修改,修改后的hostname是我们另外一个服务的机器名,另外一个服务的IP正是B。

解决方案就是把hostname先改回我们自己原先的hostname,然后重启服务,让服务重新注册到zk上,问题解决。

 

深入源码解决问题:

从serviceBean开始,一直往下看,直到serviceConfig类的doExportUrlsFor1Protocol方法。具体相关的代码分析不做了,网上有很多。

总结就是java原生取ip地址就是会用hostname,所以hostname改了,ip就会出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值