Spring cloud gateway 源码分析02 网关路由功能01

核心加载,查找路由函数如下

获取路由route后,再调用validateRoute校验

创建一个类型为 org.springframework.cloud.gateway.config.GatewayProperties 的 Bean 对象,用于加载配置文件配置的 RouteDefinition / FilterDefinition

Spring Cloud Gateway Diagram

看一下sample中的路由例子,如下

指定一个filter,处理后转发到指定的uri

Route 的构建,分成同步和异步,入参都为RouteDefinition

看加载RouteDefinition

RouteDefinition,通过字符串text 初始化

PredicateDefinition 初始化同理

FilterDefinition 同理

从配置文件读取路由配置

routes 属性,路由配置。通过 spring.cloud.gateway.routes 配置

路由存储

也就是更新本地内存map的routes数据

DiscoveryClientRouteDefinitionLocator   路由的发现,获取注册在注册中心的服务列表,生成对应的 RouteDefinition 数组。

1.首先解析配置文件的表达式,获取includePredicate

2.根据解析出的urlExpr和服务实例serviceInstance,构造出routeDefinition

3.再解析出配置文件中的predicate,添加到RouteDefinition中

4.继续从配置文件中解析出filters,添加到RouteDefinition中

5.最后返回RouteDefinition

发布了386 篇原创文章 · 获赞 2 · 访问量 9839

猜你喜欢

转载自blog.csdn.net/kuaipao19950507/article/details/105255731