寻求有关在 Netflix Eureka 上进行适当开发的建议 Spring 以最少的开销启动服务

Seeking advice on proper approach to development on Netflix Eureka discoverable Spring Boot services with minimal overheads

我们正在 运行建立一个 Spring 基于引导的环境,其中包含大约 15 个微服务和一个在 Eureka 注册的 Zuul 边缘网关。目前,我已将所有微服务设置为通过 Zuul 网关调用其他微服务(例如,如果 serviceA 需要调用 serviceB,则 URL 配置 属性 将是 serviceB.baseUrl=http://zuul.mydomain.com:7001,其中 zuul.mydomain.com是我们在 AWS 上的开发服务器,后面还有所有其他微服务 运行ning)。 Zuul 反过来通过 Eureka 注册表查找代理到微服务。

这样做的一个好处是,对于在他的机器上本地工作的开发人员来说,他只需要 运行 他的服务和所有其他对其他服务的依赖都可以通过 AWS 上的 Zuul 网关访问(在我们的生态系统中,有很多这样的跨服务依赖项)。

现在,我真的很想充分利用 Eureka / Ribbon 的全部潜力,并通过其服务名称和 @LoadBalanced RestTemplate 直接调用对等微服务,但我发现这会带来很多影响开发人员必须在他的机器上重新创建整个生态系统。至少,他必须 运行 Eureka、他自己的服务以及他的服务所依赖的任何其他服务。这使得开发的准入门槛过高。

我确实考虑过让开发者的本地实例注册到我们在AWS上的Eureka服务,但问题是AWS上的所有服务都是使用EC2实例的私有IP注册的,这基本上是开发者机器无法访问的。如果我强制该服务使用其 public IP 进行注册,这将意味着我必须为每个服务使用更多的 ElasticIP 分配,或者在每次 EC2 实例重新启动时更改 IP。

我可以 运行 本地网络中的本地 Eureka + 微服务环境,但这意味着我需要为我们运营的每个办公室创建一个这样的环境,这意味着更多的开销。除了这个问题之外,这可能意味着开发人员 A 可能正在调用开发人员 B 的依赖服务的半完成版本,如果出现问题,这只会让每个人都感到困惑(服务部署到我们的 AWS 环境至少在部署之前先经过代码审查)。

如果有人想出了一种方法来简化开发人员的设置,同时能够利用 Feign / @LoadBalanced RestTemplate 客户端的点对点服务调用可能性,我很乐意得到一些指示正确的方向。

已确认我可以通过以下方式完成我想要的(即能够在启用 Ribbon 的 RestTemplate 客户端上进行本地开发,而无需 运行 Eureka):

  1. 使用以下 属性 强制 Ribbon 不使用 Eureka:ribbon.eureka.enabled=false
  2. 手动为 Ribbon 提供服务器以使用以下示例 属性:servicename.ribbon.listOfServers=test.service.com:8080