当前位置: 首页 > news >正文

Spring Cloud Gateway介绍及入门配置

Spring Cloud Gateway介绍及入门配置

概述:

Gateway是在Spring生态系统之上构建的API网关服务,基于Spring6,Spring Boot 3和Project Reactor等技术。它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式,并为它们提供跨领域的关注点,例如:安全性、监控/度量和恢复能力。

Spring Cloud Gateway组件的核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对应的微服务。 Spring Cloud Gateway是加在整个微服务最前沿的防火墙和代理器,隐藏微服务结点IP端口信息,从而加强安全保护。Spring Cloud Gateway本身也是一个微服务,需要注册进服务注册中心。

作用:

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

三大核心:

  • 路由(router):路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由
  • 断言(predicate):开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),
  • 过滤器(filter):指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。

web前端请求,通过一些匹配条件,定位到真正的服务节点。并在这个转发过程的前后,进行一些精细化控制。

predicate就是我们的匹配条件;

filter,就可以理解为一个无所不能的拦截器。有了这两个元素,再加上目标uri,就可以实现一个具体的路由了

核心逻辑是:路由转发+断言判断+执行过滤器链

入门配置

由于gateway 也是一个微服务也需要注册到服务注册中心, 所以需要新创建一个moudle,并在启动类开启服务注册与发现

maven依赖

<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--gateway--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--服务注册发现consul discovery,网关也要注册进服务注册中心统一管控--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!-- 指标监控健康检查的actuator,网关是响应式编程删除掉spring-boot-starter-web dependency--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

application.yaml

server:port: 9527spring:application:name: cloud-gateway #以微服务注册进consul或nacos服务列表内cloud:consul: #配置consul地址host: localhostport: 8500discovery:prefer-ip-address: trueservice-name: ${spring.application.name}gateway:routes:- id: pay_routh1 #pay_routh1                #路由的ID(类似mysql主键ID),没有固定规则但要求唯一,建议配合服务名#格式:lb://服务名   代表启用负载均衡得微服务 可以动态映射uriuri: lb://cloud-payment-service              #动态匹配后提供服务的路由地址predicates:- Path=/pay/gateway/get/**              # 断言,路径相匹配的进行路由- id: pay_routh2 #pay_routh2                #路由的ID(类似mysql主键ID),没有固定规则但要求唯一,建议配合服务名uri: lb://cloud-payment-service                #匹配后提供服务的路由地址predicates:- Path=/pay/gateway/info/**              # 断言,路径相匹配的进行路由
http://www.lryc.cn/news/313516.html

相关文章:

  • Thingsboard本地源码部署教程
  • 【MySQL 系列】MySQL 起步篇
  • C++的成员初始化列表
  • 为什么TikTok视频0播放?账号权重提高要重视
  • element---tree树形结构(返回的数据与官方的不一样)
  • Spring Boot工程集成验证码生成与验证功能教程
  • Bert Encoder和Transformer Encoder有什么不同
  • 外汇天眼:频繁交钱却无法出金,只因误入假冒HFM惨成冤大头!
  • Linux-信号3_sigaction、volatile与SIGCHLD
  • STM32 | STM32时钟分析、GPIO分析、寄存器地址查找、LED灯开发(第二天)
  • Python常用语法汇总(一):字符串、列表、字典操作
  • Token的奥秘--一起学习吧之token
  • FlinkCDC快速搭建实现数据监控
  • 应急布控球远程视频监控方案:视频监控平台EasyCVR+4G/5G应急布控球
  • 3.6 C语言和汇编语言混合编程 “每日读书”
  • 利用“定时执行专家”循环执行BAT、VBS、Python脚本——含参数指定功能
  • 【算法集训】基础算法:模拟
  • 基于SSM的房客源信息管理系统设计与实现
  • 常见数据类型
  • 基于vue的联通积分商城数据可视化APP设计与实现
  • 2024年flink面试真题(一)
  • Java面试挂在线程创建后续,不要再被八股文误导了!创建线程的方式只有1种
  • JavaEE面试题
  • 探索macOS上的最佳MySQL客户端工具
  • [Android] MediaPlayer SDK API glance
  • 原始手写helloworld并打jar包允许
  • maven 的安装与配置(Command ‘mvn‘ not found)修改配置文件后新终端依旧无法识别到 mvn 命令
  • Pycharm无法粘贴外部文本问题
  • 学习Java的第四天
  • 【Javaweb】【瑞吉外卖】登录功能plus--拦截器filterinterceptors实现