微服务框架 SpringCloud微服务架构 8 Gateway 网关 8.6 过滤器链执行顺序

news2024/9/28 5:25:52

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

SpringCloud微服务架构

文章目录

      • 微服务框架
      • SpringCloud微服务架构
      • 8 Gateway 网关
        • 8.6 过滤器链执行顺序
          • 8.6.1 过滤器执行顺序
          • 8.6.2 总结

8 Gateway 网关

8.6 过滤器链执行顺序

8.6.1 过滤器执行顺序

请求进入网关会碰到三类过滤器:当前路由的过滤器、DefaultFilter、GlobalFilter

【这三种过滤器的执行顺序是什么样的?】

请求路由后【意思首先得通过路由规则,过都过不去,过滤个空气】,会将当前路由过滤器和DefaultFilter、GlobalFilter,合并到一个过滤器链(集合)中,排序后依次执行每个过滤器

示意图:

在这里插入图片描述

其实路由过滤器和DefaultFilter 是同一类,都是GatewayFilter

GlobalFilter 也可以被适配成 GatewayFilter

在这里插入图片描述

所以粗略地说, 他们仨都是同一种类型,所以可以在集合中实现排序

【所以怎么排序?】

每一个过滤器都必须指定一个int类型的order值,order值越小,优先级越高,执行顺序越靠前。

GlobalFilter通过实现Ordered接口,或者添加@Order注解来指定order值,由我们自己指定

路由过滤器和defaultFilter的order由Spring指定,默认是按照声明顺序从1递增

【当过滤器的order值一样时,会按照 defaultFilter > 路由过滤器 > GlobalFilter的顺序执行。】

可以参考下面几个类的源码来查看:

  • **org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator#getFilters()**方法是先加载defaultFilters,然后再加载某个route的filters,然后合并。

    在这里插入图片描述

  • org.springframework.cloud.gateway.handler.FilteringWebHandler#handle()方法会加载全局过滤器,与前面的过滤器合并后根据order排序,组织过滤器链

    在这里插入图片描述

8.6.2 总结

路由过滤器、defaultFilter、全局过滤器的执行顺序?

  • ①order值越小,优先级越高
  • ②当order值一样时,顺序是defaultFilter最先,然后是局部的路由过滤器,最后是全局过滤器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【毕业设计】大数据房价数据分析可视化 - python

文章目录0 前言1 课题背景2 数据爬取2.1 爬虫简介2.2 房价爬取3 数据可视化分析3.1 ECharts3.2 相关可视化图表4 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问都可以问学长哦! 这两…

深度讲解风险策略的调优|附实操案例

量化风控审核过程中的通过率在贷前策略中是一大重要的内容,另外一个是逾期率。二者之间的因果关系就是通过率高低变化决定了逾期率风险的走势,通过率决定了逾期率的结果,而逾期率又对通过率起到了一个制衡的作用。 我们在本周早前详细谈过这个…

先验 后验 似然估计

一、完备事件组 设E是随机试验,Ω是相应的样本空间,A1,A2,...An为Ω的一个事件组,若 (1)AiAj(ij) (2)A1A2...AnΩ 则称A1A2...An为样本空间的…

web安全之MySQL手工注入的原理讲解和实验分析

目录 前提知识 靶场搭建 手工注入 高权限注入 sql注入之文件读写 基础防御 前提知识 数据库及sql语句知识,web相关知识。union合并查询的两个特征:前后查询互不干扰,前后查询的字段可以不同但是数量必须一致。order by 通过测试来猜解表…

解决SpringBoot整合Mybatis和Mybatis-Plus不能公用(版本兼容性问题)

1 前言 虽然Mybatis-Plus很好使,可以帮助我们生成CRUD的接口,但是有的情况下我们需要联合其他表进行多表查询,这时候Mybatis可以手写SQL的优势就体现出来了,一般在开发中,很多项目都是Mybatis和Mybatis-Plus公用的&am…

Markdowm使用手册

Markdown使用手册 目录Markdown使用手册一、基础语法1.1 书写各级标题1.2 字体加粗/斜体1.2.1 字体加粗1.2.2 字体倾斜1.3 线条使用1.3.1 删除线1.3.2 高亮线1.3.3 下划线二、插入工具2.1 插入代码2.1.1 插入某一行的代码2.1.2 插入整块的代码2.2 插入链接2.3 插入数学公式2.4 …

1546_AURIX_TC275_CPU子系统_指令耗时以及程序存储接口

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这里接触到了几种测试的方式。其中一个是反复执行同一个命令,看看执行之间的间隔。执行的时候,命令是有一定顺序的。这样,有时候流水线等特性会导致效率…

