Spring Cloud Zuul 服务网关(核心过滤器)

Posted dreamstar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Zuul 服务网关(核心过滤器)相关的知识,希望对你有一定的参考价值。

写在前面 本文参考以下文章,请参考原文

Spring Cloud源码分析(四)Zuul:核心过滤器

Spring Cloud Zuul :包含对请求的路由和过滤两个功能

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

其实Spring Cloud Zuul 路由功能也是由过滤器实现的,它的路由映射和请求转发都是由几个不同的过滤器完成的

  • 路由映射主要通过pre类型的过滤器完成,它将请求路径与配置的路由规则进行匹配,以找到需要转发的目标地址
  • 请求转发的部分则是由route类型的过滤器来完成,对pre类型过滤器获得的路由地址进行转发

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

过滤器:Zuul实现API网关最核心的部件

在Spring Cloud Zuul中实现的过滤器必须包含4个基本特征:过滤类型、执行顺序、执行条件、具体操作。定义一个过滤器只要继承ZuulFilter类

技术图片
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.exception.ZuulException;

public class AccessFilter extends ZuulFilter {

    @Override
    public boolean shouldFilter() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public Object run() throws ZuulException {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String filterType() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int filterOrder() {
        // TODO Auto-generated method stub
        return 0;
    }

}
View CodeZuulFilter
  • filterType:返回一个字符串来代表过滤器的类型,这个类型就是在HTTP请求过程中定义的各个阶段。在Zuul中默认定义了四种不同生命周期的过滤器类型,具体如下:
    • pre:可以在请求被路由之前调用。
    • routing:在路由请求时候被调用。
    • post:在routing和error过滤器之后被调用。
    • error:处理请求时发生错误时被调用。
  • filterOrder:通过int值来定义过滤器的执行顺序,数值越小优先级越高。
  • shouldFilter:返回一个boolean类型来判断该过滤器是否要执行。我们可以通过此方法来指定过滤器的有效范围。
  • run:过滤器的具体逻辑。在该函数中,我们可以实现自定义的过滤逻辑,来确定是否要拦截当前的请求,不对其进行后续的路由,或是在请求路由返回结果之后,对处理结果做一些加工等。

 

以上是关于Spring Cloud Zuul 服务网关(核心过滤器)的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud:服务网关zuul过滤器

Spring Cloud:服务网关 Zuul(路由)Finchley 版

Spring Cloud:服务网关 Zuul(过滤器)Finchley 版

spring cloud深入学习-----Spring Cloud Zuul网关 Filter熔断重试高可用的使用方式

spring cloud 入门系列六:使用Zuul 实现API网关服务

Spring Cloud 微服务二:API网关spring cloud zuul