11241544
第一个知识点 网关简介
网关是流量的入口,常用功能:路由转发,权限校验,限流
问:网关是个硬件还是软件?
答:既是一种硬件,也是一种软件
第二个 知识点 Gateway简介
WebFlux+Netty+Reactor实现的响应式的API网关。
三、核心概念
路由 一个ID,一个目的URL,一组谓词工厂,一组Filter组成
谓词 匹配条件
过滤器 对请求和响应进行处理
四、工作原理
五、快速入门
第一步 引入依赖
增加配置
修改对应的配置
问:为什么这几个端口设置的数都不一样啊???啊?
六、路由为此工厂配置
谓词分类
Between Cookie
Between
-Header=X-Request-Id,\d+ 正则表达式 一个数字
自定义一个谓词
weight 谓词 确定权重 匹配 能匹配上让过
七、过滤器工厂配置
12种过滤器工厂
所有请求头
AddResponseHeader=X-Response-Name,msb
自定义过滤器
记录日志信息
两个要点 以GatewayFilterFactory
全局过滤器
globalFilter 全局过滤器
一个比较重要的过滤器 LoadBalanceClientFilter.java
负载均衡中选择一个服务
final ServiceInstance instance = choose(exchange); //返回一个选定的服务
自定义全局过滤器 实现接口 GlobalFilter Ordered
Ordered是用来排序的,数字越小,排名越靠前
GatewayLoadBalanceClientAutoConfiguration.java
8、源码分析
第一步 找Spring.factory 但是没找到
没有,就是一个管理jar包的pom文件
9个自动装配类
重点关注:GatewayAutoConfiguration
11250949
重点关注类 RouteLocator 先转化为definition,再转化为类
RoutePredicationHandlerMapping 匹配
GatewayProperties
NettyConfiguration
NettyConfiguration类里面有一个方法 gatewayHttpClient,返回一个HttpClient,通过这个客户端发送请求。
过滤器 routingFilter方法返回NettyRoutingFilter
GatewayLoadBalancerClientAutoConfiguration类中有一个方法loadBalanceClientFilter返回一个LoadBalanceacalientafilter类
11251020
RoutePredicateHandlerMapping.java里面有个方法是lookupRoute 返回一个mono
invokeHandler方法是干啥的?
过滤器按order的值的大小进行排序
自定义过滤器 对以前的接口进行重构
局部过滤器 某个服务上增加名称
web-flux用的很少,语法很复杂,是spring的新特性