1.1 API Gateway 概述
1.1.1 什么是 API Gateway
API Gateway(API 网关)是微服务架构中位于客户端与后端服务集群之间的统一入口层。它负责接收所有外部请求,按照预定义的路由规则将请求分发到对应的微服务实例,并在这一过程中完成认证、限流、协议转换、日志记录等横切关注点。
从部署位置看,API Gateway 处于系统边界,是南北向流量(客户端到服务端)的第一道关卡;从职责看,它剥离了微服务中非业务功能的共性逻辑,使每个微服务可以专注于自身业务领域。
核心定义:API Gateway = 反向代理 + 路由分发 + 横切能力(认证、限流、熔断、日志、协议转换)。
1.1.2 在微服务中的核心作用
API Gateway 在微服务体系中承担着流量枢纽和安全屏障的双重角色,其核心作用可归纳为以下六个方面:
| 作用维度 | 具体职责 | 典型实现 |
|---|---|---|
| 路由分发 | 根据请求路径、域名、Header 等条件将请求转发到对应微服务 | 路径匹配 /user/** → 用户服务 |
| 认证授权 | 统一校验 JWT Token、OAuth2 凭证,拦截非法请求 | 网关层前置鉴权过滤器 |
| 流量控制 | 限制单个客户端或全局的请求速率,防止服务过载 | 令牌桶、漏桶算法 |
| 熔断降级 | 当后端服务异常时快速失败或返回降级响应,避免级联故障 | 断路器模式(Hystrix / Sentinel) |
| 协议转换 | 将外部 HTTP/HTTPS 请求转换为内部 RPC 或 gRPC 协议 | HTTP → Dubbo / gRPC 桥接 |
| 观测与治理 | 集中记录请求日志、调用链追踪、监控指标 | Prometheus + Grafana + 链路追踪 |
架构收益:引入 API Gateway 后,微服务团队可以独立迭代业务逻辑,无需关心认证、限流等基础设施;运维团队只需在网关层统一配置安全策略和流量规则,大幅降低治理成本。
1.1.3 与传统网关的区别
传统网关(如 Nginx、Apache HTTP Server)主要解决反向代理和负载均衡问题,而微服务场景下的 API Gateway 在能力维度上有了质的扩展。下表从多个关键维度进行对比:
| 对比维度 | 传统网关(Nginx / Apache) | 微服务 API Gateway |
|---|---|---|
| 核心定位 | 反向代理 + 静态资源服务 + 负载均衡 | 统一入口 + 路由分发 + 横切能力聚合 |
| 路由规则 | 基于静态配置文件(location 块) | 动态路由,支持服务发现、灰度发布、权重调整 |
| 认证鉴权 | 需借助第三方模块(如 lua-nginx-module) | 内置过滤器链,原生支持 JWT / OAuth2 / 自定义鉴权 |
| 限流熔断 | 需额外配置或开发,能力有限 | 内置限流、熔断、降级策略,与注册中心联动 |
| 协议支持 | HTTP / HTTPS / TCP 代理 | HTTP / gRPC / Dubbo / WebSocket 等多协议转换 |
| 扩展方式 | 模块加载(C 语言)或 Lua 脚本 | 插件化架构(Java Filter / Go Middleware / Lua Plugin) |
| 配置管理 | 静态文件 + reload 生效 | 动态配置中心(Nacos / etcd / Consul),热更新 |
| 可观测性 | 基础访问日志 + 简单状态页 | 全链路追踪 + 指标聚合 + 分布式日志 + 健康检查 |
选型提示:如果系统只有 2-3 个单体服务且无复杂治理需求,直接使用 Nginx 反向代理即可,引入 API Gateway 反而增加架构复杂度。API Gateway 的价值在微服务数量超过 5 个、需要统一认证限流和灰度发布时才会充分体现。
1.1.4 主流 API Gateway 产品概览
当前业界主流的 API Gateway 产品分为商业版和开源版两大阵营,下表列出代表性产品及其关键特性:
| 产品名称 | 类型 | 开发语言 | 核心特性 | 适用场景 |
|---|---|---|---|---|
| Kong | 开源 | Lua / OpenResty | 插件生态丰富、高性能、支持 DB-less 模式 | 云原生、Kubernetes 环境 |
| Spring Cloud Gateway | 开源 | Java (Reactor) | 与 Spring 生态无缝集成、响应式非阻塞 | Java / Spring Boot 技术栈 |
| APISIX | 开源 | Lua / Go | 动态路由、热更新、多语言插件支持 | 高性能、大规模微服务集群 |
| Traefik | 开源 | Go | 自动服务发现、自动 HTTPS、云原生友好 | Kubernetes / Docker 容器化部署 |
| Amazon API Gateway | 商业 | 托管服务 | 全托管、自动扩缩容、与 AWS 服务深度集成 | AWS 云原生应用 |
| 阿里云 API 网关 | 商业 | 托管服务 | 国内合规、高可用、与阿里云生态集成 | 阿里云部署的企业级应用 |