一、API网关概述:什么是API网关、为什么需要API网关、网关在云原生架构中的位置

1.1 什么是API网关?

API网关,说白了就是一个系统的「总入口」。

你想想看,一个微服务架构里,可能有几十上百个服务。用户要下单,得先调用户服务、再调订单服务、再调库存服务……难道让客户端一个个去调?那太可怕了。

API网关就是站在所有服务前面的那个「守门人」。它统一接收所有外部请求,然后根据路由规则,把请求转发到后端的某个服务上。

我个人习惯把API网关比作公司的前台。你进公司,前台会问:你找谁?什么事?有没有预约?确认没问题了,才带你进去。网关干的也是这些事——身份校验、路由分发、限流熔断。

核心定义:API网关是位于客户端与后端服务之间的中间层,负责请求路由、协议转换、安全认证、流量控制等通用功能。

我记得刚接触微服务那会儿,团队里有人问:这不就是个反向代理吗?嗯,从功能上看确实有重叠。但API网关比反向代理多了很多「智能」的东西——比如动态路由、灰度发布、请求聚合、协议转换。这些是Nginx裸配搞不定的。

1.2 为什么需要API网关?

没有网关,会怎样?我经历过,所以特别有感触。

那时候我们团队做的是一个电商平台,大概二十几个微服务。客户端直接调后端服务,每个服务都要自己处理鉴权、限流、日志。结果呢?

  • 每个服务都写了一遍鉴权逻辑,代码重复严重
  • 某个服务被刷爆了,其他服务也跟着遭殃
  • 想做个灰度发布,得改每个服务的代码
  • 前端同学抱怨:你们API的地址怎么老变?

这些问题,API网关都能解决。具体来说,网关带来的好处有:

  1. 统一入口——客户端只需要知道网关地址,不用关心后端有多少服务
  2. 横切关注点集中处理——鉴权、限流、日志、监控,这些事在网关层统一搞定
  3. 安全防护——网关可以挡住恶意请求,比如SQL注入、DDoS攻击
  4. 流量管理——蓝绿部署、灰度发布、熔断降级,网关是天然的流量控制点
  5. 协议转换——客户端用HTTP,后端用gRPC?网关帮你转

我的经验:曾经有个项目,上线前没上网关。结果上线当天,某个服务被爬虫刷爆了,整个系统都挂了。后来加了网关,限流一配,世界清净了。嗯,这学费交得值。

1.3 网关在云原生架构中的位置

云原生架构里,网关的位置非常关键。它不是随便放在哪儿的,而是有明确的层级关系。

一般来说,云原生架构的流量入口分为两层:

层级 组件 职责
第一层 负载均衡器(如Nginx、ELB) 四层/七层负载均衡、TLS终止
第二层 API网关(如Kong、APISIX) 路由、鉴权、限流、协议转换
第三层 服务网格Sidecar(如Envoy) 服务间通信、重试、超时

你可能会问:为什么要有这么多层?

其实每一层解决的是不同的问题。负载均衡器管的是「谁来访问」,API网关管的是「访问哪个服务」,服务网格管的是「服务之间怎么通信」。各司其职,互不干扰。

在Kubernetes环境里,API网关通常以Ingress Controller的形式存在。但传统的Ingress功能太弱了,所以现在大家更倾向于用Gateway API标准,或者直接用APISIX、Kong这类高性能网关。

注意:不要把网关和服务网格混为一谈。网关是南北向流量(外部→内部),服务网格是东西向流量(服务→服务)。我曾经见过有人把Envoy当网关用,结果配置复杂到崩溃。工具要用对地方。

1.4 网关的演进:从单体到云原生

网关不是一天长成这样的。我大概经历了三个阶段:

  • 单体时代:没有网关,或者用Apache/Nginx做简单的反向代理。那时候服务少,一个单体应用搞定所有事。
  • 微服务早期:开始用Zuul、Spring Cloud Gateway这类Java网关。功能丰富,但性能一般,而且跟Spring生态绑定太紧。
  • 云原生时代:Kong、APISIX、Envoy这类高性能网关崛起。基于Nginx/OpenResty或C++,性能强,支持热加载,天然适配K8s。

我个人现在最常用的是APISIX。为什么?因为它支持动态路由、插件热加载、性能也够猛。而且社区活跃,遇到问题基本能找到答案。

一句话总结:API网关是云原生架构的「交通枢纽」,没有它,微服务就是一盘散沙。

1.5 避坑指南

最后分享几个我踩过的坑:

  • 不要把业务逻辑写在网关里。网关只做通用能力,业务逻辑应该下沉到服务层。我曾经见过有人在网关里写订单校验逻辑,结果一升级网关,订单全挂了。
  • 注意网关的单点故障。网关是入口,挂了整个系统就瘫了。一定要做高可用部署,至少两个副本。
  • 不要过度依赖网关的缓存。网关缓存确实能提升性能,但缓存失效时,后端服务可能被瞬间打爆。建议配合限流一起用。

嗯,这一章就聊到这儿。下一章我们深入讲讲API网关的核心功能——路由与转发,到时候我会拿实际配置来演示。


公众号:蓝海资料掘金营,微信deep3321