Zuul 和 Netflix Ribbon 的用例

Use case for Zuul and Netflix Ribbon

Zuul和Ribbon都可以用来做负载均衡。但是在哪种情况下我们应该更喜欢 Zuul 而不是 Ribbon,反之亦然?

Zuul 只提供网关模式的路由部分。但是,如果您使用的是复制的微服务,则 Ribbon 会发挥作用。 Ribbon默认使用round robin方式将消息分发给各个replica。

EX: 假设有3个客户端来请求。根据图中,客户的请求来到 zuul,ribbon 将第一个客户分配给 replica1,将第二个客户分配给 replica 2,将第三个客户分配给 replica 3。这意味着对请求进行负载平衡。

Zuul 负载均衡器默认使用来自 Ribbon 的 ZoneAwareLoadBalancer。所以没有什么比在 Zuul 和 Ribbon 之间选择负载平衡更好的了,基本上是 Ribbon 参与了负载平衡。查看 Zuul load-balancing

因为 Ribbon 是一个客户端负载均衡器模块,并且集成到许多 http 客户端模块中。例如,Feign 和 Load-balanced RestTemplate 支持 Ribbon。检查 Ribbon's working with load balancer

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