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