一、网关
在微服务架构下,如果所有服务接口都直连暴露,管理起来会非常混乱。像单体应用那样每个服务都写一套过滤器?不现实。通常的做法是在最外层加一个 API 网关。
1.1 API 网关是什么
API 网关(Gateway)本质上是一个服务,作为后端所有接口的统一入口。它有点像设计模式里的门面(Facade),外部客户端只需要跟网关打交道,由网关来转发、过滤和限流。

核心功能:
- 权限控制:统一校验用户身份,不合格的直接拦截
- 动态路由:根据请求路径、参数等把请求转发到对应的微服务
- 负载均衡:当目标服务有多个实例时,自动分摊流量
- 限流:流量尖峰时按预设阈值放行,保护后端服务
1.2 常见网关实现
主流的开源网关方案有 Nginx、Kong、Zuul、Spring Cloud Gateway 等,这里简单对比一下 Zuul 和 Gateway。
Zuul
Zuul 是 Netflix 开源的网关,曾是 Spring Cloud 生态的默认选择,但它基于 Servlet 同步阻塞模型,性能一般。Netflix 在 2018 年将其置为维护状态,不再开发新特性,所以 Spring 社区后来转向了 Spring Cloud Gateway。
Spring Cloud Gateway
Spring Cloud Gateway 是 Spring 官方推出的网关,基于 WebFlux 和 Reactor,全异步非阻塞,专为取代 Zuul 而设计。它提供路由、过滤等功能,能与 Spring Cloud 生态(服务注册、负载均衡)无缝整合。官方基准测试显示,其吞吐量是 Zuul 的 1.6 倍。
测试仓库: https://github.com/spencergibb/spring-cloud-gateway-bench
二、使用 Gateway
下面基于已有的 product-service 和 order-service 两个微服务,新建一个 gateway 项目来演示。
- 引入依赖
创建网关项目,pom.xml 中添加:

<dependencies>
<!-- 网关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-loadbalancer









