API网关概述:概念、作用与主流产品

说实话,做了这么多年后端,我越来越觉得API网关是个躲不开的东西。不管你是做微服务、单体拆解,还是搞前后端分离,只要系统一复杂,流量一上来,API网关就会自然出现在你的架构里。它不是锦上添花,而是刚需。这一章我们就来把它彻底聊透。

1.1 什么是API网关

说白了,API网关就是一个"守门员"。它站在客户端和服务端之间,是所有API流量的统一入口。你想想看,如果没有它,客户端要直接面对一堆微服务,地址散落、认证混乱、限流没法做……那画面太美我不敢看。

我个人习惯把API网关理解成一个"智能路由器"——它不止转发请求,还能在转发前后做一堆有用的事。比如你发一个HTTP请求到网关,网关会先检查你有没有权限,再看要不要限流,然后把这个请求路由到正确的后端服务,最后还能把响应格式统一一下再返回给你。

核心要点:API网关是一个位于客户端与后端服务之间的中间层,承担请求路由、协议转换、安全防护等职责。

我在项目中遇到过最典型的一个场景:老系统用的是XML over HTTP,新服务全改成JSON over gRPC。中间如果不用网关做协议转换,客户端就得同时维护两套调用方式,那维护成本直接翻倍。网关在这里就像个翻译官,帮两边省了大麻烦。

1.2 API网关的核心作用

API网关到底能干什么?我列了7个最常用的能力,也是你在选型时最该关注的。

能力 说明 典型场景
认证与授权 统一校验、OAuth2、JWT等 所有请求先在网关过一遍身份认证
流量控制 限流、熔断、降级 双11大促时按用户等级限流
请求路由 根据URL/Header转发到不同后端 /api/v1/ → 订单服务,/api/v2/ → 新订单服务
协议转换 HTTP ↔ gRPC、JSON ↔ XML 旧客户端用XML,新客户端用JSON
日志与监控 记录请求日志、采集Metrics 统一做调用链分析和告警
跨域管理 统一处理CORS策略 前后端分离下的跨域配置集中化
安全防护 SQL注入、XSS、CSRF等攻击拦截 在网关层做基础安全过滤

你可能会问,这些能力难道不能在每个服务里自己实现吗?当然可以。但你想想看,如果有20个微服务,每个服务都要写一遍JWT校验、限流逻辑、CORS配置……那不仅重复劳动,而且极易出现"这个服务忘了加限流"之类的隐患。网关把这些横切关注点统一收口,后端服务只专注业务逻辑就行了。

我的建议:刚开始上网关时,不要一口气把7个能力全打开。先搞定认证和路由,跑顺了再加限流和监控。步子大了容易扯着。

1.3 主流API网关产品

市面上API网关产品不少,我挑5个最有代表性的给你盘一盘。每个我都实际用过或深度调研过,踩过坑,也有偏爱。

产品 开源/商业 编程语言 核心特点 适合场景
Kong 开源 + 商业版 Lua / Go 插件生态丰富,性能强 微服务架构,需大量自定义插件
Nginx Plus / OpenResty 开源 + 商业版 C / Lua 稳定、高性能、配置灵活 已有Nginx技术栈,需轻量网关
AWS API Gateway 商业 托管服务 无缝集成AWS生态,Serverless友好 全栈AWS用户
Apigee (Google) 商业 托管服务 API管理、分析、开发者门户 企业级API管理平台
Traefik 开源 Go 云原生,自动发现服务 Kubernetes环境,容器化部署

拿我自己来说,我最常用的组合是 Kong + 自定义Lua插件。之前在做一个金融项目时,需要在网关层做字段级别的加密,Kong的插件机制让我们能在不修改后端代码的情况下把加密逻辑插进去,那感觉确实很爽。

曾经踩过的坑:我在一个项目里选了商业版API网关,结果发现它的自定义脚本能力非常有限,最后不得不又套了一层Nginx来做协议转换。选型时一定要先搞清楚你在网关层到底要做什么,不要被花哨的管理界面迷惑了。

1.4 API网关知识体系

为了帮你快速建立全局视图,我把这一章的核心内容整理成了一张知识体系图。你可以把它当作后续学习的导航地图。

API网关知识体系 API网关 核心概念 反向代理 路由转发 请求过滤 协议转换 核心作用 认证与授权 流量控制 日志与监控 跨域管理 安全防护 ← 上一章 📖 返回目录 下一章 →