跳到主要内容

Zuul有哪几类Filter,他们的执行顺序是怎么样的?

参考答案:

Zuul是Netflix开源的微服务网关,它提供了一种简单的方式来为微服务架构添加路由、监控、弹性、安全性等功能。Zuul的核心功能是通过过滤器来实现的,这些过滤器对请求和响应进行各种处理。Zuul的过滤器可以分为四种类型:前置过滤器(Pre Filters)、路由过滤器(Routing Filters)、后置过滤器(Post Filters)和错误过滤器(Error Filters)。

他们的执行顺序如下:

  1. 前置过滤器(Pre Filters):在请求被路由到目标服务前执行。它们可以用来进行身份验证、参数校验、请求转发等操作。前置过滤器可以修改请求的header和body,还可以中断请求,直接返回响应。
  2. 路由过滤器(Routing Filters):用于将请求路由到具体的服务实例,可以用来实现动态路由、负载均衡等功能。路由过滤器通常使用Apache HttpClient或者Netflix Ribbon来发送HTTP请求。
  3. 后置过滤器(Post Filters):在请求被路由到目标服务后执行。它们可以用来对响应进行处理,如添加header、修改body等。
  4. 错误过滤器(Error Filters):当上述过滤器在执行过程中发生错误时,错误过滤器会捕获这些错误并进行处理。错误过滤器可以获取请求和响应的信息,并对其进行处理。

正常流程:请求到达首先会经过前置过滤器,而后到达路由过滤器,进行路由,请求就到达真正的服务提供者,执行请求,返回结果后,会到达后置过滤器,最后返回响应。

异常流程:整个过程中,前置过滤器或路由过滤器出现异常,都会直接进入错误过滤器,错误处理完毕后,会将请求交给后置过滤器,最后返回给用户。

总的来说,Zuul的过滤器执行顺序是:前置过滤器 -> 路由过滤器 -> 后置过滤器(或错误过滤器)。当路由过滤器或前置过滤器出现异常时,会跳过后续的正常流程,直接进入错误过滤器进行处理。