SpringCloud Gateway--网关服务基本介绍和基本原理

😀前言

本篇博文是关于SpringCloud Gateway的基本介绍,希望你能够喜欢

🏠个人主页:晨犀主页

🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰

如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

文章目录

  • [SpringCloud Gateway](#SpringCloud Gateway)
    • [Gateway 介绍](#Gateway 介绍)
      • 看一个需求,引出网关服务
      • [Gateway 网络拓扑图](#Gateway 网络拓扑图)
      • [Gateway 是什么](#Gateway 是什么)
      • 官网
      • [Gateway 核心功能](#Gateway 核心功能)
      • [Gateway VS Zuul](#Gateway VS Zuul)
        • [Gateway 和Zuul 区别](#Gateway 和Zuul 区别)
        • [Gateway 特性](#Gateway 特性)
    • [Gateway 基本原理](#Gateway 基本原理)

SpringCloud Gateway

Gateway 介绍

看一个需求,引出网关服务

1、有一个前后端分离项目, 分析如图

2、使用网关服务, 重构项目架构

Gateway 网络拓扑图

Gateway 是什么

  1. Gateway 是在Spring 生态系统之上构建的API 网关服务,基于Spring ,Spring Boot 和ProjectReactor 等技术。
  2. Gateway 旨在提供一种简单而有效的方式来对API 进行路由,以及提供一些强大的过滤器功能,例如∶熔断、限流、重试等

官网

官网地址: https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/

Gateway 核心功能

1. 鉴权
2. 流量控制
3. 熔断
4. 日志监控
5.  反向代理

Gateway VS Zuul

Gateway 和Zuul 区别
  1. SpringCloud Gateway 作为Spring Cloud 生态系统中的网关,目标是替代Zuul
  2. SpringCloud Gateway 是基于Spring WebFlux 框架实现的
  3. Spring WebFlux 框架底层则使用了高性能的Reactor 模式通信框架Netty , 提升了网关性能
Gateway 特性

Spring Cloud Gateway 基于Spring Framework(支持Spring WebFlux),Project Reactor 和Spring Boot 进行构建,具有如下特性:

  1. 动态路由
  2. 可以对路由指定Predicate(断言)和Filter(过滤器)
  3. 集成Hystrix的断路器功能
  4. 集成Spring Cloud 服务发现功能
  5. 请求限流功能
  6. 支持路径重写

Gateway 基本原理

Gateway 核心组件

一张图
解读:
  1. web 请求,通过一些匹配条件,定位到真正的服务节点/微服务模块,在这个转发过程的前后,进行一些精细化控制。
  2. predicate: 就是匹配条件。
  3. filter: 可以理解为是网关的过滤机制。有了predicate 和filter,再加上目标URL.就可以实现一个具体的路由。
Route(路由)

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

Predicate(断言)

1、说明: 对HTTP 请求中的所有内容(例如请求头或请求参数)进行匹配,如果请求与断言相匹配则进行路由。

2、简单举例, 比如配置路径, - Path=/member/get/** #断言,路径相匹配的进行路由转发, 如果Http 请求的路径不匹配, 则不进行路由转发.

Filter(过滤)

1、一句话: 使用过滤器,可以在请求被路由前或者之后对请求进行处理。

2、你可以理解成, 在对Http 请求断言匹配成功后, 可以通过网关的过滤机制, 对Http 请求处理。

3、简单举例:

yml 复制代码
filters:
	- AddRequestParameter=color, blue #过滤器在匹配的请求头加上一对请求头,名称为color 值为blue, 比如原来的http 请求是http://localhost:10000/member/get/1 ==过滤器处理=>http://localhost:10000/member/get/1?color=blue

How It Works 工作机制

示意图
梳理流程(how to work)
  1. 客户端向Spring Cloud Gateway 发出请求。然后在Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到Gateway Web Handler。
  2. Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。
  3. 过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前("pre")或之后("post")执行业务逻辑。
  4. Filter 在"pre"类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,
  5. 在"post"类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等有着非常重要的作用。
    一句话说:路由转发+执行过滤器链

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁

希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

相关推荐
Re.不晚10 分钟前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
雷神乐乐16 分钟前
Maven学习——创建Maven的Java和Web工程,并运行在Tomcat上
java·maven
码农派大星。20 分钟前
Spring Boot 配置文件
java·spring boot·后端
顾北川_野27 分钟前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
江深竹静,一苇以航29 分钟前
springboot3项目整合Mybatis-plus启动项目报错:Invalid bean definition with name ‘xxxMapper‘
java·spring boot
confiself1 小时前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
Wlq04151 小时前
J2EE平台
java·java-ee
XiaoLeisj1 小时前
【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
java·开发语言·java-ee
豪宇刘1 小时前
SpringBoot+Shiro权限管理
java·spring boot·spring
Elaine2023911 小时前
02多线程基础知识
java·多线程