什么是Zuul?
Zuul是从设备和网站到Netflix流应用的后端的所有请求的前门。 作为边缘服务应用程序,Zuul旨在实现动态路由,监控,弹性和安全性。 它还可以根据需要将请求路由到多个Amazon Auto Scaling Groups。
为什么我们建立Zuul?
Netflix API流量的数量和多样性有时会导致生产问题迅速而且没有警告。 我们需要一个允许我们快速改变行为以便对这些情况作出反应的系统。
Zuul使用一系列不同类型的过滤器,使我们能够快速灵活地将功能应用于我们的边缘服务。 这些过滤器可帮助我们执行以下功能:
- 身份验证和安全 - 识别每个资源的身份验证要求,并拒绝不满足他们的请求。
- 洞察和监测 - 跟踪边缘的有意义的数据和统计数据,以便我们准确地了解生产情况。
- 动态路由 - 根据需要将请求动态路由到不同的后端集群。
- 压力测试 - 逐渐增加到集群的流量,以衡量性能。
- 负载分配 - 为每种类型的请求分配容量并删除超出限制的请求。
- 静态响应处理 - 直接在边缘构建一些响应,而不是将它们转发到内部集群
- 多区域弹性 - 跨AWS地区的路由请求,以使我们的ELB使用多样化,并使我们的边缘更接近我们的成员
Zuul的组成部分
Zuul包含多个组件:
- zuul-core - 库,其中包含编译和执行过滤器的核心功能。
- zuul-simple-webapp-webapp,其中显示了如何使用zuul-core构建应用程序的简单示例
- zuul-netflix - 库将其他NetflixOSS组件添加到Zuul中,例如使用功能区进行路由请求。
- zuul-netflix-webapp - webapp,它将zuul-core和zuul-netflix一起包装成一个易于使用的包