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

image.png

Gateway是在Spring生态系统之上构建的API网关服务,基于Spring5,Spring Boot2和Project Reactor等技术。
Gateway旨jiezai在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等
image.png
SpringCloud Gateway 是 Spring Cloud 的一个全新项目,基于Spring 5.0 + Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 1.x非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于 WebFlux框架实现的,而WebFlux框架底层则是使用了高性能的Reactor模式通信框架Netty。

SpringCloud Gateway的目标提供统一的路由方式且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

Gatewa依赖:
image.png

Gateway可以实现:反向代理、鉴权、流量控制、熔断、日志监控

网关所在架构中的位置:
网关的意思:大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信网关
息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway) 就是一个网络连接到另一个网络的“关口”。也就是网络关卡。
image.png

1.SpringCloud Gateway特性

基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0进行构建

  1. 动态路由:能够匹配任何请求属性
  2. 可以对路由指定 Predicate(断言)和 Filter(过滤器)
  3. 集成Hystrix的断路器功能
  4. 集成Spring Cloud 服务发现功能
  5. 易于编写的 Predicate(断言)和 Filter(过滤器)
  6. 请求限流功能
  7. 支持路径重写

    2.SpringCloud Gatewa 与 Zuul的区别

    在SpringCloud Finchley 正式版之前,Spring Cloud 推荐的网关是 Netfix 提供的Zuul

  8. Zuul 1.x,,是一个基于阻塞 I/O的 API Gateway

  9. Zuul 1.x基于Servlet 2.5使用阻塞架构他不支持任何长连接(如WebSocket)Zuul 的设计模式和Nginx较像,每次 I/O 操作都是从工作线程中选择一个执行,请求线程被阻塞到工作线程完成,但是差别是Nginx用C++实现,Zuul 用Java实现,而JVM本身会有第一次加载较慢的情况,使得Zuul的性能相对较差。
  10. Zuul 2.x理念更先进,想基于Netty非阻塞和支持长连接,但SpringCloud目前还没有整合。Zuul 2.x的性能较 Zuul1.x 有较大提升。在性能方面,根据官方提供的基准测试,Spring Cloud Gateway 的 RPS(每秒请求数)是Zuul的1.6倍。
  11. SpringCloud Gateway 建立在Spring Framework 5, Project Reactor 和 Spring Boot 2.0之上,使用非阻塞API。
  12. SpringCloud Gateway还支持WebSocket,并且与Spring紧密集成拥有更好的开发体验