news 2026/4/27 19:18:03

SpringCloud-06-Gateway网关

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringCloud-06-Gateway网关

一、概述

1、简介

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

注意:Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关;但在2.x版本中,SpringCloud最后自己研发了一个网关SpringCloud Gateway替代Zuul,那就是SpringCloud Gateway一句话:gateway是原zuul1.x版的替代。

2、功能

微服务中网关 Gateway 的具体工作内容如下所示。

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

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

Spring Cloud Gateway本身也是一个微服务,需要注册进服务注册中心。

3、核心

Spring Cloud Gateway 服务网关由三大核心组成,分别是路由 Route、断言 Predicate 和过滤器 Filter。此三个核心的具体内容如下所示。

  • Route(路由):路由是服务网关的主要模块,它主要由 ID、目标 URL 、一系列的断言和过滤器组成。若断言为 true,则开始匹配路由。
  • Predicate(断言):参考的是 Java8 的 java.util.function.Predicate。开发人员可以匹配 HTTP 请求的所有内容(包括请求参数和请求头),若请求和断言匹配,则开始路由。
  • Filter(过滤):过滤是用于做功能增强的,指的是 Spring 框架中的 GatewayFilter 实例,使用过滤器,可以在请求之前或之后修改请求。

4、工作流程

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

客户端向 Spring Cloud Gateway 发出请求。然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。

  • 过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(Pre)或之后(Post)执行业务逻辑。
  • 在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等;
  • 在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等有着非常重要的作用。

二、简单入门

1、导入依赖

<!--gateway--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>

2、application.yml配置

server: port: 9527 spring: application: name: cloud-gateway #以微服务注册进consul或nacos服务列表内 cloud: consul: #配置consul地址 host: localhost port: 8500 discovery: prefer-ip-address: true service-name: ${spring.application.name} gateway: routes: - id: pay_routh1 #pay_routh1 #路由的ID(类似mysql主键ID),没有固定规则但要求唯一,建议配合服务名 #uri: http://localhost:8001 #匹配后提供服务的路由地址 uri: lb://cloud-payment-service #匹配后提供服务的路由地址 predicates: - Path=/pay/gateway/get/** # 断言,路径相匹配的进行路由 - After=2023-12-30T23:02:39.079979400+08:00[Asia/Shanghai] #- Cookie=username,zzyy # - Header=X-Request-Id, \d+ # 请求头要有X-Request-Id属性并且值为整数的正则表达式 #- Host=**.atguigu.com #- Query=username, \d+ # 要有参数名username并且值还要是整数才能路由 #- RemoteAddr=192.168.124.1/24 # 外部访问我的IP限制,最大跨度不超过32,目前是1~24它们是 CIDR 表示法。 - id: pay_routh2 #pay_routh2 #路由的ID(类似mysql主键ID),没有固定规则但要求唯一,建议配合服务名 #uri: http://localhost:8001 #匹配后提供服务的路由地址 uri: lb://cloud-payment-service predicates: - Path=/pay/gateway/info/** # 断言,路径相匹配的进行路由

3、常用的内置Route Predicate

Predicate就是为了实现一组匹配规则,让请求过来找到对应的Route进行处理。

##id:我们自定义的路由ID,保持唯一
##uri:目标服务地址
##predicates:路由条件,Predicate接受一个输入参数返回一个布尔值。
##该属性包含多种默认方法来将Predicate组合成其他复杂的逻辑(比如:与,或,非)

Gateway断言详细博客https://blog.csdn.net/tuyong1972873004/article/details/107123238/

4、过滤器详解

Spring Cloud Gateway中的过滤器是用于拦截和处理HTTP请求的核心组件,分为GatewayFilter(局部过滤器)和GlobalFilter(全局过滤器)两类,实现鉴权、限流、日志记录、路径重写等功能,通过响应式编程模型确保高并发性能。‌‌

应用场景与最佳实践 ‌

