SpringCloud Zuul(四)之工作原理

Zuul是一个动态路由系统,其核心是过滤器机制。过滤器按类型分为PRE、ROUTING、POST和ERROR,分别在请求处理的不同阶段执行。PRE过滤器用于认证和调试,ROUTING处理路由,POST添加响应头和收集统计,ERROR处理错误。过滤器以Groovy编写,动态编译并运行,允许创建自定义过滤器类型以满足特定需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、筛选器概述

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

以下是Zuul过滤器的主要特征:

  • 类型:通常定义路由流程中应用过滤器的阶段(尽管它可以是任何自定义字符串)
  • 执行顺序:在类型中应用,定义多个过滤器的执行顺序
  • 条件:执行过滤器所需的条件
  • 动作:如果符合条件,将执行的动作

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

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

 

二、筛选器类型

有几种标准过滤器类型对应于请求的典型生命周期:

  • PRE 过滤器在路由到原点之前执行。示例包括请求身份验证,选择原始服务器以及记录调试信息。
  • ROUTING 过滤器处理将请求路由到源。这是使用Apache HttpClient或Netflix Ribbon构建和发送原始HTTP请求的地方。
  • POST 过滤器在将请求路由到源之后执行。示例包括将标准HTTP标头添加到响应,收集统计信息和指标以及将响应从源流传输到客户端。
  • ERROR 在其他阶段之一发生错误时,将执行过滤器。

除了默认的过滤器流程外,Zuul还允许我们创建自定义过滤器类型并明确执行它们。例如,我们有一个自定义STATIC类型,它在Zuul中生成响应,而不是将请求转发到源。为此,我们有一些用例,其中一个是内部端点,其中包含有关特定Zuul实例的调试数据。

 

三、Zuul请求生命周期

zuul-request-lifecycle.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值