gpt4 book ai didi

spring-cloud - 如何使用Spring Cloud和Netflix OSS在微服务之间路由

转载 作者:行者123 更新时间:2023-12-03 13:00:58 25 4
gpt4 key购买 nike

在使用Spring Cloud开发微服务的过程中,我们开始使用Zuul作为代理来连接从外部到微服务的任何连接,以及任何需要与另一个微服务联系的微服务。

一段时间后,我们得出结论,Zuul被设计为边缘服务(仅代理从外部到微服务的流量),不应用于微服务之间的通信。尤其是Spring Cloud建议使用eureka来建立与另一服务的直接(潜在的负载平衡)连接的方式,使我们反对在所有内容之间使用Zuul。

当然,一切都可以按预期进行(与Spring Cloud一样),但是对于如何使用此设置执行特定用例我们一无所知。

部署新版本的微服务时,我们希望将blue/green deployment与旧版本和新版本一起使用。
但是,在微服务之间没有Zuul的情况下,两个独立服务之间的通信将继续使用旧版本,直到将其从eureka中删除为止。

我们正在考虑如何实现这一目标。在下面的图片中,我绘制了我认为可以选择的选项。

在图片的第一部分,Zuul调用eureka来获取注册表以创建路由。服务1也在调用eureka以使注册表路由到服务2。由于服务2在eureka注册表中,因此路由成功完成。

在图片的第二部分中,部署了服务2(服务2.1)的更新。它还向eureka注册,这使服务1现在同时路由到服务2和服务2.1。蓝色/绿色部署不希望这样做。

在第三部分中,展示了针对此问题的潜在解决方案,并为此目的部署了另一个 Eureka 实例。该实例不支持对等对象,因此不会与第一个eureka实例同步。与第一个实例相反,此实例的唯一目的是促进蓝/绿部署。服务2.1向第二个eureka实例注册,而服务1的配置被更改为不是从第一个eureka实例而是从第二个eureka实例获取其注册表。

我们面临的主要问题是这是否是可行的解决方案。 Zuul具有灵活的路由功能是我们在这种情况下所没有的一大优势。我们应该回到通过Zuul路由每个服务到服务的 call 还是更合适的解决方案(也许是某种功能区配置)?还是第二个eureka实例是此类部署的最佳解决方案?

任何反馈将不胜感激。

亲切的问候,
安德烈亚斯

最佳答案

通过在元数据中设置版本号,您可以轻松地使Svc1获取Svc2的最新版本,即。始终获取具有最新版本号的实例。请参见this gist作为指南。

关于spring-cloud - 如何使用Spring Cloud和Netflix OSS在微服务之间路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com