聊聊网关服务
聊聊网关服务
在 Spring Cloud 中,能够使用的网关服务,主要是两个,如下:
- spring-cloud-netflix-zuul ,基于 Zuul1 实现。
Netflix 最新开源的网关服务是 Zuul2 ,基于响应式的网关服务。
- spring-cloud-gateway ,基于 Spring Webflux 实现。
艿艿:比较大的可能性,是未来 Spring Cloud 网关的主流选择。考虑到目前资料的情况,建议使用 Zuul1 可能是更稳妥的选择,因为 Zuul1 已经能满足绝大数性能要求,实在不行也可以集群。
为什么要网关服务?
使用网关服务,我们实现统一的功能:
- 动态路由
- 灰度发布
- 健康检查
- 限流
- 熔断
- 认证: 如数支持 HMAC, JWT, Basic, OAuth 2.0 等常用协议
- 鉴权: 权限控制,IP 黑白名单,同样是 OpenResty 的特性
- 可用性
- 高性能
详细的,可以看看 《为什么微服务需要 API 网关?》 。
Zuul
Zuul
- 作用:API 网关,路由,负载均衡等多种作用。
- 简介:类似 Nginx ,反向代理的功能,不过 Netflix 自己增加了一些配合其他组件的特性。
- 在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个 API网关根据请求的 url ,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务端。
Zuul 原理,整体如下图:
关于 Zuul 的源码解析,可以看看艿艿整理的 《Zuul 源码解析系列》 。
Spring Cloud Gateway
关于 Spring Cloud Gateway 的源码解析,可以看看艿艿写的 《Spring Cloud Gateway 源码解析系列》 。
本文由作者按照 CC BY 4.0 进行授权

