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

时间:2015-11-11 22:22:02

标签: spring-boot spring-cloud docker-compose netflix-eureka

我们有三个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建立与配置服务器的通信。再次,这不是理想的。

三个问题/观察:

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

我已经创建了一个演示此行为的示例github repo:

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

0 个答案:

没有答案