一、网关基础概念
说到网关,我猜很多人第一反应是「路由器」或者「Nginx 反代」。其实没那么简单。
网关,说白了就是系统的「总入口」。所有外部请求先进来,由它判断该去哪、能不能去、去了之后怎么回。我在做微服务改造那几年,见过太多团队把网关当成一个简单的转发工具,结果线上出了事故才回头补课。
嗯,这一节我们先打好基础。把网关是什么、干什么、放在哪,彻底讲清楚。
1.1 什么是网关
网关(Gateway)是位于客户端与后端服务之间的中间层。它屏蔽了后端复杂的服务拓扑,对外暴露一个统一的接入点。
你可以把它想象成公司的前台:
- 访客(客户端)不需要知道每个部门在哪
- 前台根据访客需求,引导到对应部门
- 如果部门搬迁,前台知道新位置,访客不用改
网关也是这个逻辑。客户端只认网关的地址,后端怎么拆分、怎么部署、怎么扩缩容,客户端一概不知。
核心要点:网关是系统对外的唯一入口,也是内部服务的第一道防线。
1.2 网关的核心功能
网关不是花架子,它承担了三个关键职责。我按重要性排序来说。
1.2.1 路由转发
这是网关最基础的能力。请求来了,网关根据路径、域名、Header 等信息,把请求转发到对应的后端服务。
举个例子:
# 请求路径与后端服务的映射关系
/api/user/* → user-service:8080
/api/order/* → order-service:8080
/api/pay/* → pay-service:8080
我曾经遇到过一个坑:某团队把路由规则写成了精确匹配,结果线上有个接口路径多了个斜杠,直接 404。从那以后,我要求所有路由配置必须做路径归一化处理。
避坑指南:路由配置建议使用前缀匹配 + 正则校验,不要用精确匹配。否则客户端稍微改个路径格式,你就得改网关配置。
1.2.2 协议转换
微服务架构里,前端可能用 HTTP/1.1,内部服务之间用 gRPC,老系统可能暴露的是 Dubbo 协议。网关需要把这些协议「翻译」成后端能理解的语言。
常见的协议转换场景:
| 客户端协议 | 后端协议 | 网关处理方式 |
|---|---|---|
| HTTP/1.1 | HTTP/1.1 | 透传或改写 Header |
| HTTP/2 | gRPC | 协议转换 + 序列化适配 |
| WebSocket | TCP | 长连接代理 |
| MQTT | HTTP | 协议桥接 |
我个人习惯在网关层统一做协议转换,而不是让每个业务服务自己处理。原因很简单:改一处比改十处容易得多。
1.2.3 安全防护
网关是系统的第一道门,安全策略必须在这里落地。常见的防护手段包括:
- 身份认证:校验 Token、API Key、JWT
- 访问控制:IP 白名单、路径权限、限流
- 防攻击:SQL 注入过滤、XSS 防护、请求体大小限制
- 审计日志:记录所有请求的来源、目标、结果
注意:不要把安全策略全部堆在网关层。网关负责「拦截」,业务服务负责「校验」。两层配合,才能做到纵深防御。
1.3 网关在微服务架构中的位置
很多初学者会问:网关到底放在哪?
我画了一张图,帮你直观理解网关在整个架构中的位置。
从这张图你能看到:
- 客户端只跟网关打交道,不直接访问后端服务
- 网关背后是多个独立的微服务,各自负责不同业务
- 网关从注册中心获取服务列表,实现动态路由
我记得有一次线上做服务扩容,新节点刚注册到 Nacos,网关自动就把流量分发过去了。整个过程零停机、零配置变更。这就是网关 + 注册中心配合的魅力。
1.4 网关 vs 负载均衡 vs 反向代理
很多人分不清这三者的区别。我直接列个表,一目了然。
| 组件 | 核心职责 | 工作层级 | 典型产品 |
|---|---|---|---|
| 负载均衡 | 流量分发、健康检查 | L4 / L7 | Nginx、LVS、HAProxy |
| 反向代理 | 请求转发、缓存、SSL 卸载 | L7 | Nginx、Apache |
| API 网关 | 路由 + 协议转换 + 安全 + 限流 + 监控 | L7 | Kong、APISIX、Spring Cloud Gateway |
简单来说:负载均衡管「流量怎么分」,反向代理管「请求怎么转」,网关管「整个请求生命周期」。网关的功能更全面,但复杂度也更高。
选型建议:如果你的系统只有几个服务,用 Nginx 做反向代理就够了。如果服务超过 10 个,或者需要统一管理认证、限流、日志,那就得上网关。
1.5 本章小结
这一节我们聊了三个核心问题:
- 网关是什么——系统的统一入口
- 网关干什么——路由、协议转换、安全防护
- 网关放哪——客户端与服务之间,连接注册中心