一步一步学SpringCloud--API网关(gateway)

API网关

  • 简述
  • Spring Cloud Gateway特性
  • Spring Cloud Gateway与Netflix Zuul对比
  • Spring Cloud Gateway工作模式

简述

Spring Cloud Gateway是Spring官方基于Spring5.0,Spring Boot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway是为了为微服务架构提供一种简单而有效的统一的API路由管理方式。

Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix zuul,不仅提供统一的路由方式,并且基于Filter链的方式提供了网关的基本功能,例如:安全,监控/埋点,限流等等。

Spring Cloud Gateway特性

下面总结了一些gateway的特性:

  1. 基于java8编码
  2. 基于Spring Framework 5,Project Reactor和Spring Boot 2.0构建;
  3. 支持动态路由,能够匹配任务请求属性上的路由;
  4. 支持内置到Spring Handler映射中的路由配置;
  5. 支持基于HTTP请求的路由匹配(Path,Method,Header,Host等);
  6. 集成了Hystrix断路器;
  7. 过滤器作用于匹配的路由;
  8. 过滤器可以修改HTTP请求和HTTP响应(增加/修改 头部,增加/修改 请求参数,改写请求路径等);
  9. 支持Spring Cloud DiscoveryClient配置路由,与服务发现与注册配合使用。
  10. 支持限流
  11. 支持地址重写

Spring Cloud Gateway与Netflix Zuul对比

在Finchley正式版出来之前,Spring Cloud推荐的网关是Netflix提供的zuul。Finchley出来之后,Spring Cloud大力推荐使用的网关是gateway。为什么要从zuul换成gateway,下面我们来对比一下:

  1. zuul1.x是一个机遇阻塞I/O的API Gateway
  2. zuul1.x机遇servlet2.5,使用阻塞架构,它不支持任何长连接,如websocket。zuul的设计模式和nginx较像,每次I/O操作都是从工作线程中选择一个执行,请求线程被阻塞到工作线程完成,但是差别是nginx用C++实现,zuul用java实现,而jvm本身会有第一次加载较慢的情况,使得zuul的性能相对较差
  3. zuul2.x基于netty非阻塞、支持长连接,但Spring Cloud目前还没有整合。zuul2.x的性能较zuul1.x有较大提高。在性能方面,根据官网提供的基准测试,Spring Cloud Gateway的RPS(每秒请求数)是zuul的1.6倍
  4. Spring Cloud Gateway 建立 在 Spring Framework 5、 Project Reactor 和 Spring Boot 2 之上, 使用 非 阻塞 API。
  5. Spring Cloud Gateway 还 支持 WebSocket, 并且 与 Spring紧密集成, 拥有更好的开发体验

Spring Cloud Gateway工作模式

一步一步学SpringCloud--API网关(gateway)_第1张图片
客户端向 Spring Cloud Gateway 发出请求。然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。
过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。

你可能感兴趣的:(-----JAVA)