Zuul其他知识点

最后,对于 Zuul 的其他知识点也需要进行介绍,例如四种过滤器,以及在分布式中,最需要考虑的高可用问题。

过滤器

Zuul 的核心功能是路由与过滤,在这里对过滤器进行介绍。在前面的实例中我们可以看到,继承了 ZuulFilter,Zuul 中的过滤器包含四个方面的特性:过滤器类型、执行顺序、是否可以执行、具体的过滤逻辑。

这里需要说明的内容就是过滤器类型。前面的过滤器结构图,没有仔细说明过滤类型。在 Zuul 中,默认有以下四种过滤器。

  • pre:可以在请求被路由之前进行过滤。

  • route:在路由请求时被调用。

  • error:处理请求发生错误时调用。

  • post:在 route 和 error 过滤之后,再被调用。

高可用

Zuul 的高可用非常关键,因为从外部请求到后端服务的流量都会经过 Zuul。故而在应用场景中一般都需要部署高可用的 Zuul 以避免单点故障。虽然,部署起来比较简单,但在这里还是需要单独说明使用方式。

当多个 Zuul 注册到 Eureka Server 上时,只需将多个 Zuul 节点注册到 EurekaServer 上,就可实现 Zuul 的高可用。此时 Zuul 的高可用与其他微服务的高可用没什么区别。

当 Zuul 客户端也注册到 EurekaServer 上时,只需部署多个 Zuul 节点即可实现其高可用。Zuul 客户端会自动从 EurekaServer 中查询 ZuulServer 的列表,并使用 Ribbon 负载均衡地向 Zuul 集群发出请求。