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

2023-09-21 00:02:57

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

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

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

SpringCloud Gateway

Gateway 介绍

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

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

image-20230827183212602

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

image-20230827183233479

Gateway 网络拓扑图

image-20230827183445415

Gateway 是什么

image-20230827183508236

  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 核心组件

一张图

image-20230827183754107

解读:
  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、简单举例:

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

How It Works 工作机制

示意图

image-20230827223314910

image-20230827223329323

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

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

更多推荐

域名解析--nslookup和dig

dig(DomainInformationGroper)dig是一个功能强大且更灵活的DNS查询工具,通常在Linux和macOS等Unix-like操作系统上使用。以下是dig的一些常见用法和区别:查询域名信息digexample.com这将返回与指定域名相关的DNS记录,包括IP地址、MX记录、CNAME记录等。指

【Go 基础篇】Go语言标识符解析:命名的艺术与最佳实践

介绍在计算机编程中,标识符(Identifier)是用来标识程序实体(变量、函数、类型等)的名称。良好的标识符命名可以使代码更加可读、易于维护,也能够提高代码的可理解性和可扩展性。在Go语言(Golang)中,标识符的命名规范和最佳实践对于编写高质量的代码至关重要。本篇博客将深入探讨Go语言中标识符的基本概念、命名规范

【Vue】上万个字把事件处理讲解的淋漓尽致

hello,我是小索奇,精心制作的Vue系列教程持续更新哈,想要学习&巩固&避坑就一起学习吧~事件处理事件的基本用法重点内容使用v-on:xxx缩写@xxx绑定事件,其中xxx是事件名(回顾:v-bind缩写为冒号:)事件的回调需要配置在methods对象中,最终会在VM上methods中配置的函数,不要用箭头函数,否

Linux网络编程(高并发服务器)

文章目录前言一、什么是高并发服务器二、使用多线程和多进程实现高并发服务器的思路三、多进程服务器代码编写四、多线程服务器代码编写总结前言本篇文章带大家学习Linux网络编程中的高并发服务器。首先我们需要了解什么是高并发服务器,然后是学习如何来编写高并发服务器。一、什么是高并发服务器高并发服务器是指能够同时处理大量并发请求

yamot:一款功能强大的基于Web的服务器安全监控工具

关于yamotyamot是一款功能强大的基于Web的服务器安全监控工具,专为只有少量服务器的小型环境构建。yamot只会占用非常少的资源,并且几乎可以在任何设备上运行。该工具适用于Linux或BSD,当前版本暂不支持Windows平台。比如说,广大研究人员可以使用yamot来监控在家运行的RaspberryPi服务器。

Centos下安装 oracle11g 博客2

[oracle@wangmengyuandatabase]$./runInstaller-silent-responseFile/home/oracle/database/response/db_install.rsp-ignorePrereq./runInstaller-silent-responseFile/hom

HTTPS的工作过程

HTTPS就是对HTTP进行了加密,因为要保证数据安全,就需要进行加密,网络中不再直接传输明文了,而是加密之后的密文,加密的方法有很多,但是整体可以分为两大类:对称加密和非对称加密对称加密对称加密其实就是通过同一个"密钥",把明文加密成密文,并且也能把密文解密成明文,引入对称加密之后,即使数据被截获,由于黑客不知道密钥

MySQL数据库

目录1:数据库概述及数据准备1.1:什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?1.2:在Windows操作系统中,怎么使用命令来启动和关闭MySQL服务呢?1.3:mysql常用命令1.4:数据库中最基本的元素是表:table1.5:SQL的分类1.6:导入演示数据1.7:表结构描述2:常

Ubuntu上安装Docker的步骤和指南

Ubuntu上安装Docker的步骤和指南安装docker简介更新系统安装Docker依赖添加Docker官方GPG密钥添加Docker软件源安装DockerEngine启动Docker服务验证安装查看docker版本卸载docker停止容器卸载Docker软件包删除Docker配置文件和数据删除Docker用户组(可

vue 引入zTree

下载js包解压后找个地方放文件夹内引入import"@/common/zTree/js/jquery-1.4.4.min"import"@/common/zTree/js/jquery.ztree.core.min.js"import"@/common/zTree/js/jquery.ztree.excheck.min

SpringBoot2.0(mybatis-plus初始使用)

目录一,介绍二,SpringBoot2.x整合MybatisPlus+Lombok2.1,添加依赖`pom`2.2,配置数据库信息`application.properties`2.3,工程结构初始化三,创建接口返回统一对象四,创建bean五,创建mapper六,创建service6.1,创建impl七,创建contr

热文推荐