我们正在运行一个基于 Spring Boot 的环境,其中包含大约 15 个微服务和一个注册到 Eureka 的 Zuul 边缘网关。目前,我已经设置了所有微服务通过 Zuul 网关调用其他微服务(例如,如果 serviceA 需要调用 serviceB,则 URL 配置属性将为serviceB.baseUrl=http://zuul.mydomain.com:7001
其中 zuul.mydomain.com 是我们在 AWS 上的开发服务器,所有其他微服务都在其后面运行)。 Zuul 反过来通过 Eureka 注册表查找代理微服务。
这样做的一个好处是,对于在他的机器上本地工作的开发人员来说,他只需要运行他的服务,并且其他服务上的所有其他依赖项都可以通过 AWS 上的 Zuul 网关访问(在我们的生态系统中,有很多此类跨服务依赖关系)。
现在,我真的很想充分利用 Eureka / Ribbon 的全部潜力,并通过其服务名称和一个对等微服务直接调用@LoadBalanced RestTemplate
但我发现这会给开发人员带来很大的压力,必须在他的机器上重新创建整个生态系统。至少,他必须运行 Eureka、他自己的服务以及他的服务所依赖的任何其他服务。这使得发展的准入门槛过高。
我确实考虑过让开发人员的本地实例注册到AWS上的Eureka服务,但问题是AWS上的所有服务都是使用EC2实例的私有IP注册的,而开发人员的机器基本上无法访问EC2实例的私有IP。如果我强制服务使用其公共 IP 进行注册,则意味着我必须为每个服务使用更多的 ElasticIP 分配,或者在每次 EC2 实例重新启动时更改 IP。
我可以在本地网络中运行本地 Eureka + 微服务环境,但这意味着我需要为我们运营的每个办公室创建一个这样的环境,而这意味着更多的管理费用。除了这个问题之外,这可能意味着开发人员 A 可能正在调用开发人员 B 的尚未完成的依赖服务版本,如果出现问题,这只会让每个人都感到困惑(这些服务部署到我们的 AWS 环境中至少在部署之前先经过代码审查)。
如果有人找到了一种方法来简化开发人员的设置,同时能够利用对等服务调用的可能性Feign / @LoadBalanced RestTemplate
客户们,我很想得到一些正确方向的指导。
已确认我可以通过以下方式完成我想要的任务(即能够在支持 Ribbon 的 RestTemplate 客户端上进行本地开发,而无需运行 Eureka):
- 使用以下属性强制 Ribbon 不使用 Eureka:
ribbon.eureka.enabled=false
- 使用以下示例属性手动向功能区提供指向的服务器:
servicename.ribbon.listOfServers=test.service.com:8080
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)