【微服务】GateWay概念与使用

news2025/1/13 7:52:34

一、API 网关功能:

  1. 路由到指定位置:后台管理系统经常给各个服务发送请求,某一个服务掉线了,我们不可能手动去修改端口号,让它去其他机器找。因此,需要 API 网关,让其帮助我们将请求路由到正确位置。
  2. 进行鉴权等操作:网关也能帮助我们进行鉴权,网关层可对统一的请求进行处理。

二、SpringCloud GateWay 简介

GateWay 网关是 SpringCloud 官方推出并维护的网关中间件,其具有优越的性能,得到了业内的广泛肯定,我们在项目中也使用其作为我们的网关。

  1. 基本概念
  • 路由(Route): 我们发请求给网关,网关帮我们路由到指定位置
  • 断言(Predicate):请求发给 API 网关,API 网关进行条件判断路由到指定位置,这个条件判断就是断言
  • 过滤器(Filter): 请求过来,先进行过滤,在过滤器中,可对请求进行修改。
  1. 工作流程
    在这里插入图片描述

上图总结:
请求到达网关,网关利用断言判断请求是否符合路由规则,若符合,路由到指定地方。在路由到指定地方的过程中需要进行一系列的过滤器进行过滤。


三、SpringCloud GateWay 的使用

在本节主要介绍如何实现使用 SpringBoot 框架整合 GateWay 实现到路由到指定位置

  1. 启动 Nacos 服务器 —— 对Nacos 不熟悉的建议移步到 Nocas的使用

  2. 新建一微服务模块,添加 GateWay 依赖,并开启服务的注册发现

  • 使用 Spring Initializr 新建微服务模块,勾选添加 GateWay 依赖

在这里插入图片描述

  • 通过在 SpringBoot 项目启动类中加入 @EnableDiscoveryClient 注释,开启服务的注册与发现
  1. 配置 Nocos 注册中心地址

新建 bootstrap.properties 文件,加入如下配置

spring.application.name=mall-gateway # 此处添加你的项目名
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 # 此处添加你的 Nacos 服务器地址
spring.cloud.nacos.config.namespace=2e7e2d21-70fd-4e1c-b24e-a1c9c94e63b4 # 此处添加你为该网关服务新建的命名空间 id (不重要,根据你的情况绝对要不要新建命名空间,不写使用使用默认的命名空间)
  1. 启动项目,在 application.yml 配置文件中编写如下断言进行测试
spring:
  cloud:
    gateway:
      routes:
        - id:  baidu_route # 当前路由的 id
          uri: https://www.baidu.com # 路由到的地址
          predicates: # 路由断言,满足该断言才能路由到指定位置(断言为数组,因此使用 -)
            - Query=url, baidu # Query 断言要求包含参数 url, 并且参数值匹配正则表达式
            
        - id: qq_route # 测试二
          uri: https://www.qq.com
          predicates:
            - Query=url, qq

在浏览器中输入如下 url 进行测试,表示包含参数url,并且参数的值为 baidu (注:我的项目启动端口号是 88, 你根据自己的启动端口号写就 ok )

在这里插入图片描述


踩坑:

  1. 报错:
    Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type ‘org.springframework.http.codec.ServerCodecConfigurer’ that could not be found.

  2. 解决方式:
    该错误是由于 gateway 和 spring-webmvc 不兼容导致的,在 pom 文件依赖中去掉 spring-webmvc 依赖,如果是引入的全局依赖,使用如下方式排除 spring-webmvc 即可

		<dependency>
			<groupId>com.wanqing.mall</groupId>
			<artifactId>mall-common</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<exclusions>
				<exclusion>
						<groupId>org.springframework</groupId>
						<artifactId>spring-webmvc</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

尾注: 蓝色是象征冷静的颜色,在一段时间的苦痛之后,我仿佛又活过来了,这一路,感谢支持我鼓励我的人陪伴,让我们大家一起加油!一个人的力量和渺小,但是一群人可以改变时间。当然回到这篇文章,如果有不明白的问题,欢迎大家评论交流,我看见了就会回复的,谢谢大家**


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

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

相关文章

【华为OD机试真题 python】竖直四子棋【2022 Q4 | 200分】

