社交电商平台源码请加企鹅求求:一零三八七七四六二六。filter的作用和生命周期

由filter工作流程点,可以知道filter有着非常重要的作用,在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等。首先需要弄清一点为什么需要网关这一层,这就不得不说下filter的作用了。

作用

当我们有很多个服务时,比如下图中的user-service、goods-service、sales-service等服务,客户端请求各个服务的Api时,每个服务都需要做相同的事情,比如鉴权、限流、日志输出等。

对于这样重复的工作,有没有办法做的更好,答案是肯定的。在微服务的上一层加一个全局的权限控制、限流、日志输出的Api Gatewat服务,然后再将请求转发到具体的业务服务层。这个Api Gateway服务就是起到一个服务边界的作用,外接的请求访问系统,必须先通过网关层。

生命周期

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

与zuul不同的是,filter除了分为“pre”和“post”两种方式的filter外,在Spring Cloud Gateway中,filter从作用范围可分为另外两种,一种是针对于单个路由的gateway filter,它在配置文件中的写法同predict类似;另外一种是针对于所有路由的global gateway filer,二者区别如下:

GatewayFilter : 需要通过spring.cloud.routes.filters 配置在具体路由下,只作用在当前路由上或通过spring.cloud.default-filters配置在全局,作用在所有路由上

GlobalFilter : 全局过滤器,不需要在配置文件中配置,作用在所有的路由上,最终通过GatewayFilterAdapter包装成GatewayFilterChain可识别的过滤器,它为请求业务以及路由的URI转换为真实业务服务的请求地址的核心过滤器,不需要配置,系统初始化时加载,并作用在每个路由上。

gateway filter

过滤器允许以某种方式修改传入的HTTP请求或传出的HTTP响应。过滤器可以限定作用在某些特定请求路径上。 Spring Cloud Gateway包含许多内置的GatewayFilter工厂。

GatewayFilter工厂同上一篇介绍的Predicate工厂类似,都是在配置文件application.yml中配置,遵循了约定大于配置的思想,只需要在配置文件配置GatewayFilter Factory的名称,而不需要写全部的类名,比如AddRequestHeaderGatewayFilterFactory只需要在配置文件中写AddRequestHeader,而不是全部类名。在配置文件中配置的GatewayFilter Factory最终都会相应的过滤器工厂类处理。

Spring Cloud Gateway 内置的过滤器工厂一览表如下:

Spring Cloud Gateway框架内置的GlobalFilter如下:

本篇文章讲述了Spring Cloud Gateway中的过滤器,包括GatewayFilter和GlobalFilter,有很多内置的过滤器并没有讲述到,比如限流过滤器,这个我觉得是比较重要和大家关注的过滤器,将在之后的文章讲述。

转载于:https://juejin.im/post/5cd235c0f265da035d0c9309

java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇相关推荐

  1. java版电子商务spring cloud分布式微服务b2b2c社交电商 (十四)服务注册(consul)

    Springcloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.这篇文章主要介绍 spring cloud consul 组件,它是一个提供服务发现和配置的工具.consul ...

  2. java版电子商务spring cloud分布式微服务b2b2c社交电商(四)SpringBoot 整合JPA

    b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对 ...

  3. java版电子商务spring cloud分布式微服务b2b2c社交电商(一)服务的注册与发现(Eureka)...

    一.spring cloud简介 电子商务平台源码请加企鹅求求:一零三八七七四六二六-spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代 ...

  4. java版电子商务spring cloud分布式微服务b2b2c社交电商-服务容错保护(Hystrix服务降级)...

    动手试一试 Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.在开始使用Spring Cloud Hystrix实现断路器之前,我们先拿之前实现的一些内容作为 ...

  5. (六)java版电子商务spring cloud分布式微服务b2b2c社交电商- commonservice-config配置服务搭建...

    介绍 电子商务平台源码请加企鹅求求:一零三八七七四六二六.Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持.使用Config Server,您可以在所有环境中管理应 ...

  6. java版电子商务spring cloud分布式微服务b2b2c社交电商:服务容错保护(Hystrix断路器)...

    断路器 断路器模式源于Martin Fowler的Circuit Breaker一文."断路器"本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时," ...

  7. java spring cloud版b2b2c社交电商spring cloud分布式微服务:分布式配置中心

    JAVASpring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六.Spring Cloud Config是Spring Cloud团队创建的一个 ...

  8. (十六)java springcloud版b2b2c社交电商spring cloud分布式微服务-使用spring cloud Bus刷新配置...

    b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.我们使用spring cloud分布式微服务云架构做了b2b2c的电子商务系统,除了架构本身自带的系统服务外,我们将b2b2c的业务服 ...

  9. java版b2b2c社交电商spring cloud分布式微服务-服务提供与调用

    java版b2b2c社交电商spring cloud分布式微服务源码请加企鹅求求:一零三八七七四六二六.上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册 ...

最新文章

  1. mysql for循环_基于Swoole扩展开发异步高性能的MySQL代理服务器
  2. CentOS安装配置之基本
  3. 斯坦福2019秋季课程CS224W
  4. SAP HANA CLOUD和aws一个实际项目中的性能比较
  5. tp5支持啥数据库_MS Access数据库是被严重低估的一款优秀软件
  6. 串口服务器的通讯模式
  7. tkinter Scale滑块
  8. [转]Python3之max key参数学习记录
  9. Servlet-Response直接返回一个文件并且在浏览器上显示
  10. 年轻人,AI不想给你加薪升职
  11. 交易系统开发(三)——风控系统
  12. 下载LineageOS 源码编译
  13. 苹果x漫画脸_【漫画大全】:漫画韩国全集
  14. mysql5.7架设征途服务器,征途服务端架设详细教程
  15. 360在网站安全防护中的实践
  16. 大数据发展必备三个条件
  17. linux根据文件内容查找文件名,文件查找:find命令,文件名后缀
  18. docker修改容器内nginx配置文件
  19. English Words(For Computer Science)
  20. 单踪示波器转换成多踪显示的电路设计

热门文章

  1. RecyclerView解析--onViewDetachedFromWindow()/onViewAttachedToWindow()
  2. RMAN的show,list,crosscheck,delete 命令整理
  3. Maven自動化構建工具
  4. 二分图-匈牙利算法模板
  5. (Incomplete) UVa 719 Glass Beads
  6. 利用GoogleEarth影像打造Skyline MPT案例(转载)
  7. 软件工程——理论、方法与实践 第六章
  8. C# web实现word 转Html、office转Html、pdf转图片 在线预览文件
  9. office2007的界面
  10. 29 个你必须知道的 Linux 命令