SpringCloud(十):Zuul之Filter详解

Zuul详解

官方文档github.com/Netflix/zuu…git

Zuul的中心是一系列过滤器,可以在HTTP请求和响应的路由过程当中执行一系列操做。github

如下是Zuul过滤器的主要特征:后端

  • 类型:一般在应用过滤器时在路由流程中定义阶段(尽管它能够是任何自定义字符串)
  • 执行顺序:在类型中应用,定义跨多个过滤器的执行顺序
  • 标准:执行过滤器所需的条件
  • 操做:知足条件时要执行的操做

Zuul提供了一个动态读取,编译和运行这些过滤器的框架。过滤器不直接相互通讯 - 而是经过RequestContext共享状态,RequestContext对每一个请求都是惟一的。服务器

过滤器目前用Groovy编写,尽管Zuul支持任何基于JVM的语言。每一个Filter的源代码都写入Zuul服务器上的一组指定目录,这些目录会按期轮询更改。更新的过滤器从磁盘读取,动态编译到正在运行的服务器中,并由Zuul为每一个后续请求调用。框架

过滤类型

Zuul大部分功能都是经过过滤器来实现的。Zuul中定义了四种标准过滤器类型,这些过滤器类型对应于请求的典型生命周期:微服务

  • PRE:这种过滤器在请求被路由调用以前调用。咱们可利用这种过滤器实现身份验证、再集群中选择请求的微服务、记录调试信息等。
  • ROUTING:这种过滤器将请求路由到微服务。用于构建发送给微服务的请求,并使用Apache HttpClientNetflix Ribbon构建和发送原始HTTP请求的位置。
  • POST:请求在路由到微服务以后执行。示例包括向响应添加标准HTTP标头、收集统计信息和指标、以及将响应从源传输到客户端。
  • ERROR:过滤器在其中一个阶段发生错误时执行。

除了默认的过滤器类型,Zuul还容许咱们建立自定义过滤器类型。例如,咱们有一个自定义STATIC类型的过滤器,它直接在Zuul中生成响应,而不是将请求转发到后端的微服务。调试

Zuul请求的生命周期

Zuul请求的生命周期以下图所示,改图详细的描述了各类类型的过滤器执行顺序。 code

image
相关文章
相关标签/搜索