Skip to content

网关实现 ​

深入理解SpringCloud Gateway的实现原理,掌握路由、过滤器、限流等核心功能,理解路由匹配、过滤器链、负载均衡等机制。

📋 网关概览 ​

SpringCloud Gateway是SpringCloud的网关实现,提供了路由、过滤、限流等功能。

🎯 一、路由机制 ​

1.1 Route定义 ​

Route:

java
public class Route implements Ordered {
    private final String id;
    private final URI uri;
    private final int order;
    private final AsyncPredicate<ServerWebExchange> predicate;
    private final List<GatewayFilter> filters;
}

1.2 路由匹配 ​

RoutePredicateHandlerMapping:

java
@Override
public Mono<HandlerMethod> getHandlerInternal(ServerWebExchange exchange) {
    return lookupRoute(exchange)
            .flatMap((Function<Route, Mono<?>>) r -> {
                exchange.getAttributes().put(GATEWAY_ROUTE_ATTR, r);
                return Mono.just(emptyHandlerMethod);
            }).switchIfEmpty(Mono.empty().then(Mono.fromRunnable(() -> {
        exchange.getAttributes().remove(GATEWAY_ROUTE_ATTR);
    })));
}

🎯 二、过滤器链 ​

2.1 过滤器类型 ​

  • GlobalFilter:全局过滤器
  • GatewayFilter:局部过滤器

2.2 过滤器执行 ​

FilteringWebHandler:

java
@Override
public Mono<Void> handle(ServerWebExchange exchange) {
    Route route = exchange.getRequiredAttribute(GATEWAY_ROUTE_ATTR);
    List<GatewayFilter> gatewayFilters = route.getFilters();
    
    List<GatewayFilter> combined = new ArrayList<>(this.globalFilters);
    combined.addAll(gatewayFilters);
    AnnotationAwareOrderComparator.sort(combined);
    
    return new DefaultGatewayFilterChain(combined).filter(exchange);
}

📖 学习资源 ​

视频教程 ​

书籍推荐 ​

  • 《Spring Cloud微服务实战》 - 翟永超

网站资源 ​

✅ 学习检查清单 ​

  • [ ] 已理解路由机制
  • [ ] 已理解过滤器链
  • [ ] 已理解限流实现
  • [ ] 已总结核心知识点

上一章节:配置中心
下一章节:熔断降级
返回目录:SpringCloud源码深度解析