SpringCloud-Gateway网关全悉

news2025/1/13 8:08:38

1)概述

使用说明文档

其他版本api文档请自由查阅:

https://spring.io/projects/spring-cloud-gateway#learn

在这里插入图片描述

1.1)是什么

Cloud全家桶中有个很重要的组件就是api网关,在1.x版本中都是采用的Zuul网关,但在2.x版本中,Zuul的升级一直跳票,SpringCLoud最后自己研发了一个网关替代Zuul。(采用了Zuul2的一些升级理念netty+webflux

一句话概括:

Spring Cloud Gateway 使用的Webflux中的reactor-netty响应式编程组件,底层使用了Netty通讯框架

在这里插入图片描述在这里插入图片描述

1.2)能干吗

  • 反向代理
  • 鉴权
  • 流量控制
  • 熔断
  • 日志监控

1.3)微服务架构中网关一般用在哪里

在这里插入图片描述

1.4)有了Zuul了怎么又出来了gateway

1.4.1 我们为什么选择Gatway

① neflix不太靠谱,zuul2.0一直跳票,迟迟不发布

  • Zuul1.0已经进入维护阶段,而且Gateway是SpringCloud团队研发的,值得信赖,而且很多功能Zuul都没有用起来,也非常的简单便捷
  • Gateway是基于异步非阻塞模型上进行开发的,性能方面不用担心,虽然Netflix早就发布了最新的Zuul 2.x,但Spring Cloud貌似没有整合计划,而且Netflix相关组件都宣布进入维护期;不知前景如何?
  • 多方面综合考虑Gateway是很理想的网关选择

② SpringCloud Gateway具有如下特性:

  • 基于Spring Framework 5,Project Reactor 和 Spring Boot 2.0进行构建
  • 动态路由:能匹配任何请求属性
  • 可以对路由指定 Predicate(断言)和 FIlter(过滤器)
  • 集成 Hystrix 的断路器功能
  • 集成 Spring Cloud 服务发现功能
  • 易于编写的 Predicate(断言)和 FIlter(过滤器)
  • 请求限流功能
  • 支持路径重写

③ SpringCloud Gateway与Zuul的区别

在Spring Cloud Finchley 正式版之前,Spring Cloud推荐的网关是Netflix提高的Zuul;

  • 1、Zuul 1.x,是一个基于阻塞 I/O 的 API Gateway
  • 2、Zuul 1.x 基于Servlet 2.5 使用阻塞架构它不支持任何长连接(如 Websocket)Zuul 的设计模式和Nginx较像,每次 I/O 操作都是从工作线程中选择一个执行,请求线程被阻塞直到工作线程完成,但是差别是Nginx用C++实现,Zuul基于Java实现,而JVM本身会有第一次加载较慢的情况,是的Zuul的性能相对较差。
  • 3、Zuul 2.x 理念更先进,想基于Netty非阻塞和支持长连接,但Spring Cloud目前还未整合。Zuul 2.x 的性能较 Zuul 1.x 有较大提升。在性能方面,根据官方提供的基准测试,Spring Cloud Gateway 的 RPS(每秒请求数)是 Zuul 的1.6倍。
  • 4、Spring Cloud Gateway 建立在 Spring Framework 5,Project Reactor 和 Spring Boot 2.0 之上,使用非阻塞API。
  • 5、Spring Cloud Gateway 还支持 Websocket ,并且与Spring 紧密集成,拥有更好的开发体验。

1.4.2)Zuul 1.x 模型

Spring Cloud 中所集成的Zuul版本,采用的是Tomcat容器,使用的是传统的Servlet IO处理模型

Servlet的生命周期:

  • servlet由servlet container 进行生命周期管理
  • container启动时构造servlet对象并调用servlet init() 进行初始化;
  • container运行时接受请求,并为每个请求分配一个线程(一般从线程池中获取空闲线程),然后调用service();
  • container关闭时调用 servlet destory() 销毁serlvet;
    在这里插入图片描述
    在这里插入图片描述

1.4.3)Gateway模型

WebFlux是什么
传统的web框架,比如说:struts,Spring mvc等都是基于Servlet API与Servlet容器基础上运行的。
但是
在Servlet 3.1 之后 有了异步非阻塞的支持。而WebFlux是一个典型的异步非阻塞框架,它的核心是基于Reactor 的相关API实现的。相对于传统的web框架来说,它可以运行在诸如Netty,Undertow及支持Servlet 3.1的容器上。非阻塞+函数式编程(Spring 5 必须让你使用Java 8)

