SpringCloud Gateway服务网关的介绍与使用
目录
- 1、网关介绍
- 2、SpringCloudGateway工作原理
- 3、三大组件
- 3.1 、Route(路由)
- 3.2、断言 Predicate
- 3.3、过滤器 filter
- 4、Gateway整合nacos的使用
- 4.1 、引入依赖
- 4.2、 编写基础类和启动类
- 4.3、 编写基础配置和路由规则
- 4.4 、测试结果
1、网关介绍
客户机和服务器不断的高并发请求,微服务架构就急需一个API网关通统一入口。网关可以负责保护和路由消息、隐藏服务、负载均衡以及许多其他有用的功能。Spring Cloud Gateway为您提供了对API层的精确控制,它集成了Spring Cloud服务发现和客户端负载平衡解决方案,以简化配置和维护。

2、SpringCloudGateway工作原理


3、三大组件
**Route(路由):**路由是网关的基本单元,由ID、URI、一组Predicate、一组Filter组成,根据Predicate进行匹配转发。
Predicate(谓语、断言): 路由转发的判断条件,目前SpringCloud Gateway支持多种方式,常见如:Path、Query、Method、Header等,写法必须遵循 key=vlue的形式
Filter(过滤器): 过滤器是路由转发请求时所经过的过滤逻辑,可用于修改请求、响应内容
3.1 、Route(路由)
Route 主要由 路由id、目标uri、断言集合和过滤器集合组成,那我们简单看看这些属性到底有什么作用。
(1)id:路由标识,要求唯一,名称任意(默认值 uuid,一般不用,需要自定义)
(2)uri:请求最终被转发到的目标地址
(3)order: 路由优先级,数字越小,优先级越高
(4)predicates:断言数组,即判断条件,如果返回值是boolean,则转发请求到 uri 属性指定的服务中
(5)filters:过滤器数组,在请求传递过程中,对请求做一些修改
3.2、断言 Predicate
Predicate 来自于 Java8 的接口。Gateway的断言就是从Request中获取请求数据进行判断,返回true或者false
RoutePredicateHandlerMapping负载寻找路由规则,把所有的route遍历一遍,获取和当前请求匹配的路由规则
3.3、过滤器 filter
客户端向Spring Cloud Gateway发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关Web处理程序。此处理程序通过特定于请求的筛选器链运行请求。过滤器用虚线分隔的原因是过滤器可以在发送代理请求之前和之后运行逻辑。执行所有“预”过滤器逻辑。然后发出代理请求。发出代理请求后,将运行“post”过滤器逻辑。
Gateway 过滤器从作用范围可分为两种:
GatewayFilter:应用到单个路由或者一个分组的路由上(需要在配置文件中配置).路由过滤器允许以某种方式修改传入的HTTP请求或传出的HTTP响应。路由过滤器的作用域是特定的路由。
GlobalFilter:应用到所有的路由上(无需配置,全局生效),拥有路由过滤器的功能。
4、Gateway整合nacos的使用
模块文件

4.1 、引入依赖
gateway模块依赖
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>2.2.3.RELEASE</version></dependency></dependencies>
provider模块依赖
<dependencies><!-- 引入阿里的nacos作为服务注册中心 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies>
4.2、 编写基础类和启动类
gateway启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class GateWayApplication {public static void main(String[] args) {SpringApplication.run(GateWayApplication.class, args);}
}
provider启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}
}
providerController类
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProviderController {private String name;@GetMapping("send")public String send(){name="通过网关调用provider";return name;}
}
4.3、 编写基础配置和路由规则
gateway配置文件
server:port: 5000spring:application:name: gatewaycloud:nacos:discovery:server-addr: 10.32.93.135:8848gateway:discovery:locator:enabled: falselowerCaseServiceId: trueroutes:- id: provideruri: lb://providerpredicates:- Path=/provider/**filters:- StripPrefix=1
provider配置模块
spring.application.name=provider
spring.cloud.nacos.config.serveraddr=localhost:8848
server.port= 8000
4.4 、测试结果
启动以后,可以看到gateway,provider模块已经注册到nacos上了

在浏览器上输入地址:http://localhost:5000/provider/send/

