gateway原理
流量进入网关后先进入handler mapping 进行匹配具体的route ,再通过handler 处理route。处理请求的时候经过过滤器链处理一系列过滤器(包括route中的自定义filter和系统自带的全局过滤器)进请求处理,最终到达被代理的服务。
GatewayProperties用于从配置文件中加载前缀为 spring.cloud.gateway的配置信息
spring gateway 接收请求流程
解析配置文件,生成元素为Route对象的集合。然后根据request中的URL匹配其中的某条Route对象。
↓↓↓
然后将路由信息放到上下文
同时获取对应的handler,用于invokeHandler方法的参数
寻找到路由后,执行处理过程
从route中的取出自定义过滤器,然后和全局过滤器(如负载均衡过滤器)合并,并排序(排序原理)。然后将集合放到过滤器链中。之后执行所有的过滤器。
负载均衡过滤器
获取route对象中的URL及微服务名称(如果URL是纯连接)。从容器中获取一个loadBalancer对象,同时根据serviceId从服务注册中心获取对应的URL。再使用轮询策略获取url。然后在将访问到gateway的地址替换成服务的请求地址,使用httpClient 进行访问。
作者:猛男陈朵朵
来源链接:https://blog.csdn.net/qq_41948178/article/details/109480168
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。