我们有三个Spring Boot应用程序:

  • 尤里卡服务

  • 配置服务器

  • 使用Eureka和Config Server的简单Web服务

我已经设置了服务,以便我们使用Eureka First Discovery,即简单的Web应用程序从eureka服务中找到有关配置服务器的信息 .

当单独启动时(在本地或通过将它们作为单独的docker镜像启动)一切正常,即在发现服务运行后启动配置服务器,并在配置服务器运行后启动Simple Web服务 .

当docker-compose用于启动服务时,它们显然是在同一时间启动,并且基本上可以竞争启动和运行 . 这不是问题,因为我们已经添加了failFast:true并重试了简单Web服务的值,并且还重新启动了docker容器,以便在发现服务和配置服务器都是这两个时,最终将重新启动简单的Web服务跑步,但这不觉得最佳 .

我们注意到的意外行为如下:

  • 简单的Web服务重新尝试多次连接到发现服务 . 这是明智的和预期的

  • 同时,简单Web服务尝试联系配置服务器 . 因为它无法联系发现服务,所以它会重试连接到localhost上的配置服务器,例如日志显示重试次数为http://localhost:8888 . 这不是预期的 .

  • 简单的Web服务最终将成功连接到发现服务,但日志显示仍然尝试通过转到http://localhost:8888与配置服务器 Build 通信 . 再次,这不是理想的 .

三个问题/意见:

  • 当配置客户端配置为使用发现来查找配置服务器时,配置客户端回退到尝试localhost是一个明智的策略吗?8888?

  • Build eureka连接时,重试机制现在是否应切换到尝试Eureka所指示的配置服务器 endpoints ?在这种情况下,基本上为更高/更长的重试间隔和配置服务器连接的周期是没有意义的,因为它查看localhost所以我们最好只是快速失败 .

  • 是否有任何属性可以覆盖此行为?

我已经创建了一个示例github repo来演示这种行为:

https://github.com/KramKroc/eurekafirstdiscovery/tree/master