跳到主要内容

什么是网关(Gateway)

5 分钟阅读

从「多入口」到「统一入口 + 流量调度中心」

要理解网关,先看它解决什么问题:微服务拆多了,客户端要面对一堆服务地址、一堆认证和限流逻辑,维护和安全都难网关就是放在最前面的统一入口和调度层——所有请求先到网关,再由网关转发到具体服务。下面按「架构位置 → 核心能力 → 为什么需要 → 常见实现 → 总结」用总分总的方式讲清。


一、网关在系统架构中的位置

先说一句:网关 = 内网与外网的桥梁

在更广义的理解里,网关本身就是内网和外网之间的桥梁:内网设备通过网关才能访问外网,外网要访问内网或内网要对外暴露服务,也经过网关。网关可以同时做两件事:

  • 让内网访问外网:内网主机把「默认网关」设为网关设备(如家庭里的路由器),所有访问互联网的流量先发到网关,再由网关转发出去。
  • 对外网流量做过滤、拦截:网关可以对进出的流量做防火墙策略——放行、限速、拦截恶意 IP、过滤敏感请求等,保护内网安全。

家庭网络就是典型例子:家里多台设备在内网(如 192.168.1.x),路由器通常就是网关(常见管理地址 192.168.1.1)。你上网时,流量先到路由器,再由它转发到运营商、再进互联网;路由器也可以做家长控制、访问限制等,本质上就是「流量过滤、拦截」。下文说的 API 网关,是在微服务/系统架构里的一种网关,负责「客户端(外)与后端服务(内)」之间的入口与调度,和「内网通过网关访外网、网关做防火墙」是同一类「内外桥梁」思路在不同场景的体现。


系统架构中的网关:单体 vs 微服务

单体时代:客户端直接访问一台服务器,路径简单:Browser → Server → Database。

微服务时代:系统拆成用户服务、订单服务、支付服务、商品服务等。若客户端直连每个服务,会变成:

  • Browser → 用户服务
  • Browser → 订单服务
  • Browser → 支付服务

带来的问题:

问题说明
服务地址暴露所有服务域名/端口对前端或外部可见,难以收敛与变更
客户端臃肿要配很多 API 地址、不同环境的差异全在客户端
认证重复每个服务都要做 Token/JWT 校验,逻辑重复、易不一致
难以统一管理限流、日志、监控分散,没有统一管控点

于是在客户端与后端服务之间加一层网关(Gateway)

BrowserAPI Gateway → 用户服务 / 订单服务 / 支付服务 / 商品服务

客户端只认一个入口(如 https://api.example.com),由网关按规则把请求转发到对应服务。可以类比:网关 = 城市大门 + 安检 + 交通调度,所有「进城」的请求都先经过这里。


二、网关的核心能力

网关不只是「转发」,它通常承担系统的基础设施能力,可理解为「系统入口 + 请求调度中心」。

1. 统一入口

所有请求先进网关,再按路径等规则分发,例如:

  • /api/user/* → 用户服务
  • /api/order/* → 订单服务
  • /api/pay/* → 支付服务

好处:客户端只记一个域名;服务地址不暴露;结构清晰。

2. 路由转发

路径、域名、Header 等规则把请求转到不同服务,类似快递分拣:包裹先到分拣中心,再按目的地分发。

3. 身份认证与权限控制

在大系统里,认证往往收口到网关:Token 校验、JWT 验证、OAuth 等。请求先经网关验签,合法则转发,非法则直接 401,各业务服务不必重复写鉴权

4. 限流与防护

为防止被恶意或突发流量打满,网关做限流(如每秒最多 1000 请求),常用令牌桶、漏桶等算法,应对爬虫、DDoS、流量尖刺。

5. 日志与监控

作为全流量入口,网关适合做统一日志:谁访问、什么路径、耗时、是否失败,用于性能监控、排障和用户行为分析。

6. 协议转换

客户端与后端协议不一致时(如前端 HTTP/REST,后端 gRPC),可在网关做协议转换,对前端透明。

7. 灰度发布与流量分配

发布新版本时,网关可按比例分配流量(如 10% 走新版本、90% 走旧版本),实现灰度发布(Canary),降低上线风险。


三、为什么微服务一定需要网关

服务数量到几十、上百时,若没有网关:

  • 客户端要维护大量服务地址,复杂度高
  • 认证、限流、监控分散,安全与可观测性差
  • 任何服务地址或路由变更都要推给客户端,维护成本大

有网关后:Client → Gateway → Services,客户端只访问一个入口(如 api.example.com),复杂逻辑集中在网关。因此几乎所有大型互联网系统都会在微服务前加一层网关。


四、常见的网关实现

1. Nginx

Nginx 是很多系统的第一层入口,做反向代理、负载均衡、限流、HTTPS。不少公司直接用 Nginx 当网关,或 Nginx 前置、后面再接专业 API 网关。

2. 专业 API 网关

在微服务架构中常用专用 API 网关,例如:

  • KongAPISIX:开源,插件丰富,动态路由、认证、限流、监控
  • Spring Cloud Gateway:与 Java/Spring 生态集成
  • AWS API Gateway:云上托管,与 AWS 服务打通

这类产品通常提供插件体系、动态路由、统一认证、限流与监控能力。

3. BFF(Backend For Frontend)

BFF 是一种「为前端定制的网关」:不同客户端(Web、App)用不同的 BFF 聚合接口、做数据裁剪,减少前端请求次数、简化前端逻辑。架构上可看作:Browser → Web BFF / Mobile BFF → 各微服务。


五、总结

说白了就四条:

  1. 网关是什么:系统的统一入口 + 请求调度中心,所有请求先经网关再进具体服务;可类比「城市大门 + 安检 + 交通调度」。
  2. 核心能力统一入口路由转发认证鉴权限流防护日志监控协议转换灰度/流量分配,把跨服务的公共能力收口到一层。
  3. 为什么需要:微服务多了以后,没有网关则地址暴露、认证重复、难以限流与监控;有网关则客户端只认一个入口,复杂度与风险集中在网关,便于运维与安全。
  4. 常见实现Nginx 做反向代理与负载均衡;Kong/APISIX/Spring Cloud Gateway 等做专业 API 网关;BFF 为前端做聚合与裁剪。整体链路可简化为:客户端 → 网关 → 微服务 → 数据库,网关已成为微服务架构里不可缺少的一层基础设施
Loading Comments...