首页 > 其他分享 >服务网关ZUUL过滤器

服务网关ZUUL过滤器

时间:2023-02-09 10:56:22浏览次数:48  
标签:网关 服务 请求 类型 过滤器 ZUUL post 路由

过滤器两个功能:

1、其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础;
2、过滤器功能则负责对请求的处理过程进行预干预,是实现请求校验、服务聚合等功能的基础。

有4类可重写的方法来自定义过滤器,如下:

filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:自定义过滤器的实现,需要继承ZuulFilter,需要重写实现下面四个方法:
pre:可以在请求被路由之前调用
routing:在路由请求时候被调用
post:在routing和error过滤器之后被调用
error:处理请求时发生错误时被调用
filterOrder:通过int值来定义过滤器的执行顺序
shouldFilter:返回一个boolean类型来判断该过滤器是否要执行,所以通过此函数可实现过滤器的开关。在上例中,我们直接返回true,所以该过滤器总是生效。
run:过滤器的具体逻辑。需要注意,这里我们通过ctx.setSendZuulResponse(false)令zuul过滤该请求,不对其进行路由,然后通过ctx.setResponseStatusCode(401)设置了其返回的错误码,当然我们也可以进一步优化我们的返回,比如,通过ctx.setResponseBody(body)对返回body内容进行编辑等。

请求生命周期

对于其他一些过滤类型,这里就不一一展开了,根据之前对filterType生命周期介绍,可以参考下图去理解,并根据自己的需要在不同的生命周期中去实现不同类型的过滤器。

Zuul大部分功能都是通过过滤器来实现的,这些过滤器类型对应于请求的典型生命周期:

PRE: 这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。
ROUTING:这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求,并使用Apache HttpClient或Netfilx Ribbon请求微服务。
POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。
ERROR:在其他阶段发生错误时执行该过滤器。
除了默认的过滤器类型,Zuul还允许我们创建自定义的过滤器类型。例如,我们可以定制一种STATIC类型的过滤器,直接在Zuul中生成响应,而不将请求转发到后端的微服务。
在完成了pre类型的过滤器处理之后,请求进入第二个阶段routing,也就是之前说的路由请求转发阶段,请求将会被routing类型过滤器处理,这里的具体处理内容就是将外部请求转发到具体服务实例上去的过程,当服务实例将请求结果都返回之后,routing阶段完成,请求进入第三个阶段post,此时请求将会被post类型的过滤器进行处理,这些过滤器在处理的时候不仅可以获取到请求信息,还能获取到服务实例的返回信息,所以在post类型的过滤器中,我们可以对处理结果进行一些加工或转换等内容。

另外,还有一个特殊的阶段error,该阶段只有在上述三个阶段中发生异常的时候才会触发,但是它的最后流向还是post类型的过滤器,因为它需要通过post过滤器将最终结果返回给请求客户端(实际实现上还有一些差别,后续介绍)。

核心过滤器

在Spring Cloud Zuul中,为了让API网关组件可以更方便的上手使用,它在HTTP请求生命周期的各个阶段默认地实现了一批核心过滤器,它们会在API网关服务启动的时候被自动地加载和启用。我们可以在源码中查看和了解它们,它们定义于spring-cloud-netflix-core模块的org.springframework.cloud.netflix.zuul.filters包下。

Zuul中默认实现的Filter

禁用指定的Filter

可以在application.yml中配置需要禁用的filter,格式:

zuul:
    FormBodyWrapperFilter:
        pre:
            disable: true

标签:网关,服务,请求,类型,过滤器,ZUUL,post,路由
From: https://www.cnblogs.com/jimoliunian/p/17104427.html

相关文章

  • Filter细节_过滤器拦截方式配置
    Fitter-细节-过滤器拦截方式配置  拦截方式配置:资源被访问的方式注解配置:设置dispatcherTypes属性1.REQUEST:默认值。浏览器直接请求资源......
  • 计讯物联智慧灯杆网关数字赋能智慧公园,点亮城市新未来
    方案背景……公园作为城市景观与生态要素的空间载体,是市民远离尘嚣、缓解压力的理想休闲地。随着人们生活水平的提高,公园的信息化与智能化成为公园建设的必然方向。计讯......
  • 借助边缘智能网关实现智慧冷库监测
    冷库广泛地应用于果蔬、肉类、医药、化工品等相关产品的贮存和物流,提供保鲜和冷藏的功能,是保障民生生活和工业发展的不可或缺的需求。随着物联网、边缘计算技术的发展,智能......
  • 记录升级 KONG 网关遇到的坑
    记录升级KONG3.1网关遇到的坑原始版本:2.1升级版本:3.1.1动态路由默认使用插件request-transformer假如你有一个真实路由/user/all,现在需要网关做转发,前端请求......
  • Kong 网关简介及简单使用
    Kong网关简介及简单使用1、kong网关简介Kong是在客户端和微服务端转发API通信的API网关,可以通过插件扩展功能。Kong主要有两个重要的的组件:KongServer:基于ngi......
  • 工业智能网关在半导体电子厂设备管理有何作用?
    在电子信息,集成电路的发展与各行各业紧密联系在一起,特别是半导体技术,是电子产品的核心单元。我国半导体行业在飞速发展的同时,也面对一些问题。半导体电子厂用电量大,而且大部......
  • 【转载】过滤器+spring拦截器处理服务请求日志打印
    思路:通过拦截器拦截HttpServletRequest请求,从请求对象中获取请求流,解析请求参数,封装对象打印请求参数日志痛点:Requestbody只能读取一次,因为是流。想想看,java中的流也是......
  • wireshark过滤器
    一:过滤器使用wireshark工具抓包,如果使用默认配置,会得到大量的数据,所以我们就很难找到我们要分析的封包数据。所以使用wireshark过滤器就显得尤为重要。wireshark过滤器......
  • 助力芯片产业蓬勃发展,诚翔滤器推出光刻机过滤器
    最近几年,鉴于国际环境的情况,国内芯片产业大力发展,芯片产业的发展离不开光刻机等设备,在市场巨大的需求下,诚翔滤器推出了新一代的光刻机滤芯产品。诚翔滤器特别推荐使用PEmfl......
  • 过滤器实现登录拦截-cnblog
    1.3代码实现1).定义登录校验过滤器自定义一个过滤器LoginCheckFilter并实现Filter接口,在doFilter方法中完成校验的逻辑。那么接下来,我们就根据上述分析的步骤......