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。
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。