Zuul详解

官方文档:https://github.com/Netflix/zuul/wiki/How-it-Works

Zuul的中心是一系列过滤器,能够在HTTP请求和响应的路由过程中执行一系列操作。

以下是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请求的生命周期如下图所示,改图详细的描述了各种类型的过滤器执行顺序。 

转载于:https://www.cnblogs.com/mmzs/p/10097538.html

Zuul之Filter详解相关推荐

  1. 布隆过滤器+布隆过滤器(Bloom Filter)详解

    布隆过滤器+布隆过滤器(Bloom Filter)详解 程序 = 数据结构 + 算法 -- 图灵奖得主,计算机科学家N.Wirth(沃斯) A Bloom filter is a space effi ...

  2. logstash过滤器插件filter详解及实例

    原创作者:峰哥ge 原创地址: https://www.cnblogs.com/FengGeBlog/p/10305318.html logstash过滤器插件filter grok正则捕获 grok ...

  3. es6 map()和filter()详解【转】

    本文转载自: https://www.cnblogs.com/zxyun/p/7019631.html 作者:zxyun 转载请注明该声明. 原文地址:http://www.zhangxinxu.co ...

  4. spring cloud-zuul的Filter详解

    博客原文:http://blog.csdn.net/liuchuanhong1/article/details/62236793 在前面我们使用zuul搭建了网关http://blog.csdn.ne ...

  5. SpringCloud工作笔记037---spring cloud-zuul的Filter详解

    JAVA技术交流QQ群:170933152 在前面我们使用zuul搭建了网关http://blog.csdn.net/liuchuanhong1/article/details/59056278 关于 ...

  6. 过滤器Filter详解

    一.简介 (一)概述        Filter,过滤器,用于在servlet之外对request 和response 进行修改.Filter 有一个 FilterChain 的概念,一个Filter ...

  7. Spring Cloud Zuul之ZuulFilter详解

    简介 Spring Cloud Zuul网关在整个微服务体系中肩负对外开放接口.请求拦截.路由转发等作用,其核心处理则是ZuulFilter ZuulFilter部分源码 Zuul Filter全部继 ...

  8. 布隆过滤器(Bloom Filter)详解——基于多hash的概率查找思想

    转自:http://www.cnblogs.com/haippy/archive/2012/07/13/2590351.html   布隆过滤器[1](Bloom Filter)是由布隆(Burton ...

  9. 海量数据处理之Bloom Filter详解

    前言 本博客内曾已经整理过十道海量数据处理面试题与十个方法大总结.接下来,本博客内会重点分析那些海量数据处理的方法,并重写十道海量数据处理的面试题.如果有任何问题,欢迎不吝指正.谢谢. 一.什么是Bl ...

最新文章

  1. 最新编程语言排名:Python超Java、JS保持领头羊
  2. Redis站点流量统计HyperLogLog
  3. 到底是什么原因才导致 select * 效率低下的?
  4. 时区的概念定义和发展史
  5. 华为android强刷系统下载地址,华为P6S官方rom固件刷机包下载_华为P6S原版系统强刷升级包...
  6. HDOJ--2087--剪花布条(BF算法和KMP算法都能使用)
  7. 怎么判断有用户在远程连接目标电脑_你的电脑是肉鸡吗?
  8. Vue指令之v-show
  9. 非递归方式对二叉树进行前序、中序、后序遍历(C++实现)
  10. atitit.重装系统需要备份的资料总结 o84..
  11. idea console窗口不见了_Python 闲谈 14——安利下IDEA开发神器中好用到爆的插件
  12. 最新Java基础面试题及答案整理
  13. 嵌入式 Linux下检索字符串命令grep
  14. 计算机用户文件夹加密,如何加密文件夹?手把手教你给文件夹加密方法
  15. 数据挖掘:针对小样本与不均衡样本的机器学习算法实践
  16. linux中cpu使用率命令,LINUX下查看CPU使用率的命令
  17. ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决
  18. QT中自定义控件和插件大致方法
  19. ipv6内网穿透,有ipv6地址外网无法访问
  20. 软考案例题目答题技巧

热门文章

  1. 5.15云原生中间件 Meetup 成都站来啦!
  2. 蚂蚁前端的开局十年:一切都在路上
  3. Tengine开源新特性:如何让HTTPS处理能力轻松翻倍?
  4. 站在巨人肩膀上的意思就是拒绝重复造轮子,分享12个常见的js插件
  5. H5移动端页面设计心得分享
  6. RMAN的一些术语解释
  7. ASM文件拷贝到本地
  8. linux系统中的目录讲解
  9. mysql安装笔记02
  10. 浅谈unity中gamma空间和线性空间