微服务治理-API网关
API Gateway 是微服务系统的统一入口层,负责请求路由、协议转换、安全控制、流量治理与聚合编排,是连接外部世界与内部微服务体系的核心枢纽。
一、介绍(Introduction)
1.1 为什么需要 API Gateway?
在没有网关之前:
问题 1:客户端需要知道所有服务地址
前端 / App 直接耦合后端服务拓扑。
问题 2:安全无法统一控制
每个服务都要: 鉴权 权限 限流 黑名单…
问题 3:跨服务调用暴露内部结构
问题 4:接口碎片化
一个业务页面可能需要多个服务,前端要请求 4~10 次 API。
1.2 API Gateway 的作用
Client
│
▼
API Gateway
│
├── User Service
├── Order Service
├── Payment Service
└── Inventory Service
网关成为: 唯一入口
1.3 API Gateway 解决什么问题?
1. 统一入口
如:所有请求:https://api.xxx.com/*
2. 路由转发
/api/user → user-service、 /api/order → order-service
3. 鉴权(Auth)
统一处理:
- JWT
- OAuth2
- Session
4. 限流(Rate Limit)
如 1秒 1000请求
5. 灰度发布(Canary Release)
10%流量 → v2版本
6.负载均衡
在网关层做:
- Round Robin
- Weight
- Least Connection
7. 协议转换
HTTP → gRPC
HTTP → MQ
二、原理
2.1 API Gateway 架构
Client
│
▼
API Gateway Layer
┌────────┬────────┬────────┐
▼ ▼ ▼ ▼
User Order Payment Inventory
Service Service Service Service
2.2 请求处理流程
一次请求流程:
Client Request
│
▼
API Gateway
│
├── 鉴权(Auth)
├── 限流(Rate Limit)
├── 路由(Routing)
├── 负载均衡(LB)
├── 日志记录
▼
Target Service
│
▼
Response
│
▼
Gateway 返回
2.3 Gateway 内部核心模块
1. 路由模块(Routing)
2. 鉴权模块(Auth Filter)
3. 限流模块(Rate Limiter)
4. 负载均衡模块
三、主流 API Gateway
| 网关 | 特点 |
|---|---|
| Nginx | 高性能基础网关 |
| Kong | 插件化 API 网关 |
| APISIX | 高性能 + 动态配置 |
| Spring Cloud Gateway | Java 生态 |
| Envoy | 云原生(Service Mesh基础) |
四、最佳实践
5.1 所有外部流量必须经过 Gateway
5.2 Gateway 只做“通用能力”
不要把业务逻辑写在 Gateway
5.3 Gateway 必须无状态
不能依赖本地变量
5.4 必须配合服务发现
Gateway 不写死 IP
5.5 必须支持熔断与降级
当后端服务不可用 返回 fallback response