可以看到测试成功
相关文章:
SpringCloud Gateway服务网关的介绍与使用
目录 1、网关介绍2、SpringCloudGateway工作原理3、三大组件3.1 、Route(路由)3.2、断言 Predicate3.3、过滤器 filter 4、Gateway整合nacos的使用4.1 、引入依赖4.2、 编写基础类和启动类4.3、 编写基础配置和路由规则4.4 、测试结果 1、网关介绍 客户…...
深入解析:如何打造高效的直播视频美颜SDK
在当今数字化时代,视频直播已经成为人们交流、娱乐和信息传递的重要方式。然而,许多人在直播时都希望能够呈现出最佳的外观,这就需要高效的直播视频美颜技术。本文将深入解析如何打造高效的直播视频美颜SDK,以实现令人满意的视觉效…...
每日一博 - MPP(Massively Parallel Processing,大规模并行处理)架构
文章目录 概述优点缺点小结 概述 MPP(Massively Parallel Processing,大规模并行处理)架构是一种常见的数据库系统架构,主要用于提高数据处理性能。它通过将多个单机数据库节点组成一个集群,实现数据的并行处理。 在 …...
ssh框架原理及流程
1.hibernate工作原理: 读取并解析配置文件读取并解析映射信息,创建sessionFactory打开session创建事务transaction持久化操作提交事务关闭session关闭sessionFactory 为什么使用: 对JDBC访问数据库的代码做了封装,大大简化了数据…...
eslint 配置和用法
在一个使用Webpack的项目中配置ESLint,你可以按照以下步骤操作: 首先,你需要在你的项目中安装ESLint和对应的Webpack loader。你可以使用npm或者yarn来安装。在你的项目根目录下打开终端,然后运行以下命令: 使用npm&…...
字符设备驱动实例(PWM和RTC)
目录 五、PWM 六、RTC 五、PWM PWM(Pulse Width Modulation,脉宽调制器),顾名思义就是一个输出脉冲宽度可以调整的硬件器件,其实它不仅脉冲宽度可调,频率也可以调整。它的核心部件是一个硬件定时器,其工作原理可以用…...
Ribbon 源码分析
Ribbon 源码分析 Ribbon Debug 分析 断点 LoadBalancerInterceptor LoadBalancerInterceptor 实现了 ClientHttpRequestInterceptor 接口,重写了其中的 intercept 方法,用来拦截请求; 获取原始的 uri 和 服务名,调用 LoadBalanc…...
【1-3章】Spark编程基础(Python版)
课程资源:(林子雨)Spark编程基础(Python版)_哔哩哔哩_bilibili 第1章 大数据技术概述(8节) 第三次信息化浪潮:以物联网、云计算、大数据为标志 (一)大数据 大数据时代到来的原因…...
宇宙原理:黑洞基础。
宇宙原理:黑洞基础TOC 黑洞的数理基础:一个由满数组成的数盘,经过自然演进,将会逐步稀疏化、最终会向纯数方案发展;纯数方案虽然只有{2}、无数(虚拟)、{0,1,2,3}(虚拟)、…...
分类预测 | MATLAB实现SCNGO-CNN-LSTM-Attention数据分类预测
分类预测 | MATLAB实现SCNGO-CNN-LSTM-Attention数据分类预测 目录 分类预测 | MATLAB实现SCNGO-CNN-LSTM-Attention数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.SCNGO-CNN-LSTM-Attention数据分类预测程序,改进算法,融合正余弦和…...
Android学习之路(7) Frament
Fragment 表示应用界面中可重复使用的一部分。fragment 定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。fragment 不能独立存在。它们必须由 activity 或其他 fragment 托管。fragment 的视图层次结构会成为宿主的视图层次结构的…...
metallb , istio ingress 部署httpbin使用例子
安装metaillb,参考:Kubernetes的负载均衡方案:MetalLB - 文章详情 wget https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-frr.yaml -O metallb.yaml kubectl apply -f metallb-frr.yaml 配置负载均衡ip池 apiVe…...
基于swing的销售管理系统java仓库库存信息jsp源代码mysql
本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于swing的销售管理系统 系统有1权限:管…...
FreeCAD傻瓜式教程之约束设定和构建实体、开孔、调整颜色等
本内容基于官方教程中的绘制简单的零件中的体会,在初次绘制的时候,总是无法完成,几经尝试才发现其关键点所在,以此文记录,用以被查资料,同时也希望能够帮到纯白新手快速熟悉该软件的绘图方法。 一、. 打开…...
代码随想录算法训练营day41 | 343. 整数拆分,96. 不同的二叉搜索树
目录 343. 整数拆分 96. 不同的二叉搜索树 343. 整数拆分 类型:动态规划 难度:medium 思路: dp[i]所用的拆分方法至少已经拆分了两次,比如dp[2]1,小于2,在大于2的数中,最后的2是不会拆的。 …...
飞天使-k8sv1.14二进制安装
文章目录 安装前准备安装前设置分发脚本 开始安装k8s集群cfssl 安装部署kubectl命令行工具创建admin证书和私钥创建kubeconfig文件部署ETCD集群部署Flannel网络kube-apiserver 高可用KeepLived 部署部署master节点部署高可用kube-controller-manager集群kube-controller-manage…...
TypeScript封装Axios
TypeScript封装Axios Axios的基本使用 因axios基础使用十分简单,可参考axios官方文档,这里不在介绍他基本用法,主要讲解拦截器。 拦截器主要分为两种,请求拦截器和响应拦截器。 请求拦截器:请求发送之前进行拦截&…...
指针(一)【C语言进阶版】
大家好,我是深鱼~ 【前言】: 指针的主题,在初阶指针章节已经接触过了,我们知道了指针的概念: 1.指针就是个变量,用来存放地址,地址的唯一标识一块内存空间(指针变量)&a…...
回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测(多指标,多图)效果一览基本介…...
springMVC 已解密的登录请求
问题描述: 解决方案: 1.对用户所输入的密码在页面进行MD5加密并反馈至密码输入框。 2. 手动生成SSL安全访问证书;在此不做介绍,相关方法可通过网上查找; 3. 将产品HTTP访问方式改为SSL安全访问方式;在Ap…...
Alpamayo-R1-10B步骤详解:WebUI轨迹图matplotlib后端切换技巧
Alpamayo-R1-10B步骤详解:WebUI轨迹图matplotlib后端切换技巧 1. 项目背景与问题场景 Alpamayo-R1-10B作为自动驾驶领域的先进视觉-语言-动作(VLA)模型,其Web界面默认使用matplotlib进行轨迹可视化。但在实际部署中,开发者常遇到以下问题&a…...
Python3.9镜像作品展示:多项目环境管理,效果一目了然
Python3.9镜像作品展示:多项目环境管理,效果一目了然 1. Python3.9镜像核心价值 Python3.9镜像是一个轻量级的Python环境管理工具,它能帮助开发者快速创建独立的开发环境,有效避免软件包之间的版本冲突。这个镜像自带pip等基本工…...
深入解析差错控制技术:从奇偶校验到循环冗余校验的实战应用
1. 为什么我们需要差错控制技术? 想象一下你正在给朋友发送一条重要消息:"明天下午3点会议室见"。如果传输过程中某个比特位出错,消息变成"明天下午8点会议室见",后果可能很严重。这就是差错控制技术存在的意…...
51单片机温湿度检测报警
目录 具体实现功能 设计介绍 51单片机简介 资料内容 原理图和PCB(AD19) 仿真实现(protues8.7) 程序(Keil5) 全部资料 资料获取 具体实现功能 由51单片机DHT11温湿度传感器LCD1602液晶显示按键模块…...
构建社区照护桥梁:.NET Core3.1+MVC社区呼叫系统设计与实现
在人口老龄化加剧和社区服务需求日益增长的背景下,如何高效连接有照护需求的居民与专业的照护人员,成为社区管理面临的一大挑战。为此,我们设计并开发了一套 社区呼叫系统,旨在通过信息化手段,打造一个集需求发布、派单…...
Qt 6.5 + OpenGL 实战:手把手教你打造一个可交互的3D动态曲线可视化工具
Qt 6.5与OpenGL实战:构建交互式3D动态曲线可视化工具 在数据可视化领域,3D动态曲线展示一直是个既基础又关键的需求。想象一下,你正在开发一个实时监控系统,需要直观展示传感器数据的空间变化;或者你正在分析金融市场&…...
uniapp 开发app ios版,准备工作
一、准备工作 下载爱思助手:爱思助手官网-安全好用的苹果设备管理软件 登录 苹果开发者中心:https://developer.apple.com/account/ (注意苹果开发需要自费购买证书) 二、步骤 1:生成 CSR 文件(身份验证请…...
用COMSOL 6.1仿真光纤等波导的三维弯曲、模场分布及波束包络方法
COMSOL模型仿真光纤等波导的三维弯曲,模场分布,波束包络方法 Comsol6.1版本自建仿真模型 最近在研究光纤等波导相关的课题,发现COMSOL 6.1在波导特性仿真这块真是个强大的工具。今天就来和大家分享一下如何用它自建模型,实现对波…...
Argon-Theme竞争分析:超越其他WordPress主题的终极轻盈体验
Argon-Theme竞争分析:超越其他WordPress主题的终极轻盈体验 【免费下载链接】argon-theme 📖 Argon - 一个轻盈、简洁的 WordPress 主题 项目地址: https://gitcode.com/gh_mirrors/ar/argon-theme Argon-Theme是一款专注于轻盈简洁体验的WordPre…...
bert-base-chinese中文持续学习:新领域词汇增量注入与灾难性遗忘缓解
bert-base-chinese中文持续学习:新领域词汇增量注入与灾难性遗忘缓解 1. 引言:当BERT遇到新词汇时的挑战 想象一下,你训练了一个很聪明的中文AI助手,它能理解大多数日常对话。但当用户突然问起"元宇宙"、"数字孪…...
