API 网关概述:它到底是什么?

先说个我自己的经历。几年前我接手过一个微服务改造项目,拆了十几个服务,后端跑得欢,前端却炸了——每个接口地址不同、认证方式不一、日志散落在各处。那会刚接触 API 网关,装了个 Nginx 反向代理就以为搞定了,后来发现远远不够。说白了,API 网关不是单纯的流量入口,它是你微服务架构的“门面”兼“保安队长”。

定义:一个入口,万千功能

API 网关是一个位于客户端和后端服务之间的中间层。它接收所有外部请求,进行预处理,再转发给对应的后端服务。我习惯把它比作公司的前台:来访客人不需要知道每个部门在几楼、找谁签字,前台统一接待,核实身份、引导路线、记录来访信息。

核心职责:统一入口、请求路由、协议转换、安全防护、流量控制、日志审计。

主要功能:不止是路由

很多人以为 API 网关就是个高级路由器,其实它干的事多着呢。我列几项最常见的:

  • 请求路由:根据 URL、Header、参数将请求转发到对应服务。举个例子,/api/users/* 打到用户服务,/api/orders/* 打到订单服务。
  • 认证授权:统一校验 JWT、OAuth2 或 。我记得有个项目把认证逻辑分散在各个业务服务里,改一次认证方式要改 8 个服务,切到网关后只改一处,爽多了。
  • 限流熔断:防止某个突发流量把后端冲垮。你可以设置每分钟最多 1000 次请求,超了就返回 429。我曾经没加限流,结果营销活动秒杀把数据库搞挂了……血泪教训。
  • 协议转换:比如外部用 HTTP/1.1,内部服务用 gRPC,网关帮你转。不用每个服务自己搭两套协议。
  • 日志与监控:所有进出流量都过网关,日志自然集中了。做审计、排查问题很方便。
  • 响应聚合:把多个服务的返回拼成一个响应返回给客户端。移动端经常需要这种能力。

避坑:我曾经把所有业务逻辑都塞进网关,结果网关变成了大泥球。记住,网关只做横切关注点(安全、路由、监控),业务逻辑别往里放。

发展历程:从代理到生态

API 网关不是一天长成这样的。我大致分了三个阶段:

阶段 时间 代表产品 特点
第一阶段 2010 年左右 Nginx、HAProxy 反向代理 + 负载均衡,功能单一,配置靠静态文件
第二阶段 2015~2018 Kong、Zuul 1.x 可编程,插件化,提供认证限流等能力,但性能瓶颈逐渐暴露
第三阶段 2019 至今 APISIX、Kong 3.x、Envoy、Spring Cloud Gateway 云原生,高性能,支持 Service Mesh,动态配置,多协议

为什么会这样演进?说白了,业务复杂度在飙升。最初只要负载均衡就够了,后来微服务多了需要统一认证,再后来流量暴涨需要高性能、热更新、灰度发布、可观测性。你想想看,现在一个网关要处理万级 TPS,静态配置 reload 一次就得断流几秒,这在生产环境根本没法忍。

主流网关对比:选型不纠结

我参与过几个网关选型评审会,每次争论最多的就是性能 vs 功能 vs 社区活跃度。这里整理一张对比表,都是我实际踩过坑后的感受:

网关 语言 性能 动态配置 插件生态 适合场景
Kong OpenResty (Lua) 较高 支持(DB + Admin API) 丰富(官方 + 社区) 企业级,需大量现成插件
APISIX OpenResty (Lua) + Go 高 支持(etcd) 丰富,热加载 云原生,高并发,多协议
Envoy C++ 极高 支持(xDS) Lua Filter / WASM Service Mesh 数据面,七层透明代理
Spring Cloud Gateway Java (Reactor) 中等 支持(配置中心) Java 生态,WebFlux Spring 技术栈团队,非功能性要求不高
Nginx + Lua C + Lua 高 不支持原生(需配合 Lua 脚本) 手动开发 定制化强,但运维复杂

注意:性能数据跟硬件、配置、测试场景强相关。我见过有人在 4 核 8G 机器上测 Envoy 和 Kong,差距不大;但在 32 核机器压 TPS 到 5 万以上,Envoy 明显占优。选型时一定要用自己的业务场景做压测,别只看网上跑分。

本章知识体系总览

下面这张图可以帮你快速建立本章的知识结构。我自己做培训时也经常用这个框架讲,学员反馈比较直观。

API 网关概述 · 知识结构 API 网关 定义 统一入口·中间层 主要功能 路由·认证·限流 协议转换·日志 发展历程 代理 → 可编程 → 云原生 主流网关对比 Kong · APISIX · Envoy · Spring Cloud Gateway · Nginx+Lua 路由与负载均衡 安全认证 限流熔断 协议转换 日志监控 选型核心维度 性能要求 · 动态配置能力 · 插件生态 · 团队技术栈 · 运维成本

这张图把本章讲的四个核心块串起来了:定义、功能、发展历程、主流对比。为什么要画出来?说实话,我每次做技术方案,都喜欢先画一张结构图,不然脑袋里知识点是散的。你也试试用这种方式理解网关。

嗯,关于 API 网关的概述就聊到这儿。记住它的定位:统一入口、横切关注点、不要塞业务逻辑。后面章节我们会深入 DLP 策略路由,到时候你会看到网关在数据安全中的关键角色。