Dubbo使用之主机绑定
原创
©著作权归作者所有:来自51CTO博客作者Dongguabai的原创作品,请联系作者获取转载授权,否则将追究法律责任
在发布一个Dubbo服务的时候,会生成一个dubbo://ip:port的协议地址:
2018-11-19 17:51:11,737 INFO [com.alibaba.dubbo.config.AbstractConfig] - [DUBBO] Export dubbo service dongguabai.dubbo.version.ICall to url dubbo://172.30.57.63:20880/dongguabai.dubbo.version.ICall?anyhost=true&application=dubbo-server&dubbo=2.5.3&interface=dongguabai.dubbo.version.ICall&methods=call&owner=dongguabai&pid=13916&revision=1.0.0&side=provider×tamp=1542621071730&version=1.0.0, dubbo version: 2.5.3, current host: 127.0.0.1
那么这个IP是根据什么生成的呢?可以看看com.alibaba.dubbo.config.ServiceConfig#doExportUrlsFor1Protocol,在生成绑定的主机的时候,会通过一层一层的判断,直到获取到合法的IP地址。:
首先会从配置文件中获取:
如果是非法的,会从本地网卡中获取:
如果还是非法的,会获取注册中心的地址(可以配置多个注册中心)。通过Socket去连接注册中心
如果最后还拿不到,会调用这个方法:
最后遍历本地网卡,返回第一个合理的IP:
Dubbo针对不同的协议有不同的默认绑定IP,比如Dubbo是20880,RMI是1099;Http:80;Hessian:80;WebService:80。