对于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 错误,不再转发。这样,所有后端微服务都无需关心认证逻辑了。

相关推荐
郝开1 天前
Spring Cloud Gateway 3.5.14 使用手册
java·数据库·spring boot·gateway
Ribou2 天前
Kubernetes v1.35.2 基于 Cilium Gateway API 的服务访问架构
架构·kubernetes·gateway
huipeng9263 天前
GateWay使用详解
java·spring boot·spring cloud·微服务·gateway
随风,奔跑7 天前
Spring Cloud Alibaba(四)---Spring Cloud Gateway
后端·spring·gateway
jiayong237 天前
Hermes Agent 的 Skills、Plugins、Gateway 深度解析
ai·gateway·agent·hermes agent·hermes
鬼蛟7 天前
Gateway
gateway
武超杰7 天前
Spring Cloud Gateway 从入门到实战
spring cloud·gateway
StackNoOverflow7 天前
Spring Cloud Gateway 服务网关详解
gateway
tsyjjOvO7 天前
服务网关 Gateway 从入门到精通
gateway