netflix-zuul - Zuul 和 Ribbon 集成

标签 netflix-zuul netflix netflix-ribbon

我很难理解 Zuul 和 Ribbon 之间的联系。

我想我明白 Zuul 了。这是一个反向代理,我可以联系它来访问我的几个服务实例之一。它将使用循环算法或您对其进行的任何配置来选择正确的服务器。这是一个传统的负载均衡器。要知道可用的实例,它可以使用像 Eureka 这样的注册表。

但是我在使用 Ribbon 时遇到了更多麻烦。它作为客户端负载均衡器出售,但这意味着什么?它不需要外部服务器吗?功能区嵌入到客户端中的方式与 Eureka 客户端相同吗?如果是这样,它是如何工作的?使用 Ribbon 时是否需要 Zuul,反之亦然?

在一些文章中,我看到实际上 Zuul 默认使用 Ribbon 进行负载均衡部分,这让我更加困惑。如果这是真的,“客户端”是什么意思?除了路由,Zuul 还能做什么?

我希望你能帮助我。

最佳答案

客户端和服务器始终是相对的。 Zuul 是您的服务实例的客户端,您的服务实例是 Zuul 的服务器。

当我们使用传统的负载均衡器(服务器端负载均衡器)时,API 调用者(客户端)只知道一个负载均衡器端点,客户端不知道服务器列表。负载均衡器从列表中选择一个服务器。

当我们使用像 Ribbon 这样的客户端负载均衡器时,API 调用者(客户端)应该知道服务器列表并从列表中选择其中一个。这就是我们称之为客户端负载均衡器的原因。

如您所知,Ribbon 是一个客户端负载均衡器模块,并集成到许多 http 客户端模块中。例如,Feign 和负载均衡的 RestTemplate 支持 Ribbon。即 Feign 和负载平衡的 RestTemplate 可以从给定的列表中选择一个服务器,或者在与功能区一起使用时从 eureka 的列表中选择一个服务器。

关于Zuul,有一个RibbonRoutingFilter将您的请求路由到实际的服务实例。 RibbonRoutingFilter正在使用 Ribbon 从您的配置或 Eureka 提供的列表中选择服务器。所以如果你想使用 Zuul 作为负载均衡的反向代理,Zuul 需要 Ribbon。

关于netflix-zuul - Zuul 和 Ribbon 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43538030/

相关文章:

spring - 在 Spring Cloud Netflix Zuul 中以编程方式设置路由

Spring Cloud Zuul 后备服务

java - 使用 Ribbon 负载均衡器获取所有可访问服务器的列表,无论区域如何

html - 试图使 div 框展开

java - 是否可以在没有功能区的情况下使用@FeignClient?

spring - 让功能区使用自定义 SSLContext

java - 如何在Zuul后置过滤器中拦截和编辑响应体?

ios - Netflix 使用什么 NSExtensionActivationRule key ?

android - 启动 Netflix Android 应用程序