ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、什么是API网关 在开始讲解Spring Cloud GateWay之前呢,有必要说明一下什么是API网关。网关这个词,最早是出现在网络设备中,比如在彼此隔离的两个局域网中间的起到路由功能、隔离功能、安全验证功能的网络设备,通常被称为“网关”。 在软件开发方面,网关通常是用来隔离用户端和服务端的软件应用,通常被称为API网关。 ![](https://img.kancloud.cn/50/36/5036cc9d32fe08099f881b23c4f20ae0_996x590.png) 所以使用API的好处是: * 面向前端开发人员更加友好,前端开发人员面向的入口减少,便于维护 * 服务访问的认证鉴权更加方便,可以放在API网关统一去做。避免分散造成的开发及维护成本。 * 访问日志、限流等公共服务也可以在网关上集中完成。避免分散造成的开发及维护成本。 说了API网关的这么多好处,那么有没有坏处呢?也是有的,而且很重要。 * 当你使用了API网关之后,所有的请求都要多一次转发,造成一定程度上的响应时长的延长 * 当你使用了API网关之后,意味着网关作为流量入口需要承担比微服务更多的流量负载。所以网关本身的架构性能及稳定性非常重要。 虽然我们可以在网关的前面再去加一层nginx或者haproxy等负载均衡器,但是仍旧很难改变网关在一定程度上的流量集中的问题。 ![](https://img.kancloud.cn/cb/4b/cb4b380015a2274deaf19fba40449344_525x633.png) 所以,笔者在很多场合下呼吁不要滥用微服务网关。你要权衡一下你当前的架构是否真的需要一个网关。衡量性能、稳定性以及维护成本之间关系,去决定要不要使用服务网关。 ## 二、聊一聊Zuul 正如笔者所说网关本身的架构性能及稳定性非常重要。然而性能就是Zuul的短板,因为它是基于servlet的阻塞IO模型开发的(下一节我会专门介绍Zuul和Spring Cloud GateWay IO模型的差异)。 * Zuul 1.0在netflix官方已经进入了维护阶段,netflix对Spring Cloud社区的支持也已经基本属于“88了您哎”的状态 * 虽然Netflix很早就宣称了要对zuul进行升级改造,也就是Zuul 2.0,但是目前与Spring Cloud的整合也处于难产状态 * 基于以上的原因,Spring 社区自己开发了Spring Cloud gateWay。采用了spring 官方的响应式非阻塞框架webflux。官网测试结果性能是Zuul的1.6倍。 综上所述:**笔者觉得目前Zuul已经没有任何学习的必要了。**