■ 题目描述 【竖直四子棋】 竖直四子棋的棋盘是竖立起来的,双方轮流选择棋盘的一列下子,棋子因重力落到棋盘底部或者其他棋子之上,当一列的棋子放满时,无法再在这列上下子。 一方的4个棋子横、竖或者斜方向连成一线时获胜。 现给定一个棋盘和红蓝对弈双方的下子步骤,…

学会问问题

推荐文档&#xff1a;学会问问题&#xff1b; 目录 三句话原则 你就是孙子 问问题过程 第一步—学会问好 示例如下 第二步—有屁快放 问问题需要加上的前缀或者后缀&#xff1a; 示例如下 第三步—介绍自己的框架 示例如下 第四步—介绍自己的解决思路 示例如下 …

spring cache (Redis方式)

目录前置pom: jar配置文件: application.ymlMyCacheConfig.java效果图前置 会演示springcache的使用方式 项目地址: https://gitee.com/xmaxm/test-code/blob/master/chaim-cache/chaim-spring-cache/chaim-spring-cache-redis/README.md 前置配置 本篇文章是基于上篇文章进行…

Flutter 使用FFI+CustomPainter实现全平台渲染视频

Flutter视频渲染系列 第一章 Android使用Texture渲染视频 第二章 Windows使用Texture渲染视频 第三章 Linux使用Texture渲染视频 第四章 全平台FFICustomPainter渲染视频&#xff08;本章&#xff09; 文章目录Flutter视频渲染系列前言一、如何实现1、C/C实现视频采集&#xf…

3. 使用PyTorch深度学习库训练第一个卷积神经网络CNN

这篇博客将介绍如何使用PyTorch深度学习库训练第一个卷积神经网络&#xff08;CNN&#xff09;。训练CNN使用 KMNIST 数据集&#xff08;MNIST digits数据集的替代品&#xff0c;内置在PyTorch中&#xff09;识别手写平假名字符&#xff08;handwritten Hiragana characters&am…

图的二种遍历-广度优先遍历和深度优先遍历

图的广度优先遍历 1.树的广度优先遍历 这样一个图中&#xff0c;是如何实现广度优先遍历的呢&#xff0c;首先&#xff0c;从1遍历完成之后&#xff0c;在去遍历2,3,4&#xff0c;最后遍历5 &#xff0c;6 , 7 , 8。这也就是为什么叫做广度优先遍历&#xff0c;是一层一层的往…

36个数据分析方法与模型

目录一、战略与组织二、质量与生产三、营销服务四、财务管理五、人力资源六、互联网运营好的数据分析师不仅熟练地掌握了分析工具&#xff0c;还掌握了大量的数据分析方法和模型。这样得出的结论不仅具备条理性和逻辑性&#xff0c;而且还更具备结构化和体系化&#xff0c;并保…

Python连接MYSQL、SQL Server、Oracle数据入库一网打尽

描述&#xff1a; Python众所周知用来数据提取&#xff0c;通俗说用来抓数据&#xff0c;将拿到的数据进行数据清洗、加工,分析等等。而其中最重要的部分就是数据爬取、数据入库这两部分了&#xff0c;至于数据分析那就特别考察你的SQL能力&#xff0c;如果是自己设计页面&…

马齿苋多糖偶联顺铂复合物/黄连素偶联顺铂化合物/载顺铂mPEg-PGA纳米微球制备方法

小编今天整理了马齿苋多糖偶联顺铂复合物/黄连素偶联顺铂化合物/载顺铂mPEg-PGA纳米微球制备方法&#xff0c;一起来看&#xff01; 黄连素偶联顺铂化合物制备方法: 以A549/DDP细胞为研究对象,分别加入12 μg/mL的顺铂,浓度为20 μmol/L,40 μmol/L,80 μmol/L的黄连素12 μg/…

艾美捷EndoGrade卵清蛋白重组示例说明

卵清蛋白是一种优质蛋白质&#xff0c;占蛋清蛋白总量的 54%-69%&#xff0c;卵清蛋白是典型的球蛋白&#xff0c;分子量为 44.5k Da&#xff0c;属含磷糖蛋白&#xff0c;含有四个自由巯基、385 个氨基酸残基。这些氨基酸残基相互缠绕折叠形成具有高度二级结构的球型结构&…

