SpringCloud网关-gateway

一 什么是网关?为什么选择 Gateway?

网关功能如下:

  1. 身份认证和权限校验
  2. 服务路由、负载均衡
  3. 请求限流

在 Spring Cloud 中网关的实现包含两种:

  1. Gateway(推荐):是基于 Spring5 中提供的 WebFlux ,属于响应式编程的实现,具备更好的性能,因此作为比较推荐实现网关的方式。
  2. Zuul:是基于 Servlet 的实现,属于阻塞式编程

Gateway 网关

主要分为以下几个步骤:

1 创建新的module-gateway

引入SpringCloudGateway的依赖和nacos的服务发现依赖:

java 复制代码
<!--网关依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
</dependency>

高版本错误:

a)如果使用的是 springcloud高版本(例如 2020.1.0),那么 gateway 中的 ribbon 负载均衡已经被剔除了,因此需要引入 springcloud loadbalencer 作为 gateway 的负载均衡.

java 复制代码
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>

b)引入此依赖后,可能还会报 cache 的警告,引入一下两个依赖即可

java 复制代码
        <dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>

2 编写nacos地址和路由配置

java 复制代码
server:
  port: 10010 # 网关端口
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 地址
    gateway:
      routes:  # 网关路由配置
        - id: user-service # 路由 id,自定义,只要唯一即可
          uri: lb://userservice # 路由的目标地址 lb 就是负载均衡,后面跟微服务名
          predicates: #路由断言
            - Path=/user/** # 这个是按照路径匹配,只要以 /user/ 开头就符合要求
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**

路由配置解释如下:

  1. 路由id:路由的唯一标示(自定义)
  2. 路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡
  3. 路由断言(predicates):路由的规则(匹配的才被 gateway 拦截下来).
  4. 路由过滤器(filters):对请求或响应做处理,例如 StripProfix 就是去掉指定数量的前缀路由,例如请求是 api/user/login,filters 处理为 StripProfix = 1(去掉一个前缀),那么处理后请求就是 /user/login.

3 效果展示

出现下述结果展示,说明路由转发成功.

相关推荐
Demon1_Coder2 小时前
跨域问题CORS
spring cloud
worilb3 小时前
Spring Cloud 学习与实践(6):Nacos 配置中心
数据库·学习·spring cloud
YJlio3 小时前
OpenClaw 2026.5.2 Beta 更新解读:外部插件安装、ClawHub / npm 切换与 Gateway 性能优化
性能优化·npm·gateway·飞书·多维表格·飞书aily·飞书妙搭
v***59833 小时前
SpringCloud实战十三:Gateway之 Spring Cloud Gateway 动态路由
java·spring cloud·gateway
团子的二进制世界3 小时前
Gateway :微服务架构的核心网关
微服务·架构·gateway
MrMonkeyHou3 小时前
Java微服务架构中的双剑合璧:Nacos与Gateway深度解析
java·微服务·架构·gateway
RR13353 小时前
Spring MVC and Spring Gateway 的差异,以及报错处理
spring·gateway·mvc
普通网友3 小时前
【python】pyspark.errors.exceptions.base.PySparkRuntimeError [JAVA_GATEWAY_EXITED] Java gateway proce
java·python·gateway
YJlio3 小时前
OpenClaw v2026.5.26-beta.1 / beta.2 预发布解读:Gateway 加速、transcript 路径统一、多通道修复、语音增强与安装更新链路加固
人工智能·windows·python·ui·缓存·gateway·outlook
普通网友3 小时前
AWS VPC Transit Gateway 部署:实现多 VPC(开发 / 测试 / 生产)间流量集中管控
云计算·gateway·aws