核心场景‌: ‌

  • 安全控制‌:通过AuthFilter实现JWT鉴权,拦截未授权请求。‌ ‌
  • 流量管理‌:集成RateLimitGatewayFilter限制请求频率,防止服务过载。‌‌
  • 路径处理‌:使用StripPrefix移除路径前缀(如/admin/xxx→/xxx),提升可读性。‌

最佳实践‌: ‌

  • 性能优化‌:调整Event Loop线程数(-Dreactor.netty.ioWorkerCount=16),禁用DEBUG日志减少开销。‌‌
  • 监控集成‌:结合Prometheus监控关键指标(如gateway_requests_total),实现实时告警。‌‌
  • 错误处理‌:通过ErrorWebExceptionHandler统一捕获异常,增强系统健壮性。‌

Gateway过滤器详细博客https://cloud.tencent.com/developer/article/1900398

5、自定义断言,过滤器工厂,全局过滤器

自定义断言,过滤器工厂,全局过滤器https://blog.csdn.net/Decade_Faiz/article/details/139044394

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 6:28:17

如何监控GLM-TTS运行时GPU显存占用情况?NVIDIA-SMI使用技巧

如何监控GLM-TTS运行时GPU显存占用情况&#xff1f;NVIDIA-SMI使用技巧 在部署像 GLM-TTS 这类先进语音合成系统时&#xff0c;你有没有遇到过这样的场景&#xff1a;服务突然中断、批量任务中途失败&#xff0c;日志里只留下一句冰冷的“CUDA out of memory”&#xff1f;这类…

作者头像 李华
网站建设 2026/4/25 8:05:55

GPU 性能分析工具综述

目录 文章目录目录性能分析工具关键指标NVIDIA Nsight SystemsNVIDIA Nsight ComputeNVIDIA DCGM基于 eBPF 的 GPU 性能追踪参考文档性能分析工具关键指标 《程序性能分析器实现技术》 技术方向&#xff1a; 追踪&#xff08;Tracing&#xff09;&#xff1a;插桩&#xff08…

作者头像 李华
网站建设 2026/4/18 22:45:35

语音合成任务队列设计:GLM-TTS批量处理中的并发控制机制

语音合成任务队列设计&#xff1a;GLM-TTS批量处理中的并发控制机制 在有声书自动化生产、智能客服语音克隆和多语言内容本地化的实际场景中&#xff0c;一个常见的挑战是&#xff1a;如何让语音合成系统稳定地一次性生成上千段高质量音频&#xff1f;传统的交互式TTS工具往往要…

作者头像 李华
网站建设 2026/4/18 10:10:51

灵动代理mcu单片机机器人解决方案

小机器人&#xff0c;有多个关节动作&#xff0c;在各类多关节机器人中&#xff0c;每个关节的精确动作都依赖于高性能电机的稳定控制&#xff0c;英尚微代理的灵动mcu单片机应用在机器人的主控设计上&#xff0c;机器人关节控制以MM32SPIN023C为主控。 MM32SPIN023C属于灵动Mi…

作者头像 李华
网站建设 2026/4/23 8:31:54

基于GLM-TTS的多情感语音合成技术解析与GPU算力优化方案

基于GLM-TTS的多情感语音合成技术解析与GPU算力优化方案 在虚拟人直播带货、AI客服主动关怀、个性化有声书自动生成等场景不断涌现的今天&#xff0c;用户早已不再满足于“能说话”的语音系统——他们要的是有情绪、有个性、听得懂语境的声音。传统的TTS&#xff08;Text-to-S…

作者头像 李华
网站建设 2026/4/23 8:29:44

如何用JSONL格式进行GLM-TTS批量任务提交?自动化合成秘诀

如何用JSONL格式进行GLM-TTS批量任务提交&#xff1f;自动化合成秘诀 在AI语音内容爆发式增长的今天&#xff0c;从有声书、新闻播报到虚拟主播&#xff0c;每天都有成千上万条语音需要生成。如果还停留在“上传音频→输入文本→点击合成”的手动模式&#xff0c;别说规模化生产…

作者头像 李华