【问题标题】:is Zuul being the unique entrypoint to my app a disadvantge?Zuul 是我的应用程序的唯一入口点吗?
【发布时间】:2019-11-06 00:25:39
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: java spring-boot microservices netflix-zuul


    【解决方案1】:

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

    优点: 我能想到的头上

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

    2. 从安全的角度来看,您只需处理一台服务器的安全性,您可以隐藏在网络中运行您服务的所有其他服务器,而不是将它们暴露在公共互联网上。亚马逊 AWS 和许多其他提供商都提供了这样的设施。

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

    缺点:

    强大的力量伴随着巨大的责任。 如果您的主 zuul 服务器已关闭,则您的整个应用程序都已关闭。(编辑:仅当您有一个 zuul 设置时)。请查看@lahiru 的回答如何使用 eureka 注册表配置拥有多个 zuul 集群。

    【讨论】:

    • 我已经通过@kmarakrout 下方的合适设计回答了您的问题
    【解决方案2】:

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

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

    如果你打算管理容错,你可以申请哨兵。

    您的微服务成为 eureka 客户端。

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

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

    【讨论】:

    • 如果我弄错了,请纠正我,所以你建议我实现另一个与另一个发现客户端相关的zuul微服务(我的情况是领事,你的情况是尤里卡)以防万一ZUUL 1 中的一个问题,我的 discovrey 服务会告诉客户使用 Zuul 2
    • 没有。如果您以这种方式实施,您似乎假设发现服务成为单点联系,但事实并非如此。我的建议是为您的客户端配置两个 URL 端点。这样如果 URL 1 失败,客户端可以与 URL 2 通信。为此,如果您正在实施,您必须考虑一个逻辑。作为一种解决方案,您可以启动一个 maxTimeOut 变量并等待来自 URL1 的响应,如果它无法通过 maxTimeOut 向您发送响应,您可以与 URL 2 交谈。您的问题可以有多种解决方案。@kmarakrout
    • 是的。我建议你再买一个 zuul@kmarakrout
    猜你喜欢
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多