Zuul和功能区集成

时间:2017-04-21 08:47:07

标签: netflix-zuul netflix netflix-ribbon

我无法理解Zuul和Ribbon之间的联系。

我想我清楚了。这是一个反向代理,我可以联系以达到我的几个服务实例之一。它将使用循环算法或您配置的任何内容来选择正确的服务器。它是传统的负载均衡器。要了解可用的实例,它可以使用像Eureka这样的注册表。

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

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

我希望你能帮助我。

1 个答案:

答案 0 :(得分:22)

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

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

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

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

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