服务网关的作用:
- 动态路由: 将请求路由转发给合适的服务
- 提供公共服务:认证、IP黑白名单、限流、日志
- 协议适配
- 隐藏内部请求
市面上常见的服务网关有netflix的zuul和spring-cloud自己开源的gateway,
下文的zuul是1.0版本
以下是两种服务网关的简单对比
对比项 | zuul 1.0 | gateway |
---|---|---|
实现 | 基于Servlet2.x构建,使用阻塞的API。 | 基于Spring 5、Project Reactor、Spring Boot 2,使用非阻塞式的API。 |
不适用场景 | 后端服务响应慢或者高并发场景下,因为线程数量是固定(有限)的,线程容易被耗尽,导致新请求被拒绝 | 中小流量的项目,使用zuul 1.0更合适 |
长连接 | 不支持 | 支持 |
限流 | 无 | 内置限流过滤器 |
两者都能与Sentinel(是阿里开源的一款高性能的限流框架)集成。