【问题标题】:How to make Eureka really work on Cloud Foundry (cf)?如何让 Eureka 真正在 Cloud Foundry (cf) 上运行?
【发布时间】:2018-08-25 16:42:19
【问题描述】:

在 Cloud Foundry 中,所有应用都可以通过 Cloud Foundry 负载平衡器访问。 每个负载均衡器都有一个用于调用应用程序的 url。 即使有隐藏的方式(例如 X-CF-APP-INSTANCE), 它并不意味着直接调用应用实例。

Eureka 具有高可用性和分区容错性,但缺乏一致性(CAP 定理)。 为了克服注册表数据的陈旧性,Netflix 使用客户端负载平衡 (Ribbon)。 (见:https://github.com/Netflix/eureka/wiki/Eureka-2.0-Architecture-Overview)

因为 Cloud Foundry 中的应用是通过其负载均衡器调用的,所以它会向 Eureka 负载均衡器的地址。如前所述,应用程序实例甚至没有地址。 为了使其更明显,假设有两个应用程序 A 实例(a1 和 a2)在 Eureka 上注册。 Eureka 现在有两个应用程序 A 的条目,但都分配了相同的地址。

现在当 Ribbon 发生以克服 Eureka 的一致性问题时,重试很可能与第一次尝试指向相同的实例。 因此,使用 Ribbon 的故障转移不适用于 Cloud Foundry 中的 Eureka。

应用程序的所有实例都分配到 Eureka 中的同一地址这一事实在许多情况下使事情变得复杂。 即使是 Eureka 的复制,我们也只能通过一种变通方法来解决。涡轮机需要以推式等方式进给。

我们正在考虑增强 Eureka 以设置 X-CF-APP-INSTANCE 标头。 现在在此之前,我们想知道是否有人知道让 Eureka 真正用于云代工的更简单方法?

此问题发给:Deploying Eureka/ribbon code to Cloud Foundry

【问题讨论】:

    标签: java netflix-eureka spring-cloud-netflix netflix-ribbon


    【解决方案1】:

    我认为 Eureka 和任何其他发现服务在像 CloudFoundry 这样的 PaaS 中没有地位。虽然增强 Eureka 以支持 X-CF-APP-INSTANCE 标头听起来很有吸引力,但您还需要增强客户端部分(功能区)以利用该信息,并将该标头添加到每个请求中。

    嗯,9 个月后,也许您在此期间已经这样做了?还是您遵循替代解决方案路径?

    无论如何,与此同时,还有一个额外的应用到应用集成选项,container to container networking。即使在这里,CloudFoundry 开发团队也决定提供他们自己的discovery mechanism。

    【讨论】:

      猜你喜欢
      • 2019-02-09
      • 2016-03-20
      • 1970-01-01
      • 2017-11-29
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      相关资源
      最近更新 更多