网关实现
深入理解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源码深度解析