2017-04-21 59 views
2

我无法理解Zuul和功能区之间的连接。Zuul和功能区集成

我想我明白了Zuul。这是一个反向代理,我可以联系到我的几个服务实例之一。它将使用循环算法或任何您配置的方式来选择合适的服务器。这是一个传统的负载平衡器。要知道可用的实例,可以使用像Eureka这样的注册表。

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

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

我希望你能帮助我。

回答

10

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

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

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

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

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