SpringCloud Gateway工作流程

这篇具有很好参考价值的文章主要介绍了SpringCloud Gateway工作流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring Cloud Gateway的工作流程

SpringCloud Gateway工作流程,Java,spring cloud,gateway,spring

具体的流程:

  1. 用户发送请求到网关

  2. 请求断言,用户请求到达网关后,由Gateway Handler Mapping(网关处理器映射)进行Predicates(断言),看一下哪一个符合路由规则,选择对应的过滤器进行处理

    spring:
      cloud:
        gateway:
          routes:
            - id: api_route
              uri: http://localhost:8123
              predicates:
                - Path=/api/**
           filters:
            - 'AddRequestHeader=token,wahahaawahaha'
    

    上面是使用application.yml对网关进行路由规则的制定

    1. - id: api_route: 这是路由的标识符。这只是一个名称,可以是任何描述性的名称
    2. uri:http//localhost:8123是表示请求要转发的路径
    3. predicates:断言,比如指定了- Path=/api/**,任何到达网关的请求,如果请求资源定位符是/api/开头的都会进行匹配
    4. 例如:网关的端口是8090,我发送请求http://localhost:8090/api/hello,那么网关就会将请求转发到http://localhost:8123/api/hello,但是转发之前会经过filters,例如上面的AddRequestHeader=source,api,会在请求头加一个<source,api>
  3. 请求过滤:请求到达Gateway Web Handler,里面有很多Filter(过滤器),多个Filter像一个Chain(链条)一样串起来,符合路由断言的请求会先后经过这些Filter进行处理,在FIlter中可以进行限流、访问控制、参数校验、添加请求头等

  4. 服务处理:如果请求经过所有FIlter无异常,会将请求转发给真正的后端进行处理

  5. 响应过滤:后端处理完结果后,返回给Gateway的过滤器再次做处理,逻辑上可以称为 Post-Filters

总结:客户端的请求先通过匹配规则找到合适的路由,就能映射到具体的服务。然后请求经过过滤器处理后转发给具体的服务,服务处理后,再次经过过滤器处理,最后返回给客户端。

常见路由断言规则

SpringCloud Gateway工作流程,Java,spring cloud,gateway,spring

自定义过滤器

如果要定义的过滤器比较复杂,可以使用自定义过滤器

@Component
public class CustomGlobalFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        // 1. 获取请求头
        ServerHttpRequest request = exchange.getRequest();
        String path = INTERFACE_HOST + request.getPath().value();
        String method = request.getMethod().toString();
        log.info("请求唯一标识:" + request.getId());
        log.info("请求路径:" + path);
        log.info("请求方法:" + method);
        log.info("请求参数:" + request.getQueryParams());
        String sourceAddress = request.getLocalAddress().getHostString();
        log.info("请求来源地址:" + sourceAddress);
        log.info("请求来源地址:" + request.getRemoteAddress());
        ServerHttpResponse response = exchange.getResponse();
        // 2. 访问控制 - 黑白名单
        if (!IP_WHITE_LIST.contains(sourceAddress)) {
            response.setStatusCode(HttpStatus.FORBIDDEN);
            return response.setComplete();
        }
        // 3. 用户鉴权
        return chain.filter(exchange);

    }


   // 设置order调用顺序
    @Override
    public int getOrder() {
        return -1;
    }

    public Mono<Void> handleNoAuth(ServerHttpResponse response) {
        response.setStatusCode(HttpStatus.FORBIDDEN);
        return response.setComplete();
    }

    public Mono<Void> handleInvokeError(ServerHttpResponse response) {
        response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR);
        return response.setComplete();
    }
}

其实学习SpringCloud Gateway就是进行一些配置,没有什么资料比官方更丰富,所以强烈建议去看官方文档:官方文档文章来源地址https://www.toymoban.com/news/detail-842814.html

到了这里,关于SpringCloud Gateway工作流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java ProjectReactor 响应式编程 Mono 简单工作流程解析

    我们在查看 Spring Cloud 源码的时候,会发现已经引入了 Mono 或者 Flux 相关的代码,如果对这些代码不熟悉,就会觉得有些 Spring Cloud 源码将会变得晦涩难懂。Mono 和 Flux 为 ProjectReactor 响应式框架中的核心类。其相关概念可以参考 Flux、Mono、Reactor 实战(史上最全)和 响应式编程

    2023年04月23日
    浏览(45)
  • 【SpringCloud】11、Spring Cloud Gateway使用Sentinel实现服务限流

    1、关于 Sentinel Sentinel 是阿里巴巴开源的一个流量防卫防护组件,可以为微服务架构提供强大的流量防卫能力,包括流量控制、熔断降级等功能。Spring Cloud Gateway 与 Sentinel 结合,可以实现强大的限流功能。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近

    2024年02月01日
    浏览(57)
  • Java工作流框架:探索流程引擎的实现和应用

    目前,市面上有很多基于SpringBoot+Vue前后端分离的Java快速开发框架和工作流开发框架可供选择。以下是一些比较流行的框架: 1. Spring Cloud:Spring Cloud是一套基于Spring Boot的开发工具,用于快速构建分布式系统中的服务。它利用Spring Boot的便利来简化了分布式系统的开发,并通

    2024年02月14日
    浏览(48)
  • SpringCloud - Spring Cloud 之 Gateway网关,Route路由,Predicate 谓词/断言,Filter 过滤器(十三)

    阅读本文前可先参考 ​​​​​​SpringCloud - Spring Cloud根/父项目,开发准备(二)_MinggeQingchun的博客-CSDN博客 SpringCloud - Spring Cloud 之 Gateway网关(十三)_MinggeQingchun的博客-CSDN博客 Web 有三大组件(监听器 过滤器 servlet),Spring Cloud GateWay 最主要的功能就是路由转发,而在定义

    2024年02月14日
    浏览(67)
  • 深入理解JAVA垃圾收集器CMS,G1工作流程原理 GC流程图 什么社会触发Minor GC?触发MinorGC过程。Full GC 过程。

    JVM内存空间基础知识点(基于JDk1.8) 1.方法区:逻辑概念,元空间,方法区主要用于存储类的信息、常量池、方法数据、方法代码等。方法区逻辑上属于堆的一部分,但是为了与堆进行区分,通常又叫“非堆”。 2.程序计数器:程序计数器可以看作当前线程所执行的字节码的

    2024年04月25日
    浏览(41)
  • TCP/IP协议工作原理与工作流程

    使用OSI模型来描述一个网络中的各个协议层,如下: TCP/IP协议,英文全称Transmission Control Protocol/Internet Protocol,包含了一系列构成互联网基础的网络协议,是Internet的核心协议。TCP/IP协议是一个协议簇,包含了应用协议、传输协议、网际互联协议和路由控制协议。如下图: 应

    2024年04月25日
    浏览(49)
  • 网络安全等级保护测评:工作流程及工作内容

    **一、** 网络安全等级保护测评过程概述 网络安全等级保护测评工作过程包括四个基本测评活动: 测评准备活动、方案编制活动、现场测评活动、报告编制活动 。而测评相关方之间的沟通与洽谈应贯穿整个测评过程。每一项活动有一定的工作任务。如下表。 01 基本工作流程

    2024年02月06日
    浏览(55)
  • AES工作流程

    工作流程 模式 1:加密 ⚫ 复位EN 重置AES模块 ⚫ 设置模式寄存器mode[1:0]=00,设置流数据处理模式寄存器CHMOD[1:0] ⚫ 写AES_KEYRx寄存器,CTR和CBC模式下写AES_IVRx寄存器 ⚫ 写EN=1,使能AES ⚫ 写AES_DINR 寄存器4次 ⚫ 等待CCF标志置起 ⚫ 从AES_DOUTR分4次读出加密结果 ⚫ 对于同一个key,重

    2024年02月01日
    浏览(48)
  • SpringMVC的工作流程

    SpringMVC的工作流程图 SpringMVC的工作流程 1. 用户通过客户端向服务器发送请求,请求会被 SpringMVC的前端控制器DispatcherServlet所拦截。 2. DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器。 3. 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦

    2024年01月24日
    浏览(50)
  • HTTPS的工作流程

    hi,大家好,好久不见,今天为大家带来HTTPS协议的工作流程 HTTPS也是应用层协议,让我们再来回忆一下TCP/IP五层协议模型 HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层. HTTP协议在传输的时候是以文本的形式传输的,就可能会导致被劫持,这里的劫持包括但不限于

    2024年02月06日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包