您现在的位置是:首页 > 网络趣梗网络趣梗

spring cloud gateway使用(springcloud gateway配置详解)

2022-09-25 01:46:45网络趣梗0人已围观

简介  spring cloud gateway使用(springcloud gateway配置详解),新营销网红网本栏目通过数据整理汇集了spring cloud gateway使用(springcloud gateway配置详解)相关信息,下面一起看看

  spring cloud gateway使用(springcloud gateway配置详解),新营销网红网本栏目通过数据整理汇集了spring cloud gateway使用(springcloud gateway配置详解)相关信息,下面一起看看。

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

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

   SG定义了几个概念:

  路由:路由是网关的基本构件。它由一个ID、一个目标URL、一组谓词和一组过滤器组成。当谓词为真时,意味着请求匹配相应的路由。

  谓词:Java 8函数谓词。输入是由Spring框架封装的ServerWebExchange对象。开发者可以基于这个对象匹配HTTP请求的任何内容,比如请求头或者请求参数。

   Filter:由特定工厂类构造的一组Spring框架提供的GatewayFilter对象。过滤器可以在处理请求或响应之前/之后对其进行修改。

  体系结构SG处理请求的一般过程如下:

   GatewayHandlerMapping确定相应的请求是否与路由匹配。

  如果路由匹配,则请求被移交给GatewayWebHandler,处理程序调用过滤器链来处理请求:

  首先,执行“预”过滤器的逻辑。

  然后执行请求处理骆集。

  最后,执行“后”过滤器的逻辑。

  如果路线不匹配,则不执行相应的处理。

  下面是一个具体的例子。

   SG支持基于Java编码的配置和基于配置文件的配置。

   Java编码模式配置

  配置文件配置

  这两种配置是等效的。

  启动流程SG是基于SpringBoot构建的,启动配置可以在项目的spring.factories文件中找到。

  因为涉及到很多配置,所以我们直接定位核心Bean。

   handler mapping构建的处理程序映射实例是RoutePredicatehandlerMapping。

   WebHandler:构造的WebHandler是FilteringWebHandler,它接收List GlobalFilter作为参数。

   Route:路由构造由RouteDefinitionRouteLocator实例处理,它根据路由配置(即上面的配置文件)构建路由实例。

  从上面的代码可以看出,最后,Filter、WebHandler(注意这是GlobalFilter)和Route都作为直接或间接参数传递给RoutePredicateHandlerMapping。因此,我们可以从RoutePredicateHandlerMapping中梳理出SG的执行过程。

   RoutePredicateHandlerMapping是HandlerMapping的一个例子,HandlerMapping属于SpringWebFlux,这里不做解释。请自行查阅相关资料。

  请求处理流程我们将结合以上配置文件和SG的具体例子来说明SG请求的处理流程:

  当请求到达SG时,首先由RoutePredicateHandlerMapping处理请求(前面的流程由SpringWebFlux处理,不在讨论范围内)。

  首先根据请求,从RouteLocator查询符合规则的路由,并返回路由。

  返回其路由设置为exchange的属性。

  返回构造期间传入的WebHandler。

  执行web处理程序

  从交换机的属性中获取路由。

  从路由获取网关过滤器链

  使用GlobalFilter进行整合和排序,以形成最终的过滤器。

  横向过滤器

  有些GlobalFilter有执行服务的功能,比如NettyRoutingFilter。这种过滤器负责将请求转发给相应的服务进行特定的逻辑处理。

  关键流程代码

  在1,根据交换从RouteLocator查询匹配的路由。

   1.1根据谓词的路径匹配

   2、设置路由到交换机的属性。

   3、从交换的属性中获取路由。

   4、从路由中获取GatewayFilter列表。

   5,6,7,整合GlobalFilter和GatewayFilter,按顺序排序。

  在8,执行过滤。

   SG中服务的执行也是通过全局过滤器来执行的。有些全局过滤器是在SG中默认配置的,下面列出了其中一些。

   Filter的具体功能这里就不细说了,不过可以自己看源代码。这里只涉及三个滤波器:

  负载平衡客户端过滤器:负载平衡

   NettyRoutingFilter:执行服务

   NettyWriteResponseFilter:写回响应

  先看LoadBalancerClientFilter。核心源代码如下:

   1,如果配置的目标url不是以lb开头,将被忽略。即lb :///格式的url是负载平衡的。

   2.根据交换选择相应的服务。在这里,实现了负载平衡逻辑。自己看源代码。

   3、建立真实的服务请求地址

   4、将请求设置为交换属性。

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

   1、从交换机获取服务请求。

   2、构建请求参数,包括方法、url和chunkedTransfer(代码省略)

   3、通过httpClient发送请求调用

   4、将响应和连接信息设置为交换属性。

  最后,由NettyWriteResponseFilter处理响应。

   1,首先注意这个过滤器是后置过滤器,也就是处理响应。

   2、从交换机获取连接。

   3、从连接中获得服务响应

   4、将服务响应写入网关响应。

  参考SpringCloud Gateway的官方文档。

  云网关源代码

  门户门户篇粤语歌网(经典粤语歌汇总)

  北京奥特莱斯(来北京必去的12家商场)

  英雄超级放肆(还记得英雄超级放肆吗?)

  龚自珍资料(清代诗人龚自珍生平事迹简介)

  象牙塔是什么意思?(“象牙塔”有什么不好?)

  彩色风信子(水培风信子容易养)

  京字怎么读?

  于吉是哪里人?(古代著名美女于吉在哪里?)

  三本事业单位(我们还有哪些“三本”?)

  电子酒柜(酒柜最全指南)

  德州景点(德州62个景点)

  玉兰油官网(玉兰油发布高端精华系列)

  更多spring cloud gateway使用(springcloud gateway配置详解)相关信息请关注本文章,本文仅仅做为展示!

Tags: 网络趣事  

很赞哦! ()

留言与评论 (共有 条评论)
验证码:

本栏推荐