网关介绍
1.1 问题背景
在微服务架构中,我们常借助 Eureka 或 Nacos 解决服务注册与发现问题,使用 Spring Cloud LoadBalancer 处理负载均衡,通过 OpenFeign 实现远程调用。然而,如果所有微服务的接口都直接对外暴露,会带来安全隐患。通常服务端接口需要权限校验,但在拆分后的多个应用中重复实现这套逻辑,不仅增加了开发负担,修改时也需要同步更新多处代码。
针对上述问题,引入 API 网关是业界通用的解决方案。
比如企业管理场景:外部人员办理业务需先核实身份。单体架构下由单一员工处理;微服务架构下各部门均需核验,效率低下且流程冗余。改进方案是设立前台(网关),统一进行身份校验,通过后其他部门直接信任办理。
1.2 什么是 API 网关
API 网关作为后端服务的唯一入口,其设计模式类似于门面模式(Facade)。它充当整个微服务架构的总调度中心,所有外部客户端访问均需经过它进行过滤和转发。

核心功能包括:
- 权限控制:作为入口拦截非法请求。
- 动态路由:根据规则将请求转发至对应微服务。
- 负载均衡:当目标服务有多个实例时分发流量。
- 限流:防止流量过高压垮下游服务。
1.3 常见网关实现
业界成熟的网关方案较多,如 Nginx、Kong、Zuul 及 Spring Cloud Gateway。
Zuul 曾是 Spring Cloud Netflix 的核心组件,但 Netflix 于 2018 年宣布部分组件进入维护状态,不再开发新功能。
Spring Cloud Gateway 是 Spring Cloud 全新推出的网关项目,基于 Spring + SpringBoot 技术栈,旨在替换 Zuul。官方测试显示,其 RPS(每秒请求数)约为 Zuul 的 1.6 倍,性能更优。
二、Spring Cloud Gateway 实战
2.1 快速上手
2.1.1 创建网关项目
新建一个标准的 Spring Boot 项目。
2.1.2 引入网关依赖
<!-- 网关核心依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- Nacos 服务发现依赖 -->
<dependency>
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-loadbalancer



