Spring Cloud Gateway 具有如下特性:
基于Spring Framework ,Project Reactor 和 Spring Boot 2.0 进行构建;
可以对路由指定 Predicate (断言) 和 Filter (过滤器);
集成Hystrix的断路器功能;
集成 Sring Cloud 服务发现功能;
易于编写的 Predicate(断言) 和 Filter(过滤器);
请求限流功能;
支持路径重写
Spring Cloud Gateway 与 Zuul的区别
在Spring Cloud Finchley 正式版之前,SpringCloud 推荐的网关是 Netfilx 提供的 Zuul:
1.Zuul 1.x ,是一个基于阻塞I/O的 API Gateway
2.Zuul 1.x 基于Servlet 2.5使用阻塞架构,它不支持任何长连接(如WebSocket)Zuul 的设计模式和Nginx较像,每次I/O操作都是从工作线程中选择一个执行,请求线程被阻塞到工作线程完成,但是差别是Nginx 用C++实现的,Zuul 用 Java 实现的,而JVM 本身会有第一次加载较慢的情况,使得Zuul的性能相对较差。
-
Zuul 2.x 理想更先进,想基于Netty非阻塞和支持长连接,但SpringCloud目前还没有整合。Zuul 2.x的性能较于Zuul 1.x 有很大提升,在性能层面,根据官方提供的基准测试,Springcloud Gateway 的 RPS(每秒请求数) 是 Zuul 的 1.6倍。
-
Springcloud Gateway 建立在 Spring Framework 5, springboot 2 和Project Reactor 之上,使用非阻塞API。
-
Springcloud Gateway 还支持 WebSocket,并且与Spring紧密继承拥有更好的开发体验