<返回更多

SpringCloud Gateway详解

2020-12-18    
加入收藏

本文将详细分析SpringCloud Gateway是如何实现的。

架构

SpringCloud Gateway(下面简称SG)基于SpringWebFlux,整体架构如下图所示:

SpringCloud Gateway详解

 

SG定义了几个概念:

架构流程

一个请求被SG处理的大致流程如下所示:

下面以一个具体的例子来进行说明。

SG支持基于Java编码方式的配置以及基于配置文件的配置。

SpringCloud Gateway详解

 

SpringCloud Gateway详解

 

这两个配置是等价的。

启动流程

SpringCloud Gateway详解

 

RoutePredicateHandlerMapping是HandlerMapping的一个实例,HandlerMapping归属于SpringWebFlux,这里不做说明,请自行查阅相关资料。

SpringCloud Gateway详解

 

请求处理流程

我们结合上面的配置文件,以及SG具体的实例来说明SG对请求的处理流程:

 

SpringCloud Gateway详解

 

关键流程代码

SpringCloud Gateway详解

 

执行服务

SG中服务的执行也是通过GlobalFilter来执行的,SG中默认配置了一些GlobalFilter,下面列出了部分。

SpringCloud Gateway详解

 

具体Filter作用这里不做详述,可自行阅读源码,这里只关注三个Filter:

先看LoadBalancerClientFilter,核心源码如下:

SpringCloud Gateway详解

 

NettyRoutingFilter在LoadBalancerClientFilter之后,用于执行服务。

SpringCloud Gateway详解

 

最后由NettyWriteResponseFilter来处理响应。

SpringCloud Gateway详解

 

参考资料

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>