目录
1. 什么是Zuul?
Zuul是从设备、网站到应用程序后端的所有请求的前门。作为边缘服务应用程序,Zuul旨在实现动态路由,监控,弹性和安全性。
Zuul使用了各种不同类型的过滤器,这使我们能够快速灵活地将功能应用于边缘服务。这些过滤器帮助我们执行以下功能:
- 安全认证-识别每个资源的身份验证要求,并拒绝不满足要求的请求。
- 日志监控-跟踪某些数据和统计信息,以便为我们提供准确的生产视图。
- 路由转发-根据需要将请求动态路由到不同的后端群集。
- 压力测试-逐渐增加到群集的流量以评估性能。
- 限流-为每种类型的请求分配容量,并丢弃超出限制的请求。
- 熔断-直接在边缘构建一些响应,而不是将其转发到内部集群
Zuul 在 Netflix 的应用场景:
2. Zuul深入剖析
Zuul 是基于 Servlet 开发的,通过 Zuul 的核心构架图可以看出 Zuul 是由很多的过滤器组成的。
2.1 过滤器
Filter是Zuul的核心,用来实现对外服务的控制。Filter的生命周期有4个,分别是“PRE”、“ROUTING”、“POST”、“ERROR”,整个生命周期可以用下图来表示。
Zuul大部分功能都是通过过滤器来实现的。Zuul中定义了四种标准过滤器类型,这些过滤器类型对应于请求的典型生命周期。
- PRE:这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。
- ROUTING:这种过滤器将请求路由到微服务。这种过滤器用于构建发送