1.zuul
zuul是Netflix的,早期在微服务中使用较广泛,是基于servlet实现的,阻塞式的api,不支持长连接。只能同步,不支持异步。不依赖spring-webflux,可以扩展至其他微服务框架。
内部没有实现限流、负载均衡,其负载均衡的实现是采用 Ribbon + Eureka 来实现本地负载均衡。
2.Gateway
gateway微服务网关,事项微服务的统一路由,统一鉴权,跨域,限流等功能。是springcloud自己研制的网关,是基于Spring5构建,,能够实现响应式非阻塞式的Api,支持长连接。
支持异步。功能更强大,内部实现了限流、负载均衡等,扩展性也更强。Spring Cloud Gateway明确的区分了 Router 和 Filter,并且一个很大的特点是内置了非常多的开箱即用功能,并且都可以通过 SpringBoot 配置或者手工编码链式调用来使用。依赖于spring-webflux,仅适合于Spring Cloud套件。
3.Nginx
C语言编写,采用服务器实现负载均衡,高性能的HTTP和反向代理web服务器,处理高并发能力是十分强大,最高能支持5w个并发连接数。
Nginx适合于服务器端负载均衡,Zuul和gateway 是本地负载均衡,适合微服务中实现网关。Spring Cloud Gateway 天然适合Spring Cloud 生态
5.Gateway以及Zuul 和 Nginx 的区别
Gateway是微服务网关,是前端工程到后台服务之间的一个对内网关
Nginx 是用户到前端工程的网关,对外网关
SpringGateway用于统一鉴权,适合微服务中实现网关。
Nginx用于反向代理,适合于服务器端负载均衡。