![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Cloud Gateway
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
Spring-Cloud-Gateway 源码解析 —— 网关管理 HTTP API
1. 概述本文主要分享网关管理 HTTP API。org.springframework.cloud.gateway.actuate.GatewayWebfluxEndpoint,提供管理网关的 HTTP API 。构造方法,代码如下:@RestController@RequestMapping("${management.context-path:/application}/gateway")public class GatewayWebfluxEndpoint implements .原创 2020-06-24 00:18:59 · 246 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.10) 之 RequestRateLimiterGatewayFilterFactory 请求限流
1. 概述本文主要分享RequestRateLimiterGatewayFilterFactory 的代码实现。在《Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.2) 之 GatewayFilterFactory 过滤器工厂》一文中,我们看到 Spring Cloud Gateway 提供了多种 GatewayFilterFactory 的实现,而 RequestRateLimiterGatewayFilterFactory 也是其中的一种。通过 RequestR...原创 2020-06-24 00:15:10 · 3719 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.9) 之 HystrixGatewayFilterFactory 熔断
1. 概述本文主要分享HystrixGatewayFilterFactory 的代码实现。在《Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.2) 之 GatewayFilterFactory 过滤器工厂》一文中,我们看到 Spring Cloud Gateway 提供了多种 GatewayFilterFactory 的实现,而 HystrixGatewayFilterFactory 也是其中的一种。通过 HystrixGatewayFilterFactory ,可...原创 2020-06-24 00:03:15 · 2385 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.8) 之 WebClientHttpRoutingFilter
1. 概述本文主要分享WebClientHttpRoutingFilter 的代码实现。WebClientHttpRoutingFilter ,Http路由网关过滤器。其根据http://或https://前缀( Scheme )过滤处理,使用基于org.springframework.cloud.gateway.filter.WebClient实现的 HttpClient 请求后端 Http 服务。WebClientWriteResponseFilter ,与 WebClien...原创 2020-06-23 23:59:18 · 1794 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.7) 之 NettyRoutingFilter
1. 概述本文主要分享NettyRoutingFilter 的代码实现。NettyRoutingFilter ,Netty路由网关过滤器。其根据http://或https://前缀( Scheme )过滤处理,使用基于 Netty 实现的 HttpClient 请求后端 Http 服务。NettyWriteResponseFilter ,与 NettyRoutingFilter成对使用的网关过滤器。其将 NettyRoutingFilter 请求后端 Http 服务的响应写回客户端...原创 2020-06-23 23:55:26 · 3611 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.6) 之 WebSocketRoutingFilter
1. 概述本文主要分享WebsocketRoutingFilter 的代码实现。WebsocketRoutingFilter ,Websocket路由网关过滤器。其根据ws:///wss://前缀( Scheme )过滤处理,代理后端 Websocket 服务,提供给客户端连接。如下图 :目前一个RouteDefinition 只能指定一个后端 WebSocket 服务。官方正在计划在 LoadBalancerClientFilter 上实现 Websocket 的负载均衡功能...原创 2020-06-23 23:50:52 · 3039 阅读 · 2 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.5) 之 ForwardRoutingFilter
1. 概述本文主要分享ForwardRoutingFilter 的代码实现。RouteToRequestUrlFilter ,转发路由网关过滤器。其根据forward://前缀( Scheme )过滤处理,将请求转发到当前网关实例本地接口。举个例子,配置 RouteDefinition 路由定义如下 :spring: application: name: juejin-gateway cloud: gateway: routes: ...原创 2020-06-23 23:45:22 · 1853 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.4) 之 LoadBalancerClientFilter 负载均衡
1. 概述本文主要分享LoadBalancerClientFilter 的代码实现。LoadBalancerClientFilter 根据lb://前缀过滤处理,使用serviceId选择一个服务实例,从而实现负载均衡。2. 环境搭建在《Spring-Cloud-Gateway 源码解析 —— 路由(1.4)之 DiscoveryClientRouteDefinitionLocator 注册中心》「2. 环境搭建」有详细教程。3. LoadBalancerClientFil...原创 2020-06-23 23:42:40 · 2084 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.3) 之 RouteToRequestUrlFilter
1. 概述本文主要分享RouteToRequestUrlFilter 的代码实现。RouteToRequestUrlFilter 根据匹配的 Route ,计算请求的地址。注意,这里的地址指的是 URL ,而不是 URI。???? RouteToRequestUrlFilter 的代码十分少,所以这会是一篇简单的文章。2. RouteToRequestUrlFilterorg.springframework.cloud.gateway.filter.RouteToRequestUrlFi原创 2020-06-23 23:40:35 · 1979 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.2) 之 GatewayFilterFactory 过滤器工厂
1. 概述本文主要分享GatewayFilterFactory 的实现类。GatewayFilterFactory 实现类较多,根据用途整理如下脑图 :下面我们开始逐块解析源码实现。2. Header本小节分享 Header 相关的 GatewayFilterFactory 实现类。2.1 AddRequestHeaderGatewayFilterFactory用途 :添加指定请求 Header 为指定值。 配置 : spring: cloud: g.原创 2020-06-23 23:38:50 · 734 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.1) 之 GatewayFilter 一览
1. 概述本文主要对过滤器 GatewayFilter 做整体的认识。过滤器整体类图如下 :是不是有点疑惑 GlobalFilter 与 GatewayFilter 的关系 ?且见本文分晓。2. GatewyFilterorg.springframework.cloud.gateway.filter.GatewayFilter,网关过滤器接口,代码如下 :public interface GatewayFilter { /** * Process the Web r..原创 2020-06-23 23:33:30 · 904 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 处理器 (3.3) 之 FilteringWebHandler 创建过滤器链
1. 概述本文主要分享FilteringWebHandler。在《Spring-Cloud-Gateway 源码解析 —— 处理器 (3.2) 之 RoutePredicateHandlerMapping 路由匹配 》「2.1 SimpleHandlerAdapter」里,我们看到SimpleHandlerAdapter#handle(ServerWebExchange, Object)调用FilteringWebHandler#handle(ServerWebExchange)方法,...原创 2020-06-23 23:29:33 · 1087 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 处理器 (3.2) 之 RoutePredicateHandlerMapping 路由匹配
1. 概述本文主要分享RoutePredicateHandlerMapping 路由匹配。我们先一起来看看,一个请求是怎么被 Spring Cloud Gateway 处理的,如下图 :org.springframework.web.reactive.DispatcherHandler:接收到请求,匹配 HandlerMapping ,此处会匹配到 RoutePredicateHandlerMapping 。 org.springframework.cloud.gateway.hand..原创 2020-06-23 23:27:48 · 1934 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 处理器 (3.1) 之 RoutePredicateFactory 路由谓语工厂
1. 概述本文主要分享RoutePredicateFactory 路由谓语工厂。RoutePredicateFactory 涉及到的类在org.springframework.cloud.gateway.handler.predicate包下,如下图 :Spring Cloud Gateway 创建 Route 对象时,使用 RoutePredicateFactory 创建 Predicate 对象。Predicate 对象可以赋值给Route.predicate属性,用于匹配请求...原创 2020-06-22 23:58:38 · 790 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 路由(2.4)之 Kotlin 自定义 RouteLocator
1. 概述本文主要分享如何使用 Kotlin 实现自定义 RouteLocator。???? 由于笔者暂时不了解 Kotlin ,也比较懒,暂时不准备了解 Kotlin ,所以本文很大可能性是"一本正经的胡说八道"。2. RouteLocatorDslorg.springframework.cloud.gateway.route.RouteLocatorDsl,使用 Kotlin 实现自定义 RouteLocator 。我们先打开GatewayDsl.kt,大体浏览一下。下面我们来看..原创 2020-06-22 23:56:19 · 345 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 路由(2.3)之 Java 自定义 RouteLocator
1. 概述本文主要分享如何使用 Java 实现自定义 RouteLocator。ps :为什么这里强调 Java 呢?可以使用 Kotlin 实现自定义 RouteLocator ,在下一篇文章我们会详细分享。首先我们来看一段示例程序,代码如下 :import static org.springframework.cloud.gateway.filter.factory.GatewayFilters.addResponseHeader;import static org.springfr原创 2020-06-22 23:54:51 · 1206 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 路由(2.2)之 RouteDefinitionRouteLocator 路由配置
1. 概述本文主要分享RouteDefinitionRouteLocator 的源码实现。蓝色部分 :RouteDefinitionRouteLocator 。2. RouteDefinitionRouteLocatororg.springframework.cloud.gateway.route.RouteDefinitionRouteLocator,基于RouteDefinitionLocator的 RouteLocator实现类。RouteDefinitionRoute...原创 2020-06-22 23:53:02 · 3143 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 路由(2.1)之 RouteLocator 一览
1. 概述本文主要对路由定位器 RouteLocator 做整体的认识。在《Spring-Cloud-Gateway 源码解析 —— 路由(1.1)之 RouteDefinitionLocator 一览》中,我们对 RouteLocator 对了简单的介绍 : RouteLocator 可以直接自定义路由(org.springframework.cloud.gateway.route.Route) ,也可以通过 RouteDefinitionRouteLocator 获取 Route...原创 2020-06-22 23:50:40 · 925 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 路由(1.4)之 DiscoveryClientRouteDefinitionLocator 注册中心
1. 概述本文主要对DiscoveryClientRouteDefinitionLocator 的源码实现。DiscoveryClientRouteDefinitionLocator 通过调用org.springframework.cloud.client.discovery.DiscoveryClient获取注册在注册中心的服务列表,生成对应的 RouteDefinition 数组。2. 环境搭建在解析源码之前,我们先以 Eureka 为注册中心,讲解下如何配置 DiscoveryC...原创 2020-06-22 23:47:09 · 1396 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 路由(1.3)之 RouteDefinitionRepository 存储器
1. 概述本文主要对RouteDefinitionRepository 的源码实现。蓝色部分 :RouteDefinitionRepository 。本文涉及到的类图如下 :下面我们来逐个类进行解析。2. RouteDefinitionWriterorg.springframework.cloud.gateway.route.RouteDefinitionWriter,路由配置写入接口。该接口定义了保存与删除两个方法,代码如下 :public interface ...原创 2020-06-22 23:44:23 · 6229 阅读 · 3 评论 -
Spring-Cloud-Gateway 源码解析 —— 路由(1.2)之 PropertiesRouteDefinitionLocator 配置文件
1. 概述本文主要对PropertiesRouteDefinitionLocator 的源码实现。蓝色部分 :PropertiesRouteDefinitionLocator 。2. PropertiesRouteDefinitionLocatororg.springframework.cloud.gateway.config.PropertiesRouteDefinitionLocator,从配置文件( 例如,YML / Properties 等 ) 读取路由配置。代码如下 :..原创 2020-06-21 20:52:34 · 1569 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 路由(1.1)之 RouteDefinitionLocator 一览
1. 概述本文主要对路由定义定位器 RouteDefinitionLocator 做整体的认识。在《Spring-Cloud-Gateway 源码解析 —— 网关初始化》中,我们看到路由相关的组件 RouteDefinitionLocator / RouteLocator 的初始化。涉及到的类比较多,我们用下图重新梳理下 :RouteDefinitionLocator负责读取路由配置(org.springframework.cloud.gateway.route.RouteDefi...原创 2020-06-21 20:49:08 · 956 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 核心组件构建原理
引言在当下学习和使用 spring cloud 技术栈的热潮中,网关已经成了不可或缺的内容。开发者在选择用来解决特定领域内问题的框架时,多了解几款相关同类产品可加大选择余地。除了 Netflix 的 zuul 之外,spring cloud gateway 可作为开发者的另一个选择。Zuul 分 1.x 和 2.x 版本。Zuul 2.x 版本和 spring cloud gateway 都使用 Non-Blocking I/O 模型。本文主要从源码上介绍 spring cloud gate原创 2020-06-21 20:43:12 · 702 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 网关初始化
1. 概述本文主要分享Spring Cloud Gateway 启动初始化的过程。在初始化的过程中,涉及到的组件会较多,本文不会细说,留到后面每篇文章针对每个组件详细述说。那么这有什么意义呢?先对 Spring Cloud Gateway 内部的组件有整体的印象。在官方提供的实例项目spring-cloud-gateway-sample,我们看到 GatewaySampleApplication 上有@EnableAutoConfiguration注解。因为该项目导入了sprin...原创 2020-06-21 20:30:36 · 865 阅读 · 0 评论 -
Spring-Cloud-Gateway 源码解析 —— 调试环境搭建
1. 依赖工具Maven (>= 3.3.3) JDK IntelliJ IDEA2. 源码拉取从官方仓库https://github.com/spring-cloud/spring-cloud-gateway.gitFork出属于自己的仓库。为什么要Fork?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。????使用IntelliJ IDEA从Fork出来的仓库拉取代码。如果master分支处于1.x版本,请使用In...原创 2020-06-21 20:24:50 · 856 阅读 · 0 评论 -
Spring Cloud 网关 Spring Cloud Gateway 入门
1. 概述Spring Cloud Gateway是由WebFlux+Netty+Reactor实现的响应式的 API 网关。Spring Cloud Gateway 旨在为微服务架构提供一种简单且有效的 API 路由的管理方式,并基于 Filter 的方式提供网关的基本功能,例如说安全认证、监控、限流等等。Spring Cloud Gateway 定位于取代 NetflixZuul,成为 Spring Cloud 生态系统的新一代网关。目前看下来非常成功,老的项目的网关逐步从 ...原创 2020-06-21 19:41:49 · 2095 阅读 · 0 评论