spring cache (默认方式)

目录前置pom配置示列代码效果图部分源码关键类流程代码描述 (此类无用, 只是备注源码的逻辑)前置 什么是springcache: 通过注解就能实现缓存功能, 简化在业务中去操作缓存 Spring Cache只是提供了一层抽象, 底层可以切换不同的cache实现. 通过CacheManager接口来统一不同的缓存…

大数据培训课程MapTask工作机制

MapTask工作机制 MapTask工作机制如图4-12所示。 图4-12 MapTask工作机制 &#xff08;1&#xff09;Read阶段&#xff1a;MapTask通过用户编写的RecordReader&#xff0c;从输入InputSplit中解析出一个个key/value。 &#xff08;2&#xff09;Map阶段&#xff1a;该节点主要…

java面试强基(9)

字符串拼接用“” 还是 StringBuilder? ​ Java 语言本身并不支持运算符重载&#xff0c;“”和“”是专门为 String 类重载过的运算符&#xff0c;也是 Java 中仅有的两个重载过的运算符。 ​ 字符串对象通过“”的字符串拼接方式&#xff0c;实际上是通过 StringBuilder 调…

【MFC】一个最简单的MFC程序(9)

了解完MFC程序的流程后&#xff0c;会有 “果然不需要了解这些东西&#xff0c;直接用就可以了” 的感觉。这应该是MFC的初衷吧——按照框架来&#xff0c;集中精力做应用。但是没有了解呢&#xff1f; 最简单的MFC程序 步骤&#xff1a; 1、创建WIN32应用程序&#xff0c;空…

GoWeb 的 MVC 入门实战案例,基于 Iris 框架实现(附案例全代码)

1、什么是 MVC M 即 Model 模型是指模型表示业务规则。在MVC的三个部件中&#xff0c;模型拥有最多的处理任务。被模型返回的数据是中立的&#xff0c;模型与数据格式无关&#xff0c;这样一个模型能为多个视图提供数据&#xff0c;由于应用于模型的代码只需写一次就可以被多个…

1531_AURIX_TriCore内核架构_任务以及函数

全部学习汇总&#xff1a; GreyZhang/g_tricore_architecture: some learning note about tricore architecture. (github.com) 继续前面的内核架构学习&#xff0c;这次看一下任务以及函数的描述。 1. 在嵌入式系统中&#xff0c;内核以及函数的设计其实是有一定的模型或者说是…

day33 文件上传中间件解析漏洞编辑器安全

前言 先判断中间件&#xff0c;是否有解析漏洞&#xff0c;字典扫描拿到上传点&#xff0c;或者会员中心&#xff0c;有可能存在文件上传的地方&#xff0c;而后测试绕过/验证&#xff0c;根据实际情况判断是白名单、黑名单还是内容其他的绕过&#xff0c;绕过/验证和中间件的…

数字信号处理FFT快速傅立叶变换MATLAB实现——实例

今天做作业的时候发现要对一个信号进行FFT变换&#xff0c;在网上找了半天也没找到个能看懂的&#xff08;因为我太菜了&#xff09;&#xff0c;后来自己研究了一下&#xff0c;感觉一知半解的 起因是这道作业题 例题-满足奈奎斯特 我画了两个图&#xff0c;一个是原信号经过…

毕业论文管理系统的设计与实现

摘要 随着互联网技术的迅猛发展&#xff0c;网络给人们带来了很多便利&#xff0c;比如人们借助于网络进行相互交流、相互通信、共享信息、文件的上传下载等。在线毕业论文管理系统就是以上运用之一&#xff0c;它已经广泛的应用于目前的各大高校,但现有的这些系统都有一定的局…

如何在VScode和Jetbrain上使用备受争议的GitHub Copilot

如何在VScode和Jetbrain上使用备受争议的GitHub Copilot VSCDOE https://docs.github.com/en/copilot/quickstart 配置好之后&#xff0c;就是这种效果&#xff0c;真实太NB了&#xff01;&#xff01;&#xff01; 一个tab就把所有的代码都填充上去了&#xff01; Jetbrain…