SpringCloud学习笔记(18)----Spring Cloud Netflix之服务网关Zuul原理

1. Zuul的工做机制

  

  Zuul提供了一个框架,能够对过滤器进行动态的加载,编译,运行。过滤器之间没有直接的相互通讯,他们是经过一个RequestContext的静态类来进行数据传递的。RequetstContext类中的ThreadLocal变量来记录每一个request所须要传递的数据。html

  它包含了对请求的路由和过滤两个功能,其中路由功能负责将请求转发到具体的微服务 实例上,而过滤器功能则负责对请求进行预处理。app

  然而实际上,路由功能在真正运行时,它的路由映射和请求转发功能也是由过滤器来完成的。路由映射器主要经过pre类型的的过滤器完成,将请求路径与配置的路由 规则进行匹配,找到须要的转发的目标地址,而请求转发的部分则是由route类型的过滤器来完成。框架

  因此,过滤器能够说是Zuul实现API网管功能最为核心的部件,每个进入Zuul的HTTP请求都会通过一些列的过滤器处理连获得请求响应并返回给客户端。微服务

  过滤器是由Groovy写得,这些过滤器文件被放在Zuul Server上的特定目录下面,Zuul会按期轮询这些目录,修改过的过滤器会动态的加载到Zuul Server中以便于request使用。post

  

  过滤器的类型学习

  PRE:在请求达到Origin Server以前调用,好比身份验证spa

  CUSTOM:自定义的过滤器3d

  ROUTING:在路由请求时被调用代理

  POST:在routing和error过滤器以后被调用,好比作各类统计htm

  ERROR:在其余阶段发生错误时执行该过滤器

2. 分析

1. @EnableZuulProxy和@EnableZuulServer注解

  @EnableZuulServer注解:普通网关,只支持基本的route和filter

  @EnableZuulProxy注解: 配合上服务发现与熔断开关的@EnableZuulServer的加强版,具备反向代理的功能。

2. ZuulConfiguration

  

  

  这里时调用zuulFilter的入口

  

  这里时将全部的filter加载到FilterRegistry中

3. ZuulProxyConfiguration继承了ZuulConfiguration

  

4. 过滤器的介绍

  

5. ServletDetectionFilter过滤器

  用来检测当前请求是经过Spring的DispatcherServlet处理运行仍是经过ZuulServlet来处理运行的,会被Servlet30WrapperFilter这个过滤器使用。

  

 

原文 SpringCloud学习笔记(18)----Spring Cloud Netflix之服务网关Zuul原理

相关文章
相关标签/搜索