API 网关的作用
API 网关是微服务架构的统一入口,承担路由转发、认证授权、限流熔断、日志记录等横切关注点。
Spring Cloud Gateway 架构
基于 Spring 5 + WebFlux + Reactor 构建,采用异步非阻塞模型。
核心概念
- Route:路由规则,包含 ID、目标 URI、断言集合和过滤器集合
- Predicate:匹配条件,决定请求是否走该路由
- Filter:对请求或响应进行处理
路由配置
spring: cloud: gateway: routes: - id: user-service uri: lb://user-service predicates: - Path=/api/users/** filters: - StripPrefix=1 - Retry=3
自定义过滤器
@Component public class AuthFilter implements GlobalFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { String token = exchange.getRequest() .getHeaders().getFirst("Authorization"); if (token == null || !validate(token)) { return unauthorized(exchange); } return chain.filter(exchange); } }
性能优化
- 连接池调优:调整 Netty 的 worker 线程数
- 响应缓存:对热点数据启用网关级缓存
- 异步处理:充分利用 Reactor 的异步特性
- JVM 参数:G1 垃圾收集器 + 合理的堆内存配置
监控与告警
集成 Prometheus + Grafana 实现:
- 请求 QPS、P99 延迟
- 路由命中率
- 熔断器状态
- JVM 内存与 GC 情况