主题
Zuul的过滤器
前言
过滤器是Zuul的核心组件,本博客主要详细讨论一下Zuul的过滤器。
主要包括如下内容:
-
过滤器类型与请求生命周期
-
内置过滤器详解
-
2.1@EnableZuulServer所启用的过滤器
-
2.2@EnableZuulProxy所启用的过滤器
-
2.3编写Zuul过滤器
内容
★1.过滤器类型与请求生命周期★
过滤器类型与请求生命周期
Zuul大部分功能都是过滤器实现的。Zuul定义了4种标准的过滤器,分别对应不同的请求的生命周期。
-
PRE:这种过滤器在请求被路由之前调用。可利用这种过滤器实现身份验证、在集群中选择请求的微服务,记录调试信息等。
-
ROUTING:这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求,并使用Apache HttpClient或Netflix Ribbon请求微服务。
-
POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP header、收集统计信息和指标、将响应从微服务发送给客户端等。
-
ERROR:在其他阶段发送错误时执行该过滤器。
除了默认的过滤器类型,Zuul还允许创建自定义的过滤器类型。例如,可以定制一种STATIC类型的过滤器,直接在Zuul中生成响应,而不将请求转发到后端的微服务。
Zuul请求的生命周期如下图,该图详细描述了各种类型的过滤器的执行顺序。
★2.内置过滤器详解★
Spring Cloud默认为Zuul编写并启用了一些过滤器,这些过滤器有什么作用呢?我们不妨按照@EnableZuulServer、@EnableZuulProxy两个注解进行展开,相信大家对这两个注解都不陌生(至少都见过吧)。如果觉得陌生也没有关系,可将@EnableZuulProxy简单理解为@EnableZuulServer的增强版。事实上,当Zuul与Eureka、Ribbon等组件配合使用时ÿ