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


    1. Zuul的工作机制

      

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

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

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

      所以,过滤器可以说是Zuul实现API网管功能最为核心的部件,每一个进入Zuul的HTTP请求都会经过一些列的过滤器处理连得到请求响应并返回给客户端。

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

      

      过滤器的类型

      PRE:在请求达到Origin Server之前调用,比如身份验证

      CUSTOM:自定义的过滤器

      ROUTING:在路由请求时被调用

      POST:在routing和error过滤器之后被调用,比如做各种统计

      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原理

  • 相关阅读:
    hdu 1518 square
    AWR报告的使用
    状态模式之观察者和状态模式
    Arduino笔记五三轴陀螺仪L3G4200D
    TCP IP 学习笔记 二 链路层
    机房收费系统数据库设计小结
    TMSSCRIPTER介绍
    TMSScripter语法
    listview的一些用法
    进制转换
  • 原文地址:https://www.cnblogs.com/xiaoshen666/p/10844280.html
Copyright © 2020-2023  润新知