Eureka First Discovery和配置客户端使用Docker Compose重试

Kra*_*roc 7 spring-boot spring-cloud netflix-eureka docker-compose

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

  • 尤里卡服务
  • 配置服务器
  • 使用Eureka和Config Server的简单Web服务

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

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

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

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

  • 简单的Web服务重新尝试多次连接到发现服务.这是明智的和预期的
  • 同时,简单的Web服务尝试联系配置服务器.因为它无法联系发现服务,所以它会重试连接到localhost上的配置服务器,例如,log show retries将转到http:// localhost:8888.这不是预期的.
  • 简单的Web服务最终将成功连接到发现服务,但是日志显示它仍然尝试通过访问http:// localhost:8888来建立与配置服务器的通信.再次,这不是理想的.

三个问题/意见:

  • 当配置客户端配置为使用发现来查找配置服务器时,配置客户端回退到尝试localhost是一个明智的策略吗?8888?
  • 建立eureka连接时,重试机制现在是否应该切换到尝试Eureka所指示的配置服务器端点?在这种情况下,基本上为更高/更长的重试间隔和配置服务器连接的周期是没有意义的,因为如果它正在查看localhost,它永远不会连接到它,所以我们最好只是快速失败.
  • 是否有任何属性可以覆盖此行为?

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

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