微服务服务网关是大型架构的必备技能,也是微服务的核心,下面我重点详解微服务服务网关@mikechen
微服务服务网关
微服务服务网关,是一种位于客户端和后端微服务之间的独立服务。
它充当着所有外部请求的统一入口点,负责接收来自客户端的请求,并将这些请求路由到相应的后端微服务上。

简单来说,网关就是微服务架构的“入口”,所有的外部流量都必须经过它,然后由它智能地分发到各个内部服务。
同时,网关还可以在请求到达微服务之前或响应返回客户端之后,执行一系列横切关注点(Cross-cutting Concerns)。
比如:认证、授权、限流、日志记录…等,都可以集成到微服务网关来解决。
微服务服务网关功能
服务网关的功能非常丰富,涵盖了从流量管理到安全防护的多个层面。
如下图所示:

动态路由
根据预定义的规则,将请求转发到不同的后端服务实例。
比如:按照路径匹配、主机名、HTTP 方法、请求头、查询参数…等,请求分发。
spring:
cloud:
gateway:
routes:
- id: user_service
uri: lb://user-service
predicates:
- Path=/user/**
统一认证与授权
在请求到达后端服务前,统一对用户进行身份验证(如OAuth2, JWT校验)。
@Component
public class AuthFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
String token = exchange.getRequest().getHeaders().getFirst("Authorization");
if (token == null || !validateToken(token)) {
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
return exchange.getResponse().setComplete();
}
return chain.filter(exchange);
}
}
执行权限校验,确保用户有权,访问请求的资源。
限流
限制客户端在一定时间内的请求次数,防止恶意攻击或流量突增导致系统过载。
spring:
cloud:
gateway:
routes:
- id: order_service
uri: lb://order-service
predicates:
- Path=/order/**
filters:
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 1000
redis-rate-limiter.burstCapacity: 2000
防止服务过载,支持基于令牌桶等算法的分布式限流,以及熔断降级机制。
微服务服务网关原理
服务网关的核心实现逻辑,一般包括以下几个步骤:

1. 请求接收与解析
客户端发起请求,网关作为第一个接收者。
网关解析请求的路径、方法、Header、参数等。
2. 路由匹配与服务发现
通过静态配置或注册中心(如 Nacos、Eureka)获取目标服务地址。
根据匹配规则(如 URL、版本号、Header)确定下游服务。
3. 前置处理(前置过滤器)
执行身份验证、日志打印、限流策略、安全检查等。
4. 请求转发
使用异步、非阻塞机制(如 Netty、Reactor)将请求转发到目标服务。
5. 后置处理(后置过滤器)
处理响应结果,添加统一响应头、包装返回体、记录日志。
6. 响应返回
将结果异步返回客户端,保证低延迟与高吞吐。
微服务网关选型
微服务网关选型,如下图所示:
| 网关 | 核心语言 | 阻塞模型 | 可扩展性 | 性能 | Spring 集成度 | 云原生适配 |
|---|---|---|---|---|---|---|
| Spring Cloud Gateway | Java + Reactor | 非阻塞 | ✅ 强 | 高 | ✅ 深度融合 | ✅ |
| Zuul 1.x | Java(Servlet) | 阻塞 | 中 | 低 | ✅ | ❌ |
| Zuul 2 | Java + Netty | 非阻塞 | 强 | 高 | ❌ | ❌ |
| Kong | Lua + Nginx | 非阻塞 | 插件化 | 高 | ❌ | ✅ |
| Nginx | C | 非阻塞 | 弱(需改配置或脚本) | 极高 | ❌ | ✅ |
| Traefik | Go | 非阻塞 | 插件化 | 高 | ❌ | ✅ K8s友好 |
| Envoy Gateway / Istio Gateway | C++ | 非阻塞 | 云原生优先 | 高 | ❌ | ✅ Service Mesh |