Zuul和Ribbon集成

Van*_*ush 16 netflix netflix-zuul netflix-ribbon

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

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

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

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

我希望你能帮助我.

yon*_*oon 30

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

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

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

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

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