微服务治理-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 GatewayJava 生态
Envoy云原生(Service Mesh基础)

四、最佳实践

5.1 所有外部流量必须经过 Gateway

5.2 Gateway 只做“通用能力”

不要把业务逻辑写在 Gateway

5.3 Gateway 必须无状态

不能依赖本地变量

5.4 必须配合服务发现

Gateway 不写死 IP

5.5 必须支持熔断与降级

当后端服务不可用 返回 fallback response