在平时的开发过程中,当涉及到两个中心之间相互调用,比如:服务A和服务B,服务A调用服务B,为了不影响每个人的开发进度,服务B开发完成后,应该把服务部署到开发环境,服务A配置直接调用服务B,而不是服务A的开发者拉取两个项目到本地启动进行联调。
dubbo如何本地调用线上服务
dubbo开发时本地调用线上服务,有以下几个步骤:
(1)被服务提供者注册到注册中心的ip地址必须要外网IP,否则本地开发无法调用。
(2)更改本地application.properties配置文件zookeeper地址
dubbo.registry.address = zookeeper://${公网ip}:2181
重启服务即可
重点 问题来了
服务提供者没有注册正确的ip到zookeeper?
一般来说,服务是采用docker进行部署的,根据dubbo获取IP的策略,很有可能获取到局域网ip,因此在开发环境的同一局域网内调用没有问题,但无法进行本地调用远程服务的操作。
查阅dubbo官方文档:
dubbo获取服务ip的源码:
官方提供的解决方法:
Docker环境中的解决方法
在docker的环境配置中添加 DUBBO_IP_TO_REGISTRY={服务所在服务器的外网IP} 即可解决问题。
让你的本地开发如丝般顺滑!!