Spring WebFlux是Spring 5.0 引入的新的响应式框架,区别于Spring MVC,它不需要依赖Servlet API,它是完全异步非阻塞的,并且基于Reactor来实现响应式流规范。

在这里插入图片描述

官网地址:
https://docs.spring.io/spring-framework/docs/5.0.0.RELEASE/spring-framework-reference/web-reactive.html#webflux-introduction

在这里插入图片描述

2)三大核心概念

在这里插入图片描述

2.1)Route(路由)

路由是构建网关的基本模块,它由 ID,目标 URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由。

2.2 )Predicate(断言)

参考Java8的java.util.function.Predicate开发人员可以匹配Http请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由。

说白了,Predicate就是为了实现一组匹配规则,让请求过来找到对应的Route进行处理

2.3)Filter(过滤器)

指的是Spring 框架中 GatewayFilter的实例,使用过滤器,可以在请求被路由或者之后对请求进行修改。

3)Gateway工作流程( 路由转发+执行过滤器链

参考文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/


客户端向 SPringCloud Gateway 发出请求,然后在Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到Gateway Web Handler。

Handler 再通过指定的过滤器链将请求发送到我们实际的服务执行业务逻辑,然后返回。

Filter 在 “pre” 类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等;
在 “post” 类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等有着非常重要的作用。

在这里插入图片描述

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

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

相关文章

【Logback技术专题】「入门到精通系列教程」深入探索Logback日志框架的原理分析和开发实战技术指南(下篇)

深入探索Logback日志框架的原理分析和开发实战技术指南&#xff08;下篇&#xff09; 根节点configuration包含的属性基本参数详解子节点介绍设置上下文名称<contextName>使用案例 设置变量属性值<property>获取时间戳字符串<timestamp>设置loggerroot根节点…

CDH 之 Hive 中文乱码平定通用法则

一、乱象 1.1 中文注释乱码 hive> DESCRIBE test; OK # col_name data_type comment id string ??ID ?? pcs string ????? …

java实现远程执行Linux下的shell脚本

java实现远程执行Linux下的shell脚本 背景导入Jar包第一步&#xff1a;远程连接第二步&#xff1a;开启Session第三步&#xff1a;新建测试脚本文件结果报错 背景 最近有个项目&#xff0c;需要在Linux下的服务器内写了一部分Python脚本&#xff0c;业务处理却是在Java内&…

采用三五555时基电路的简易/自动温度控制器电路设计

采用 555 时基电路的简易温度控制器 本电路是采用555时基集成电路和很少的外围元件组成的一个温度自动控制器。因为电路中各点电压都来自同一-直流电源&#xff0c;所以不需要性能很好的稳压电源&#xff0c;用电容降压法便能可靠地工作。电路元件价格低、体积小、便于在业余条…

喜报!Coremail实力上榜“邮件安全网关”和“反钓鱼”等三大赛道!

6月28日&#xff0c;由国内首家专业聚焦网络安全商业市场研究分析和加速服务的机构斯元商业咨询出品的「网安新兴赛道厂商速查指南|短名单精选」&#xff08;以下简称「短名单精选」&#xff09;正式出炉。 Coremail凭借出色的综合能力&#xff0c;成功上榜“邮件安全网关&…

最新导则下生态环评报告编制要求与规范

根据生态环评内容庞杂、综合性强的特点&#xff0c;依据生态环评最新导则&#xff0c;将内容分为4大篇章(报告篇、制图篇、指数篇、综合篇)、10大专题(生态环评报告编制、土地利用图的制作、植被类型及植被覆盖度图的制作、物种适宜生境分布图的制作、生物多样性测定、生物量及…

Django 的 REST framework 基础知识

系列文章目录 提示&#xff1a;阅读本章之前&#xff0c;请先阅读目录 文章目录 系列文章目录前言1. 创建django项目2. 修改settings.py3. 根目录创建static文件夹4. 启动项目5. 创建数据表6. 创建一个超级管理员7. 登录django的admin后台8. 安装 REST framework9. 配置setting…

Quiz 16_3-2: Databases | Python for Everybody 配套练习_解题记录

文章目录 Python for Everybody课程简介Quiz 16_3-2: Databases单选题&#xff08;1-10&#xff09;操作题Autograder 1: Counting Email in a DatabaseAutograder 2: Multi-Table Database - Tracks Python for Everybody 课程简介 Python for Everybody 零基础程序设计&…

数据库管理-第八十七期 19c OCM之路-第一堂(02)(20230630)

第八十六期 19c OCM之路-第一堂&#xff08;02&#xff09; 本来计划是昨天写的&#xff0c;但是昨天突发膝盖筋膜炎&#xff0c;去骨科医院做了下治疗&#xff0c;前后两夜几乎无眠。本期内容主要是针对第一堂第四个考点&#xff1a;Manage application containers内容去做的…

Spring Boot中的@MessageMapping注解:原理及使用

Spring Boot中的MessageMapping注解&#xff1a;原理及使用 简介 在Web应用程序中&#xff0c;实现实时的双向通信是一项重要的功能。为了实现这种功能&#xff0c;需要使用WebSocket协议。Spring框架提供了Spring WebSocket模块来实现WebSocket通信。Spring Boot是基于Sprin…

《刷题日记03》链表

题目描述力扣https://leetcode.cn/problems/LGjMqU/ 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值…

实例003 像开始菜单一样漂亮的菜单

实例说明 Windows的开始菜单非常的独特&#xff0c;在菜单的旁边有一条竖着的彩条&#xff0c;彩条中还写着文字。这种独特的菜单能够使程序的界面看起来更加的漂亮。本例中就实现了这种菜单&#xff0c;运行本例弹出“打开菜单”时&#xff0c;就会看到菜单的左边有一个紫色的…

ChatGPT微调系列一:微调 流程

文章目录 前言一、啥叫微调二、为啥要微调三、不是所有模型都可以微调的四、总述微调的基本流程&#xff0c;以及涉及的主要函数&#xff0c;参数1. 安装2. 准备训练数据3. openai.api_key os.getenv() 进行一个说明4. 通过API 调用模型 常用函数5. 微调模型 常用函数6. OpenA…

【论文阅读】Self-supervised Image-specific Prototype Exploration for WSSS

一篇CVPR2022上的论文&#xff0c;用于弱监督分割 论文标题&#xff1a; Self-supervised Image-specific Prototype Exploration for Weakly Supervised Semantic Segmentation 作者信息&#xff1a; 代码地址&#xff1a; https://github.com/chenqi1126/SIPE 论文链接&…

【doxygen】markdown 表格中插入换行与缩进

文章目录 markdown 表格换行markdown 标准换行doxygen 中 markdown 表格换行 markdown 表格缩进 doxygen 中使用 markdown markdown 表格换行 markdown 表格生成 doxygen 时换行与标准的 markdown 语法稍有差异 markdown 标准换行 markdown 中可以使用 html 的换行标签 <…

Python学习之文件操作【基本操作,JSON文件操作】

前言 Python的文件操作是一个非常重要的主题&#xff0c;它可以用来读取&#xff0c;写入和操作各种类型的文件&#xff0c;包括文本文件、图像文件、音频文件等。在这里&#xff0c;我们将讨论一些基本的Python文件操作和JSON文件操作。 Python文件操作 Python提供了多种方…

73、基于51单片机温湿度光照检测控制esp8266无线WiFi app远程监测报警(程序+原理图+PCB源文件+参考论文+开题报告+元器件清单等)

研究目的 现代的生活中&#xff0c;许多情况都对环境的温湿度有比较严格的要求&#xff0c;因此&#xff0c;必须在某些特定环境安装温湿度报警器对环境的温湿度进行监控和调节。为此&#xff0c;本题目选用花卉温室的温湿度调节为背景环境&#xff0c;研究利用集成温湿度传感…

赛效:PDF文件怎么加密

1&#xff1a;在网页上打开并登录91ai工具&#xff0c;在特色功能里点击“PDF加密”。 2&#xff1a;点击上传文件&#xff0c;将本地PDF文件添加上去。 3&#xff1a;文件上传成功后&#xff0c;在文件下方设置密码后点击“开始加密”。 4&#xff1a;加密完成后点击下方下载按…

YOLOv5改进系列(12)——更换Neck之BiFPN

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

浅谈安科瑞电力监控系统解决方案 安科瑞 许敏

摘要&#xff1a;随着经济的发展&#xff0c;能源消耗速度正不断加快&#xff0c;因此我国提出了绿色可持续发展战略&#xff0c;要求在发展建设中以节能为主&#xff0c;不断减少资源能耗&#xff0c;而电能便是首要控制内容。如今我国为电能使用&#xff0c;对计量表进行了优…