PaaS 云 (PCF) 上的客户端负载平衡 (Ribbon) 和服务发现 (Eureka)

Client side load balancing (Ribbon) and Service Discovery (Eureka) on PaaS cloud (PCF)

目前我们将应用程序部署到 Pivotal Cloud Foundry (PCF),它在平台即服务 (PaaS) 模型中运行。

这意味着每当我们将应用程序部署到 PCF 时,PCF 会自动(除了它执行的其他操作之外)设置一个负载均衡器,将请求转发到它自动配置的所需数量的实例。

考虑到这一点,是否可以在 PaaS 云中使用 Ribbon 等客户端负载均衡器,以便您的应用程序的客户端可以直接访问您的应用程序实例 运行,不是负载均衡器?如果是,有什么好处?

还有一个相关的问题,如果我的所有服务都遵循相同的命名约定,例如myapp-service 因此在 https://myapp-service.cfapps.io 下可用 在 PaaS 云中设置服务发现服务(例如 Eureka)有什么好处吗?

Having that in mind, is it possible to use a client side load balancer such as Ribbon in a PaaS cloud, so that the clients of your app will reach out directly to the instances running your app, not to the load balancer? If yes, what are the benefits?

你当然可以。如果您在 PCF 上使用映射到您的应用程序的路由,您将只有一个客户端负载均衡器和一个服务器,因此它并没有真正增加任何好处。

如果您使用客户端负载均衡器和 Cloud Foundry 的容器到容器网络,您会看到更多好处。使用 C2C,您可以直接与其他应用程序对话。在这种情况下需要注册表,以便您可以找到您的服务应用程序。

此博客 post 介绍了使用 SCS 和 C2C 的基本示例(它适用于 PWS,但应该适用于任何具有 C2C 的 PCF 环境)。

https://content.pivotal.io/blog/building-spring-microservices-with-cloud-foundrys-new-container-networking-stack

One more related question, if all my services follow the same naming convention e.g. myapp-service and therefore are available under https://myapp-service.cfapps.io is there any benefit of setting up a Service Discovery service (e.g. Eureka) in a PaaS cloud?

我认为问题是您的应用如何找到 myapp-service.cfapps.io?如果您有一个应用程序正在使用一项服务,那么使用 URL 配置该应用程序或者通过 env 变量甚至用户提供的绑定服务传递它并不难。问题已解决。

当您开始获得大量服务时,"lots" 是一个任意大的数字,管理起来会很痛苦。当您达到这一点时,使用服务注册中心将使生活更轻松。并不是说您不能在一个应用程序/一个服务场景中使用服务注册表,它可能没有那么大的优势。

正如我上面提到的,使用服务注册中心的另一个优势是 C2C 网络。在这种情况下,您需要一些东西来在容器网络上定位您的服务。 SCS 注册表将执行此操作。

就其价值而言,如果您使用的是最新版本的 CF,实际上有平台通过 DNS 提供服务发现。如果可用,这也可用于定位您的服务实例。详情请看这里。

https://www.cloudfoundry.org/blog/polyglot-service-discovery-container-networking-cloud-foundry/