1Gateway 介绍 · SpringCloud微服务实战 · 看云
导航
1. Spring Clould Gateway是什么?
Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关,Spring Cloud Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术。Spring Cloud Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能, 例如:熔断、限流、重试等。
Spring Cloud Gateway需要Spring Boot和Spring Webflux提供的Netty下运行,不能在传统的Servlet容器中或作为WAR构建时使用
2. Spring Cloud Gateway 具有的特性
- 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 进行构建;
- 动态路由:能够匹配任何请求属性;
- 可以对路由指定 Predicate(断言)和 Filter(过滤器);
- 集成Hystrix的断路器功能;
- 集成 Spring Cloud 服务发现功能;
- 易于编写的 Predicate(断言)和 Filter(过滤器);
- 请求限流功能;
- 支持路径重写。
3. 工作原理

客户端向 Spring Cloud Gateway 发出请求。如果 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。 过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑
在没有端口的路由中定义的URI,HTTP和HTTPS URI的默认端口值分别为80和443。
4. 与Zuul 1.*的对比
- Zuul构建于 Servlet 2.5,兼容 3.x,使用的是阻塞式的 API,不支持长连接,比如 websockets。
- Spring Cloud Gateway构建于 Spring 5+,基于 Spring Boot 2.x 响应式的、非阻塞式的 API。同时,它支持 websockets,在使用方面也比较简单
毕竟Spring Cloud Gateway是Spring Cloud 现在主力推广的,从最新的Spring Cloud 版本可以看到并没有集成Zuul 2.*
最终的最终,在满足公司业务的情况下,用Zuul 1.* 、Spring Cloud Gateway 都是可以的。毕竟很少有公司达到Netflix 日几千亿的访问量。 Zuul 2.* 目前使用的比较少,遇到问题文档比较少,并且Spring Cloud 目前并没有集成,暂时还是先观望吧。