SpringCloud Gateway 中 Filter 过滤器的作用和生命周期

2021-10-14 0 By admin

一、概述

在 Gateway 网关中 Filter 过滤器起着很重要的作用;Filter 过滤器分为两类:Pre 类型和 Post 类型。

  1. 在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,
  2. 在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等。

1.1、Filter 的作用

当我们有很多个服务时,如:user-service、goods-service、sales-service等服务,客户端请求各个服务的Api时,每个服务都需要做相同的事情,比如鉴权、限流、日志输出等。
对于这样重复的工作,有没有办法做的更好,答案是肯定的。
在微服务的上一层加一个全局的权限控制、限流、日志输出的Api Gateway服务,然后再将请求转发到具体的业务服务层。这个Api Gateway服务就是起到一个服务边界的作用,外接的请求访问系统,必须先通过网关层。

API Gateway
API Gateway

1.2、Filter 的生命周期

Spring Cloud Gateway同zuul类似,有“pre”和“post”两种方式的filter。
客户端的请求先经过“pre”类型的filter,然后将请求转发到具体的业务服务(如user-service服务),收到业务服务的响应之后,再经过“post”类型的filter处理,最后返回响应到客户端。

API Gateway Filter
API Gateway Filter

与zuul不同的是,filter除了分为“pre”和“post”两种方式的filter外;在Spring Cloud Gateway中,filter从作用范围可分为另外两种。

  1. 一种是针对于单个路由的 Gateway Filter,它在配置文件中的写法同predict类似;
  2. 另外一种是针对于所有路由的 Global Gateway Filer。