Netflix Zuul/Ribbon/Eureka 与 AWS ELB/ALB 和 ECS

Posted

技术标签:

【中文标题】Netflix Zuul/Ribbon/Eureka 与 AWS ELB/ALB 和 ECS【英文标题】:Netflix Zuul/Ribbon/Eureka vs AWS ELB/ALB & ECS 【发布时间】:2019-08-04 08:10:33 【问题描述】:

我从文档中了解到,使用 Netflix Zuul 和 Eureka(也可能是 Ribbon)可以构建一个主动负载均衡器。我一直使用 AWS ELB、ALB(用于容器管理的 ECS)和 R53。

除了供应商的可移植性之外,使用 Netflix 方法比使用 AWS 提供的 ALB/ELB 有什么优势吗?有没有使用 Netflix OSS 而不是开箱即用的 AWS ELB 的用例?

【问题讨论】:

【参考方案1】:

负载平衡器不管理客户端弹性,例如重试、退避、服务注册和路由。 Netflix OSS 提供中间层负载平衡和一些弹性功能。您会在 AWS AppMesh 和 AWS Cloud Map 中找到类似的功能。负载均衡器只是可以将客户端路由到函数、容器或实例的端点。使用负载均衡器和服务网格(来自 Netflis OSS 和/或 AWS)肯定有助于提高应用程序的可靠性。

【讨论】:

谢谢。我了解 netfix hystrix 的价值(重试、退避和断路器)。我还是不明白Ribbon、zuul、Eureka的价值。如果您使用 cname,则不需要 eureka。可以使用带 hystrix 的 ALB/ELB 代替 Ribbon 和 zuul。【参考方案2】:

Netflix OSS 堆栈可以与 ALB 和 ELB 等一起使用。例如,即使在使用 ALB 或 ELB 时,您仍然需要某种 API 网关(Zuul 允许您实现)来保护您的路由。此外,Ribbon 和 Eureka 还可用于服务发现(或者您可以简单地将路由硬编码到 Zuul 配置中的其他微服务,而不必费心建立 Eureka 服务器)。因此,您可以将 Zuul 用作与 ECS 中的其他微服务共享相同 ALB 的容器,并让来自前端的所有请求首先到达 Zuul 的路由,然后根据请求让 Zuul 决定哪个微服务路由代理请求。如果您不使用 ECS 或容器,同样的架构模式也适用于 EC2 虚拟机。

【讨论】:

以上是关于Netflix Zuul/Ribbon/Eureka 与 AWS ELB/ALB 和 ECS的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Netflix Android TV 应用程序 (com.netflix.ninja) 的电影 Deeplink

Netflix 怎样做系统监控?

将 Netflix Zuul 与 Netflix Hystrix 相结合

每周运行30万个容器实例 - Netflix 的容器化实践

Netflix 宣布停止开发 Hystrix

Netflix 网站架构学习