Juul 是我应用程序的唯一入口点是劣势吗?

is Zuul being the unique entrypoint to my app a disadvantge?

我在我的基于微服务的应用程序中使用 Zuul 已经有一段时间了,它运行得很好。

现在有人问我一个问题,让我觉得微服务世界毕竟不是彩虹和鲜花。

所以问题是“您将 Zuul 作为您应用程序的唯一入口点,这不是某种集中化吗?如果 zuul 出现故障怎么办?”

我只是想收集一些意见,然后得到这个问题的答案。

谢谢。

是的,它是入口点,它为许多在您的微服务架构中具有单一入口点的专业人士提供服务。

优点: 我能想到的最重要的

  1. 所有 API 用户(应用程序)的单一联系点。 api.yoursite.com 处的 Zuul 运行 并且每次都调用它比调用 api 消费者的个人服务(service1.yoursite.com、service2.yoursite.com)要好。

  2. 从安全的角度来看,你只需要处理一个服务器的安全,你可以隐藏所有其他服务器运行你在网络中的服务而不是暴露在public 互联网。亚马逊 AWS 和许多其他提供商提供此类设施。

  3. 您可以利用 zuul 作为入口点的路由优势,您可以将 80% 的流量路由到 service1 旧版本,同时将 20% 的流量路由到相同的 service1 新版本。

缺点:

能力越大,责任越大。 如果您的主要 zuul 服务器宕机,您的整个应用程序都会宕机。(编辑:仅当您有一个 zuul 设置时)。请查看@lahiru 的回答如何使用 eureka 注册表配置拥有多个 zuul 集群。

如果你的 Zuul 实例挂了。您可能无法通过 api 网关定向到其他服务。

作为一种解决方案,我建议您采用具有两个 zuul 实例的集群解决方案。 您需要两个客户端服务注册服务(Eureka 服务器)。

如果您打算管理容错,可以应用哨兵。

您的微服务成为尤里卡客户端。

你必须在两个eureka服务器上注册你的微服务,并建立一个eureka服务器集群。您可以参考下图作为实现的设计/架构图。

注意:您必须为两个 zuul 服务器维护两个端点。如果 zuul 1 挂了,客户端可以向 zuul 2 请求。 这将帮助您实现零停机时间。(您需要确保您的 VM 平台是可靠的并且没有计划外的停机时间)。