Spring-Cloud-Gateway
文章平均质量分 89
Spring-Cloud-Gateway的源码调用分析
Polarisy丶
这个作者很懒,什么都没留下…
展开
-
Spring-Cloud-Gateway-09-动态路由与自动刷新
大体的意思就是说,事件的发布者发布事件,事件的监听这对对应的事件进行监听,当监听到对应的事件时,就会触发调用相关的方法。因此,在事件处理中,事件是核心,是事件发布者和事件监听者的桥梁。回顾前几节的内容,我们的路由配置是在服务启动之后通过各个渠道(配置文件、注册中心、缓存等)加载进来的,那么如果我们想要改变路由的配置,不得不重启服务,这样一来就十分麻烦,所以就引申出了。两种不同的方法,有兴趣的同学可以去实现下,这里写的很粗糙,只是提供大致的方向,还有很多细节没有涉及。方法就是在事件发布的时候触发。原创 2022-10-26 17:34:49 · 4353 阅读 · 0 评论 -
Spring-Cloud-Gateway-08-路由的自动装配与加载流程
可以发现,RouteDefinitionLocator的作用是汇聚不同源的路由信息RouteDefinition,RouteLocator可以直接自定义路由,还可以通过RouteDefinitionLocator获取所有的配置的RouteDefinition,最终转换成Route供调用方RoutePredicateHandlerMapping获取。原创 2022-10-25 19:32:49 · 923 阅读 · 0 评论 -
Spring-Cloud-Gateway-07-GatewayFilterChain的执行过程
的排序是在很前面的,按道理这种响应处理的类应该是在靠后才对,这里的设计比较巧妙。大家可以看到chain.filter(exchange).then(),意思就是执行到我的时候直接跳过下一个,等后面的过滤器都执行完后才执行这段逻辑。:从请求中获取body缓存到网关上下文,这样就可以直接从网关上下文中拿到请求参数,而不会出现从request中拿到之后还要回填到请求体的问题。:根据 lb:// 前缀过滤处理,做负载均衡,选择最终要调用的服务地址。:根据匹配的 Route ,计算请求的地址。:转发路由网关过滤器。原创 2022-10-20 15:44:13 · 1253 阅读 · 1 评论 -
Spring-Cloud-Gateway-06-DispatcherHandler调用解析
DispatcherHandler的注入在自动装配那一节已经说过了,忘记的同学可以重新会看一下。接口,则调用重写的getOrder方法,否则返回null,最后会返回。接口或者都没有实现,那么通过getOrder方法得到的值来排序。接下来我们来看下最核心的handle方法是如何具体处理请求的。接着回到前面的handle方法中,其中有一步就是用来排序的。就是我们需要的,通过名字可以猜到就是用来处理路由转发的。可以看到,这里初始化了核心的三部分内容,具体是。中,通过handle方法来处理具体的请求。原创 2022-10-20 10:09:39 · 737 阅读 · 0 评论 -
Spring-Cloud-Gateway-05-请求到HttpWebHandlerAdapter的调用链路
通过这些类的名字,我们可以发现,HttpHandler 往下就是具体的 Web 容器了,也就是说有具体的 Web 容器来接受请求,然后通过调用 HttpWebHandlerAdapter#handler 来进行后续的处理。这样我们也就明白了 为什么 HttpHandler 的具体实现是一个适配器,因为它要适配不同的底层容器,Spring webFLux 不仅仅可以使用 NettyReactiveWebServer 作为底层Web 容器,也可以使用 tomcat、jetty等 servlet 的容器。原创 2022-10-19 15:32:23 · 896 阅读 · 0 评论 -
Spring-Cloud-Gateway-04-HttpWebHandlerAdapter到DispatcherHandler调用流程
具体实现类是ExceptionHandlingWebHandler,那么是怎么调用到DispatcherHandler中的?更加底层的一个 API,也就是说很可能是由 HttpHandler 来调用 WebHandler (请求由下往上),但是。通过调试可知,当存在后续filter时,会继续调用filter方法,否则直接调用this.handler.handle方法。类的handle方法会调用父类WebHandlerDecorator的handle方法。对象,通过分析得到持有的。原创 2022-10-18 16:46:30 · 1026 阅读 · 0 评论 -
Spring-Cloud-Gateway-03-网关自动装配
找到gateway的依赖,spring-cloud-starter-gateway点进去之后找到它的依赖从名称上可以判断spring-cloud-gateway-server是gateway的核心依赖,找到依赖包,看到如下结构spring.factories是一些自动装配的类,如下可以看到其中比较重要的是GatewayAutoConfiguration,负责很多bean的初始化,类声明如下:和分别是在之前和之后加载其中和算是比较重要的装配类先看WebFluxAutoConfiguration,类声明原创 2022-10-17 16:33:09 · 831 阅读 · 1 评论 -
Spring-Cloud-Gateway-02-请求调用基本流程
之后,会通过一些匹配条件,定位到真正的服务节点,并且在这个转发过程前后,进行一些细粒度的控制,其中。:GateWayFilter的实例,使用过滤器,可以在请求被路由之前或者之后对请求进行修改。:开发人员可以匹配HTTP请求中的内容(请求头和请求参数),如果请求断言匹配则进行路由。:构建网关的基础模块,由ID、目标URL、过滤器等组成。spring cloud gateway 官网的流程图。原创 2022-10-17 16:29:52 · 2348 阅读 · 0 评论 -
Spring-Cloud-Gateway-01-网关基本概念
的概念,网关为微服务架构的系统提供简单、有效且统一的API路由管理,作为系统的统一入口,提供内部服务的路由中转,给客户端提供统一的服务,可以实现一些和业务没有耦合的公用逻辑,主要功能包含认证、鉴权、路由转发、安全策略、防刷、流量控制、监控日志等。如果没有其他更优方法,我们只能记录每个微服务对应的地址,分别去调用,但是这样会有很多的问题和潜在因素。认证复杂,每个微服务可能存在不同的认证方式,客户端去调用,要去适配不同的认证,存在跨域的请求,调用链有一定的相对复杂性(防火墙 / 浏览器不友好的协议)。原创 2022-10-17 16:27:04 · 598 阅读 · 0 评论