系统拆成微服务之后,一个尴尬的问题浮出水面:每个服务都要自己处理认证鉴权、限流熔断、日志埋点、跨域、协议转换,同一套横切逻辑在几十个服务里重复写了几十遍。前端更崩溃:调一个页面要直连七八个服务地址。API 网关就是为这个而生的——所有流量从一道门进出,公共能力收敛在门上。
核心矛盾是:横切能力散落在每个服务里,改一次策略要全公司发版。 落地网关有三条主流路线:Nginx/OpenResty 自建、开源 API 网关、云厂商托管网关,掌控力和运维成本各不相同。
原理: 基于 Nginx 做反向代理,用 Lua 脚本(OpenResty)实现鉴权、限流、灰度等逻辑,配置和脚本全部自己维护。
优点:
缺点:
适用场景: 服务数量少、流量模型简单、团队里有 OpenResty 高手的场景。严格说它更像"反向代理+",不是完整意义的 API 网关。
原理: 部署成熟的开源网关(Kong、APISIX、Higress 这类),自带插件体系:认证、限流、熔断、日志、灰度开箱即用,通过管理 API 或控制台动态配置,天然对接服务发现。
优点:
缺点:
适用场景: 微服务架构成型、有专职平台运维团队的中大型技术组织。是当前私有化部署的主流选择。
原理: 直接使用云厂商的 API 网关服务(如腾讯云 API 网关),按调用量付费,路由、鉴权、限流、监控全托管,与云上的函数、容器、负载均衡打通。
优点:
缺点:
适用场景: 业务跑在单一云上、团队小、不想养基础设施的公司,以及 Serverless 架构的默认搭档。
场景特征 | 推荐方案 |
|---|---|
服务少、流量简单、有 OpenResty 高手 | Nginx/OpenResty 自建 |
微服务成型、有平台团队、要深度定制 | 开源 API 网关 |
单云部署、小团队、Serverless 架构 | 云厂商托管网关 |
常见的组合是分层:南北向流量(外部用户进出)用云托管网关,东西向流量(服务间调用)用开源网关或服务网格,各管一段。
第一件:先把公共能力清单列出来。 认证、限流、灰度、日志、监控,哪些收敛到网关、哪些留在服务里,边界要定清楚。什么都往网关塞,网关会变成新的巨石。
第二件:网关本身的高可用先于业务上线。 网关是所有流量的咽喉,它挂了等于全站挂。多实例、健康检查、降级预案,必须在承载业务流量之前就位。
第三件:路由和插件配置要代码化管理。 无论是开源网关的声明式配置还是云网关的导出文件,进版本库、走评审、可回滚。靠控制台手点的网关配置,出事故时连"谁改了什么"都查不到。
API 网关的选型,核心是看"你要为这道门投多少运维"。没平台团队就选托管,有平台能力就开源自建,流量简单就别折腾。网关的价值不在转发流量,在于让认证、限流、灰度这些能力只有一份实现——这份"只有一份"才是微服务架构能长期演进的前提。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。