1. 微服务为什么需要 API 网关?
1.1. 在微服务架构中,通常一个系统会被拆分为多个微服务,面对多个微服务客户端应该如何去调用呢?
如果根据每个微服务的地址发起调用,存在如下问题:
- 客户端多次请求不同的微服务,会增加客户端代码和配置的复杂性,维护成本比较高;
- 认证复杂,每个微服务可能存在不同的认证方式,客户端去调用,要去适配不同的认证;
- 存在跨域的请求,调用链有一定的相对复杂性(防火墙、浏览器不友好的协议);
- 难以重构,随着代码的迭代,可能需要重新划分微服务。
1.2. 为了解决以上问题,微服务引入了 API 网关的概念
API 网关为微服务架构的系统提供简单、有效且统一的 API 路由管理,作为系统的统一入口,提供内部服务的路由中转,给客户端提供统一的服务,可以实现一些和业务没有耦合的公共逻辑,主要功能包括:认证、鉴权、路由转发、安全策略、防刷、流量控制、监控日志等。
2. Spring Cloud Gateway 是什么?
官方文档:Spring Cloud Gateway :: Spring Cloud Gateway
Spring Cloud Gateway 是 Sprinig Cloud 官方推出的第二代网关框架,定位取代 Netflix Zuul。
Spring Cloud Gateway 旨在为微服务架构提供一种简单且有效的 API 路由的管理方式,并基于 Filter 的方式提供网关的基本功能,例如说安全认证、监控、限流等。
Spring Cloud Gateway 是有 WebFlux + Netty + Reactor 实现的响应式的 API 网关。它不能再传统的 Servlet 容器中工作,也不能构建成 war 包。