相同服务注册被覆盖的问题的原因:根据查看相关源码,服务的注册最终是以instance-id 来确定服务的,就是相同服务的instance-id需要区分开来。
解决办法:
配置文件中添加:spring.cloud.consul.discovery.instance-id:${spring.application.name}:${spring.cloud.client.ip-address}
注意这里的第一个参数需要在配置文件中写上,第二个参数不需要直接就可以使用。
hostname问题带来的问题:spring.cloud.consul.discovery.hostname:xxx.xxx.xxx.xxx 如果写了的话 就是以这个ip地址注册到consul上面,这个地址就是该服务运行的服务器的地址,这里很不方便,因为你换一个服务器运行 就需要去修改一次。可以直接使用spring.cloud.consul.discovery.prefer-ip-address:true 替换掉上面的hostname。这样就强制使用ip注册到consul服务器上面。