• springcloud 09 spring cloud gateway01 基本介绍


    官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/

    1.什么是spring cloud gateway

    1.1说明

    spring cloud gateway是基于WebFlux框架实现的。而WebFlux底层使用了高性能的Reactor通信模式框架Netty。spring cloud gateway的目标是提供统一的路由方式,且基于filter链的方式提供网关的功能,如安全、监控/指标、限流。

    1.2.WebFlux基本概念

      传统的Wen框架,Struts,springmvc都是基于servlet的API和servlet容器运行的。在servlet3.1之后有了异步非阻塞的支持。而WebFlux是一个典型的非阻塞异步框架。它的核心是基于Reactor的相关API实现的。相对于传统的Web框架来说,它可以允许在如Netty,Undertow及支持Servlet3.0的容器上。非阻塞+函数式编程。

      Spring WebFlux是spring5.0新引入的响应式框架,区别于springmvc它不需要依赖Servlet API,它是完全异步非阻塞的,并且基于Reactor来实现响应式流规范

    2.有什么用

      反向代理、鉴权、流量控制、熔断、日志监控....

     3.spring cloud gateway的特性

      spring cloud gateway基于异步非阻塞模型

      基于SpringFramework5,Project Reactor,Springboot2.0构建的

      动态路由:能够匹配任何请求属性

      可以对路由指定断言-Predicate和过滤器-Filter

      请求限流功能

      支持路径重写

    4.spring cloud gateway和Zuul的区别

      1)Zuul 1.x是基于阻塞I/O的API 网关

      2)Zuul 1.x基于Servlet2.5使用阻塞架构,它不支持任何长链接(如WebSocket),性能较差

      3)Zuul 2.x理念更加先进,想基于Netty非阻塞且支持长链接,但springcloud还没有整合

      4)spring cloud gateway基于SpringFramework5,Project Reactor,Springboot2.0,使用非阻塞API

      5)spring cloud gateway还支持WebSocket,且和spring紧密集成,拥有更好的开发体验

    5.zuul 运行模式

      

      缺点:servlet是一个简单的网络IO模型,当请求进入Servlet Container时,Servlet Container时会为其绑定一个线程,在并发不高的场景下是适用的。但是并发量变高,线程数量就会上涨,而线程资源代价是昂贵的(上下文切换,内存消耗大),严重影响请求的处理时间。在一些简单的业务场景下,不希望为每个请求分配一个线程,只需要一个或者几个线程就可以处理极大并发的请求,这种场景下servlet模型就没有优势。

     

    6.spring cloud gateway运行模型及工作原理

    6.1模型

      web请求通过一些匹配条件,定位到真正的服务节点,并且在转发的过程前后,进行一些精细化的过滤控制。predicate-断言就是匹配条件,filter就是过滤器

      路由:是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由

      断言:开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由

      过滤:指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改

    6.2工作原理

      

       客户端向Spring Cloud Gateway发出请求。在Gateway Handler Mapping中进行匹配,找到和请求相匹配的路由,将其发送到网关Web处理程序Gateway Web Handler。该处理程序通过指定的请求的过滤器链,将请求发送到实际的服务执行业务逻辑,然后返回。过滤器由虚线分隔的原因是,过滤器可以在发送代理请求之前和之后运行逻辑。所有“前置”过滤器逻辑均被执行。然后发出代理请求。发出代理请求后,将运行“后”过滤器逻辑。前置过滤器可以做参数校验。权限校验、流量控制、日志输出、协议转换等。在后置过滤器中可以做响应内容、响应头的修改、日志的输出、流量健康等。

      

  • 相关阅读:
    Android 统一配置依赖管理
    Android图片压缩工具MCompressor
    Android Studio 打包自定义apk文件名
    sourceTree的下载与安装
    Mac环境下SVN的配置和使用
    AndroidStudio环境搭建
    设计模式之策略模式
    设计模式之状态模式
    设计模式之观察者模式
    mysql 查询小demo
  • 原文地址:https://www.cnblogs.com/jthr/p/14751671.html
Copyright © 2020-2023  润新知