微服务核心组件:Gateway

1. 作用

API Gateway,它作为所有外部请求的唯一入口,承担统一路由、安全鉴权、流量限流、监控埋点等横切职责,是微服务架构的 "门面" 与 "流量中枢"。由于微服务的应用可能部署在不同的地方,此时有了网关,客户端相关的请求直接发送到网关,由网关根据请求标识解析判断出具体的微服务地址,再把请求转发到微服务实例。

2. 核心工作原理与流程

Gateway 的请求处理流程可概括为 "接收→匹配→过滤→转发→响应",核心依赖三大组件:

核心组件 作用 关键说明
路由 (Route) 网关的基本单元 包含 ID、目标 URI、断言集合、过滤器集合,定义请求转发规则
断言(Predicate) 路由匹配规则 基于 HTTP 请求的路径、请求头、方法、时间等条件判断是否匹配路由
过滤器 (Filter) 请求 / 响应处理 分为全局过滤器 (所有请求生效)和局部过滤器(指定路由生效),可在请求前(Pre)或响应后(Post)执行逻辑

完整请求流程:客户端请求 → Netty 接收 → 路由断言匹配 → 过滤器链执行(Pre) → 转发至目标微服务 → 过滤器链执行(Post) → 响应返回客户端。

spring cloud gateway中配置uri有三种方式,包括

  • websocket配置方式
bash 复制代码
spring:
  cloud:
    gateway:
      routes:
        - id: ruoyi-api
          uri: ws://localhost:9090/
          predicates:
            - Path=/api/**
  • http地址配置方式
bash 复制代码
spring:
  cloud:
    gateway:
      routes:
        - id: ruoyi-api
          uri: http://localhost:9090/
          predicates:
  • 注册中心配置方式
bash 复制代码
spring:
  cloud:
    gateway:
      routes:
        - id: ruoyi-api
          uri: lb://ruoyi-api
          predicates:
            - Path=/api/**

3. 示例

bash 复制代码
spring:
  cloud:
    gateway:
      # 动态路由:从 Nacos 注册中心获取服务列表
      discovery:
        locator:
          enabled: true # 开启服务发现路由
      # 自定义路由规则
      routes:
        - id: system-service-route
          uri: lb://ruoyi-system # 指向 Nacos 中的系统服务
          predicates:
            - Path=/system/** # 匹配 /system 开头的请求
          filters:
            - StripPrefix=1 # 去除路径前缀(将 /system/user 转为 /user)
            - name: RequestRateLimiter # 限流过滤器
              args:
                redis-rate-limiter.replenishRate: 10 # 每秒生成令牌数
                redis-rate-limiter.burstCapacity: 20 # 令牌桶容量
相关推荐
一定要AK43 分钟前
Spring 入门核心笔记
java·笔记·spring
A__tao44 分钟前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao1 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
迷藏4941 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
wuxinyan1232 小时前
Java面试题47:一文深入了解Nginx
java·nginx·面试题
新知图书2 小时前
搭建Spring Boot开发环境
java·spring boot·后端
冰河团队2 小时前
一个拉胯的分库分表方案有多绝望?整个部门都在救火!
java·高并发·分布式数据库·分库分表·高性能
洛_尘2 小时前
Java EE进阶:Linux的基本使用
java·java-ee
宸津-代码粉碎机2 小时前
Spring Boot 4.0虚拟线程实战调优技巧,最大化发挥并发优势
java·人工智能·spring boot·后端·python
MaCa .BaKa2 小时前
47-心里健康咨询平台/心理咨询系统
java·spring boot·mysql·tomcat·maven·intellij-idea·个人开发