对于gateway信息量沉淀

这个文章沉淀一下对gateway的基本认识

1.gateway使用给的背景是什么,逻辑作用是什么

2.如何开发操作gateway

23.gateway提供了哪些机制供使用

1. Gateway 的背景与逻辑作用

  • 出现背景:解决单体应用(如一个 SpringBoot + Tomcat)处理能力有限的问题。当单机承载不下时,会采用分布式架构(如 Nacos 做注册中心),将业务拆分为多个微服务。这时就需要一个统一入口来管理这些分散的服务。

  • 逻辑作用 :作为反向代理API 网关

    • 统一入口:所有外部请求的第一道关卡,屏蔽后端服务的复杂性。
    • 请求路由:根据请求路径、参数等条件,智能地转发给后端的正确微服务。
    • 横切关注点:在请求转发前后,集中处理认证、日志、限流、熔断等所有微服务共有的逻辑,避免在每个服务里重复开发。

类别单体springboot的springmvc,gateway的逻辑作用是什么

我们知道tomcat和springmvc

或者springboot(自动集成了springmvc)

我们知道单个tomcat(springboot内嵌了)

就算用了nio,单机承载的请求量也有限

我们使用分布式,来横向拓展单个springboot的线程处理能力

nacos作为注册配置中心

使用gateway来作为接收http请求的这么一个jar包。

2.gateway的实体是什么,如何开发操作gateway:

所谓的geteway本质上,就是一个springboot

可以注册到springboot上。

注册到nacos上

通过引入依赖和配置

从nginx上分发下来的流量。

通过gateway这个关口

分发给不同的springboot微服务实体。

我们开发,也就是在这个springboot上的yaml去进行开发

yaml 复制代码
spring:
  cloud:
    gateway:
      # 路由数组:指当请求满足什么样的断言时,转发到哪个服务上
      routes:
        # 路由标识,要求唯一,名称任意
        - id: gateway-provider_1
		  # 请求最终被转发到的目标地址
          uri: http://localhost:9024
          # 设置断言
          predicates:
            # Path Route Predicate Factory 断言,满足 /gateway/provider/** 路径的请求都会被路由到 http://localhost:9024 这个uri中
            - Path=/gateway/provider/**
            # Weight Route Predicate Factory 断言,同一分组按照权重进行分配流量,这里分配了80%
            # 第一个group1是分组名,第二个参数是权重
            - Weight=group1, 8
          # 配置过滤器(局部)
          filters:
            # StripPrefix:去除原始请求路径中的前1级路径,即/gateway
            - StripPrefix=1            
            
        - id: gateway-provider_2
          uri: http://localhost:9025
          # 设置断言
          predicates:
            - Path=/gateway/provider/**
            # Weight Route Predicate Factory,同一分组按照权重进行分配流量,这里分配了20%
            - Weight=group1, 2
		  # 配置过滤器(局部)
          filters:
            # StripPrefix:去除原始请求路径中的前1级路径,即/gateway
            - StripPrefix=1            

3.gateway提供了哪些机制供使用

Gateway 的核心机制可以概括为"路由+断言+过滤器",都通过 YAML 或 Java 代码配置。

  • 路由:网关最基本的配置单元,由 ID、目标 URI、断言和过滤器组成。

  • 断言工厂匹配条件。满足什么条件,这个路由才生效。Spring Cloud Gateway 内置了很多好用的断言。

    • Path :根据请求路径匹配,例如 - Path=/gateway/provider/**
    • Weight:按权重分配流量,常用于灰度发布,例如在多个版本的服务间按比例分配流量。
    • 其他HeaderMethodQueryHost 等,几乎能匹配所有 HTTP 请求特征。
  • 过滤器工厂处理逻辑。可以在请求转发前、转发后执行一些操作。

    • 局部过滤器 :只作用于特定路由。如你的示例中的 StripPrefix=1,作用是去掉路径中的前1个 /gateway 再转发。
    • 全局过滤器 :作用于所有路由。Spring Cloud Gateway 内置了一些,如转发、负载均衡等。也可以自定义,实现 GlobalFilter 接口,这是实际开发中做统一认证、日志记录最常用的方式。
    • 其他常用过滤器AddRequestHeaderRequestRateLimiter(限流)、Retry(重试)等。

总结一下:

你的理解 更系统化的认识
Gateway 是一个接收请求的 Jar 包 Gateway 是一个基于 SpringBoot 和 Netty 的异步非阻塞网关
在 YAML 里配置路由 核心是配置路由 + 断言(匹配条件) + 过滤器(处理逻辑)
从 Nginx 分发流量过来 Gateway 常替代 Nginx 的部分反向代理职能,并提供更灵活的微服务级路由

为了巩固你提到的第3点,可以思考一个常见场景:如何用 Gateway 实现统一的权限校验?

答案是自定义全局过滤器 ,实现 GlobalFilter 接口,在 filter 方法中判断请求头里有没有合法的 Token。这个过滤器会拦截所有进入 Gateway 的请求,如果校验失败,直接返回 401 错误,不再转发。这样,所有后端微服务都无需关心认证逻辑了。

相关推荐
Hadoop_Liang15 天前
使用Kubernetes Gateway API实现域名访问应用
容器·kubernetes·gateway
worilb15 天前
Spring Cloud 学习与实践(9):Gateway + JWT 统一鉴权
学习·spring cloud·gateway
Dontla15 天前
Kong Gateway(OSS)(Open Source Software)与 Kong Gateway(Enterprise)区别
gateway·kong
yxl8746464618 天前
磐创PCTG-9013 Modbus转ProfibusDP工业协议转换器
网络·科技·物联网·gateway·信息与通信
__log18 天前
401鉴权问题完全指南:从“门卫拦人“到“畅通无阻“
gateway
暗夜猎手-大魔王19 天前
hermes源码学习8--Gateway 内部机制
人工智能·gateway
JJJennie77721 天前
从苹果 2026 落地场景,看系统级 Agent 时代的隐私边界与 MAI Gateway 的企业Token治理
人工智能·gateway·apple
kakawzw21 天前
微服务组件源码6——Spring Gateway
spring·gateway
白露与泡影21 天前
Java 8老系统旁路接入AI Gateway:不升级JDK也能用AI
java·人工智能·gateway
是一个Bug22 天前
Nginx 与 API Gateway:从“小区门卫”到“商场总服务台”
运维·nginx·gateway