什么是API网关?
你有没有想过,一个大型APP背后可能有几百个微服务在协作?
用户登录、查订单、查库存、算价格、支付……每个功能都是一个独立的服务。如果让客户端直接找每个服务,会发生什么?
太乱了。就像去商场买东西,要跑到每个店铺门口问路,效率极低。
API网关就是那个"前台接待"。所有请求先到它那里,它负责指引、中转、甚至拦截。
它有什么用?
1. 统一入口
不用记住几十个服务的地址,所有请求都走同一个门。
用户 → API网关 → 用户服务 / 订单服务 / 支付服务 ...
2. 权限检查
网关可以在入口处验证身份,不用每个服务都写一遍鉴权逻辑。
3. 限流保护
高峰期流量太大?网关可以限制每个用户的请求频率,保护后端服务不被打爆。
4. 协议转换
前端发HTTPS请求,后端用gRPC通信,网关来做翻译。
5. 日志监控
所有请求经过网关,方便统一记录、统计、排查问题。
常见的API网关
- Kong:开源,插件丰富,社区活跃
- Nginx + Lua:性能好,适合简单场景
- Envoy:云原生时代的新宠,服务网格标配
- APISIX:国产开源,支持动态配置
- AWS API Gateway:AWS生态专用
打个比方
把微服务架构想象成一家快递公司:
- 每个仓库(服务)只负责自己的事:有的存包裹,有的分拣,有的运输
- API网关就是"前台收件窗口"
- 你交包裹,它登记、定价、告诉你运到哪里
- 它拦住了恶意包裹(权限检查)
- 它控制每天的收件量(限流)
- 它给你一张统一单据(响应格式统一)
总结
API网关不是必须,但服务一多就离不开。它让客户端少操心,让后端服务更专注。
下次听到"接入API网关",就知道:这是在给微服务系统找个"交通指挥中心"。