【Java并发入门】03 互斥锁(上):解决原子性问题

原子性问题的源头是线程切换 Q:如果禁用 CPU 线程切换是不是就解决这个问题了? A:单核 CPU 可行,但到了多核 CPU 的时候,有可能是不同的核在处理同一个变量,即便不切换线程,也有问题。 所以&a…

C++代码基本内存操作及原理

文章目录前言操作系统内存地址空间基本数据类型sizeof运算符指针运算内存分配与回收堆与栈malloc/new与free/delete基本类型的指针操作类定义中的内存使用前言 ​ C凭借其指针变量可以直接操作内存而得到了非常高的效率和程序性能,在一种编程语言里独树一帜。当然&…

网络变压器工厂:了解POE POE+ 网络变压器(网络隔离滤波器)

Hqst盈盛(华强盛)电子导读:这一节给大家分享:POE POE POE 网络变压器(网络滤波器,网络隔离变压器)的相关知识--poe poe 与POE简介及相关标准; 一、网络变压器 POE、 POE 与POE简介 POE 是Power …

Day17-购物车页面-收货地址-把address信息存储到vuex中

1.将address信息存储到vuex中: 我的操作: 1》在 store 目录中,创建用户相关的 vuex 模块,命名为 user.js: ①:新建user.js文件 ②:为user.js编写内容 2》在 store/store.js 模块中&#xff0c…

typora安装和配置PicGo图床

typora安装和配置PicGo图床typora安装和配置PicGo图床typora安装安装picgo图床配置picgo图床图床服务器picgo配置七牛云typora安装和配置PicGo图床 typora安装 windows安装typora 参考:https://www.bilibili.com/read/cv19476097/ m1 mac安装typora比较简单&…

数据结构-栈ArrayDeque的实现

优雅,实在是太优雅了 能把复杂的东西简单化就是功底。 我为何有如此感慨,了解ArrayDeque的实现你就知道,今天我们要讲的是以栈为思想而实现的ArrayDeque,我们都知道栈是先进后出,和队列相反,如下图&#x…

二叉树的中序遍历三种解法(递归+迭代+线索化)

文章目录递归迭代线索二叉树解法传送门: 添加链接描述 给你一颗二叉树,让你实现中序的遍历 递归 递归没什么好说的,直接无脑递归即可,时间复杂度:O(n),空间复杂度:O&am…

搭建环境AI画图stable-diffusion

目录简介环境准备安装conda(方式1)安装conda(方式2,推荐)验证conda安装成功安装stable-diffusion的环境简介 本文旨在记录过程,偶然看见一个AI画图的,体验看看。 stable-diffusion是一个输入简单图片,输出…

【Java难点攻克】「Guava RateLimiter」针对于限流器的入门到实战和源码原理分析

限流器的思路和算法 如果让你来造一个限流器,有啥想法? 漏桶算法 用一个固定大小的队列。比如设置限流为5qps,1s可以接受5个请求;那我们就造一个大小为5的队列,如果队列为满了,就拒绝请求;如…

JRebelXRebel的配置和使用(进阶篇)

JRebel&XRebel的配置和使用嘚吧嘚设置JRebel快捷键XRebel使用嘚吧嘚 之前简单介绍了JRebel&XRebel的安装和使用,不了解的朋友可以补补课😆。 JRebel&XRebel这款插件不仅仅可以用来热部署,所以继续分享一下这款插件的相关使用&a…

12月2日(第四天)

使用myabtis自动生成的时候&#xff0c;发现xml文件只会merge不会覆盖&#xff0c;这时候需要使用插件&#xff1a; <plugin type"org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />MyBatis Generator配置文件context元素的defaultModelType属性…

封装window10-21H1踩的坑,无法分析或处理pass[specialize]应答文件

最近在研究封装镜像&#xff0c;无奈公司不给用win11&#xff0c;只能封装win10 2022年全新Windows11系统封装图文教程&#xff08;一&#xff09;定制母盘 - 小鱼儿yr系统 (yrxitong.com) 坑1&#xff0c;封装好出现无法分析或处理pass[specialize]应答文件 解决办法&#x…

Java基础:String类、static关键字、Arrays类、Math类

第一章 String类 1.1 String类概述 概述 java.lang.String类代表字符串。Java程序中所有的字符串文字&#xff08;例如"abc"&#xff09;都可以被看作是实现此类的实例。 类String中包括用于检查各个字符串的方法&#xff0c;比如用于比较字符串&#xff0c;搜索…