文章目录
- 1. Spring Cloud Gateway 的核心功能
- 1.1. 动态路由(Dynamic Routing)
- 1.2. 请求过滤(Gateway Filters)
- 1.3. 负载均衡(Load Balancing)
- 1.4. 限流与熔断(Rate Limiting & Circuit Breaker)
- 1.5. 安全控制(Security & Authentication)
- 1.6. 监控与链路追踪
- 2. Spring Cloud Gateway 的优势
- 3. Spring Cloud Gateway 的典型应用场景
- 4. 总结
Spring Cloud Gateway 的核心作用是作为API 网关,提供智能路由、请求过滤、负载均衡、安全控制等功能,充当微服务架构中的流量入口。
1. Spring Cloud Gateway 的核心功能
1.1. 动态路由(Dynamic Routing)
根据请求 URL、Header、Method 等条件,智能转发请求到不同的微服务。
支持基于 Predicate 进行匹配(如 Path=/api/** 只转发 /api 开头的请求)。
支持负载均衡(可结合 Spring Cloud LoadBalancer 或 Nginx)。
✅ 示例:根据路径匹配路由
spring:cloud:gateway:routes:- id: user-serviceuri: lb://USER-SERVICEpredicates:- Path=/users/**
请求 /users/123 会被转发到 USER-SERVICE。
1.2. 请求过滤(Gateway Filters)
可以修改 HTTP 请求/响应(如添加 Header、限流、重写路径)。
支持请求重试、熔断降级、身份认证。
支持全局或特定路由的过滤器。
✅ 示例:给所有请求添加 Header
filters:- AddRequestHeader=X-Request-Id, 12345
✅ 示例:限流(RequestRateLimiter)
filters:- name: RequestRateLimiterargs:redis-rate-limiter.replenishRate: 10 # 每秒允许 10 个请求redis-rate-limiter.burstCapacity: 20 # 最大瞬时 20 个请求
1.3. 负载均衡(Load Balancing)
支持基于 Spring Cloud LoadBalancer 进行负载均衡,自动将流量分发到多个实例。
可配合 Nacos、Eureka 进行服务发现。
✅ 示例:负载均衡请求
routes:- id: product-serviceuri: lb://PRODUCT-SERVICEpredicates:- Path=/products/**
请求 /products/1 将被负载均衡到 PRODUCT-SERVICE 的多个实例。
1.4. 限流与熔断(Rate Limiting & Circuit Breaker)
防止流量突增导致微服务崩溃。
支持 Redis 限流。
支持 Resilience4J 熔断机制,自动降级。
✅ 示例:熔断机制
filters:- name: CircuitBreakerargs:name: myCircuitBreakerfallbackUri: forward:/fallback
当 myCircuitBreaker 触发熔断时,请求将被重定向到 /fallback。
Sentinel集成:
针对秒杀、支付等核心接口配置QPS限流与熔断规则。
spring:cloud:gateway:sentinel:enabled: truefallback: mode: responseresponse-status: 429response-body: "请求过于频繁,请稍后再试!"
1.5. 安全控制(Security & Authentication)
集成 OAuth2、JWT 实现 API 认证。
支持全局过滤器拦截未授权请求。
✅ 示例:基于 JWT 进行身份验证
filters:- name: AuthenticationFilterargs:tokenHeader: Authorization
请求需要携带 Authorization 头部,否则拒绝访问。
1.6. 监控与链路追踪
集成监控工具,实现全链路性能分析
SkyWalking集成:
网关记录请求的TraceID并透传至下游服务,通过SkyWalking追踪跨服务调用链路。
spring:sleuth:propagation-keys: traceId,spanId # 透传追踪头
场景:用户反馈下单超时,通过TraceID快速定位是网关、订单服务还是数据库瓶颈。
Prometheus指标暴露:
网关暴露请求量、延迟、错误率等指标,Grafana展示实时监控面板
2. Spring Cloud Gateway 的优势
功能 | Spring Cloud Gateway | Zuul |
---|---|---|
异步 & 高性能 | ✅ 基于 Reactor Netty,支持高并发 | ❌ Zuul 1.0 基于 Servlet,性能较低 |
动态路由 | ✅ 支持 | ✅ 支持 |
负载均衡 | ✅ 支持 | ✅ 支持 |
限流 & 熔断 | ✅ 支持 Redis 限流 & Resilience4J | ⚠ 需整合 Hystrix |
WebSocket 支持 | ✅ 原生支持 | ❌ Zuul 1.0 不支持 |
跨域 (CORS) | ✅ 内置支持 | ❌ 需手动实现 |
3. Spring Cloud Gateway 的典型应用场景
✅ 微服务网关:统一管理 API 请求,隐藏微服务细节。
✅ 负载均衡:自动均衡流量,提升服务可用性。
✅ 限流 & 防护:防止接口被恶意攻击,保护后端微服务。
✅ 动态路由:可根据 URL、Header、Method 进行灵活转发。
✅ 统一安全认证:集成 JWT / OAuth2,实现 API 级别的安全管理。
4. 总结
🔹 Spring Cloud Gateway 是 Spring 官方推荐的 API 网关,替代 Zuul 1.0。
🔹 基于 Netty 的异步架构,性能更优。
🔹 支持动态路由、请求过滤、负载均衡、限流、熔断、安全控制。
🔹 适用于微服务架构,实现统一流量管控。
愿赌服输也是一个成年人该有的品质。