网关有什么用?如何选择合适的网关?

#代码星辉·七月创作之星挑战赛#

大家好,我是IT孟德,You can call me Aman(阿瞒,阿弥陀佛的ē,Not阿门的ā),一个喜欢所有对象(热爱技术)的男人。我正在创作架构专栏,秉承ITer开源精神分享给志同道合(爱江山爱技术更爱美人)的朋友。专栏更新不求速度但求质量(曹大诗人传世作品必属精品,请脑补一下《短歌行》:对酒当歌,红颜几何?譬如媳妇,吾不嫌多...青青罗裙,一见动心,但为佳人,挂念至今...),用朴实无华、通俗易懂的图文将十六载开发和架构实战经验娓娓道来,让读者茅塞顿开、相见恨晚...如有吹牛,不吝赐教。关注wx公众号:IT孟德,一起修炼吧!

专栏文章推荐:

为什么要用分布式ID?雪花算法有哪些坑?

 架构实战:2万字真实案例全方位解析高并发系统性能优化之道

 架构师指南:像呵护感情一样构建无懈可击的系统稳定性防线

系统性能评估:如何定义并发数、响应时间和吞吐量

实战:混合云架构Nginx+Lua实现流量跨机房分发

架构图的魅力:如何用UML提升架构设计的质量

为什么要做架构设计?架构设计包含哪些内容?

架构师的职责是什么?程序员如何转型为架构师?

什么是架构?架构如何演进?

Mysql数据库连接池druid、hikaricp优化实战

1、前言


        2024年,上海浦东国际机场客流量以7678万+人次位居全国第一,其中出入境客流3180万+人次,接近北京首都机场、广州白云机场和深圳宝安机场三场之和。另外货邮吞吐量377.8万吨,在全球范围内仅次于香港国际机场。

排名

机场名称

旅客吞吐量(单位:万人次)

出入境客流(单位:万人次)

货邮吞吐量(单位:万吨)

1

上海浦东国际机场

7678.70

3180.59

377.83

2

广州白云国际机场

7636.48

1462.49

238.19

3

北京首都国际机场

6736.74

1485.62

144.33

4

深圳宝安国际机场

6147.73

518.10

188.15

5

成都天府国际机场

5490.58

562.11

38.49

6

北京大兴国际机场

4944.10

459.80

32.62

7

重庆江北国际机场

4867.70

190.00

46.95

8

杭州萧山国际机场

4805.39

470.00

73.49

9

上海虹桥国际机场

4794.41

321.06

42.77

10

昆明长水国际机场

4717.83

297.00

38.56

        浦东机场作为一座国际大都市的旅客集散地,连接着城市之间乃至全球交通网络(异构网络)。出港旅客在多语种播报和标识牌的指引下,无缝换乘地铁、公交、出租车、网约车等疏散至城市各个角落。机场,宛如现实世界接入全球经济与社会活动网络的重要网关,穿梭其间,每一位旅客都如同一个经过层层校验、被打包路由至目的地的数据。

  • 数据转发: 如同网关负责根据目标地址选择路径并转发数据,飞机降落带来了世界各地的旅客和货物,然后被高效地分流转送至四面八方。机场通过空管塔台进行航班流量整形与优先级控制(QoS),通过语音播报、标识牌等分流(路由)国内与国际旅客进出港。它承载着流量的聚合与分发,其吞吐能力直接影响着城市的运转效率和活力。

  • 协议转换: 网关处理不同网络协议之间的转换,机场则在不同交通方式之间实现了物理协议的转换。旅客通过陆路交通工具(汽车、火车、地铁)抵达机场,遵循航站楼内部的值机、安检、登机流程,最终被“封装”进飞机的“数据帧”,经由特定的“物理链路”(航线)传输出去。到达目的地机场后,反向进行“解包”和“协议转换”,接入当地交通系统。货物运输也是如此,包装标准、货运单据的处理类似于协议适配。

  • 安全控制: 网关是网络安全的第一道防线,机场同样承担着安全屏障的重要功能。旅客需要携带身份证、护照、签证、登机牌通过值机和安检,过滤各类风险,确保运输安全。边防和海关对入境人员进行资格审查和物品查验,确保符合国家安全的访问策略,保障社会秩序。

  • 插件机制:网关作为流量入口,为应对不同业务场景的差异化需求,支持更加灵活的插件机制。机场提供了休闲娱乐、商业零售、餐饮服务、通信服务、交通接驳等大量配套和增值服务,从单纯的交通连接器升级为适配多样场景的综合服务入口,从而更好满足乘客的需求和提升运转效率。如机场通过新增免税店、充电站、共享办公区等,适配跨境出行和商务旅客等新兴场景。

        在我们生活的城市中,不光是机场,火车站、汽车站、边防站、物流中心、生鲜批发市场都类似于大大小小的网关,承担着数据转发、协议转换和安全控制等功能。

2、网关的作用是什么?


        网关(Gateway)是一种实现异构网络(不同通信协议、数据格式或网络架构)数据转换与传输的硬件设备或软件服务。其核心价值在于打破网络异构性,通过流量调度、协议转换及安全控制,实现高效安全互联。作为系统的统一入口,将共性、非业务、跨服务功能从业务服务中剥离,交由网关集中处理,这是分布式系统应对复杂度治理的必然选择。这种分工让业务服务专注核心逻辑,提升开发与迭代效率;网关则聚焦共性治理,实现全局标准统一、系统简化与安全增强。简言之,网关以 “统一入口” 简化交互,屏蔽后端服务细节;以 “集中治理” 提升效率,实现共性功能全局管控;以 “隔离保护” 保障系统安全,在外部请求与内部服务间建立屏障。

        早期网关功能相对单一,主要承担协议转换、简单路由等基础核心任务。随着微服务架构的普及、云原生技术的成熟以及物联网应用的爆发,网关的形态正发生深刻变化。如今网关的分类也愈发多元,聚焦微服务间通信与治理的微服务网关、兼顾API全生命周期管理的API网关、适配物联网场景的边缘网关、侧重安全防护的还有安全网关......尽管称谓五花八门,但功能边界已逐渐模糊。比如云原生网关整合了流量调度、服务治理、安全防护等能力,适配K8s和降低资源开销与运维复杂度;边缘网关则融合协议转换、边缘计算、本地缓存能力,平衡物联网连接规模、处理效率和安全。以下是常见的网关类型:

网关类型

主要作用

OSI工作层级

代表产品

应用场景示例

流量网关

负责流量调度与负载均衡、基础安全防护、流量监控与日志记录、协议转换与路由管理等,降低网络与服务的耦合度

传输层:基于 TCP/UDP 端口的流量调度(如将 80 端口 HTTP流量分发至Web 服务器,3306 端口MySQL流量分发至数据库集群)、TCP 连接复用

应用层:基于域名、URL路径的高级路由

硬件:F5 BIG-IP

软件:Nginx、HAproxy、LVS、Apisix

云服务:阿里云SLB、华为云ELB、腾讯云CLB
 

  • 流量总入口:将来自公网的用户请求通过负载均衡分发至机房内的多台Web服务器,同时通过健康检查剔除故障节点,确保服务不宕机

  • 云服务负载均衡:公有云(如阿里云、腾讯云)中的流量网关(如 SLB、CLB)将用户请求分发至云服务器 ECS、容器实例,支持跨可用区负载均衡(如将流量分散到上海、北京两个可用区的服务器),实现服务容灾

安全网关

提供边界安全防护,包括防火墙、入侵检测/防御(IDS/IPS)、病毒过滤、VPN 加密、恶意流量拦截,保障内部网络的安全

网络层:处理IP地址和路由,执行基础防火墙策略(如IP黑白名单)

传输层:控制TCP/UDP端口访问,防止端口扫描攻击

应用层:深度解析HTTP、FTP等协议内容,防御SQL注入、跨站脚本(XSS)等应用层攻击

硬件:华为USG系列、Palo Alto PA系列、深信服NGAF系列

云服务:阿里云WAF/DDos防护产品、腾讯云WAF/DDos防护产品

  • 金融系统:对API请求进行实时威胁检测,阻断SQL注入攻击。

  • 远程办公:通过VPN网关加密内网访问通道


 

NAT网关

实现私有IP与公网IP的双向转换,解决IPv4地址资源不足问题,同时隔离内外网结构,增强网络安全性

网络层:IP地址转换

传输层:端口多路复用(PAT)涉及端口号转换

硬件:Juniper SRX 系列、Cisco ASA防火墙(支持NAT/PAT)

云服务:阿里云NAT网关、腾讯云NAT网关

  • 本地数据中心与阿里云VPC通过双向NAT实现资源互访

  • 家庭或办公环境私有网络(如192.168.0.0/16)中的多个设备通过一个或少量公网IP访问互联网

微服务网关

微服务架构下的通信入口,负责服务路由、负载均衡、服务发现、熔断降级,处理跨服务认证

应用层

Spring Cloud Gateway、Netflix Zuul、Kong

  • 将用户请求路由至订单、支付、库存等微服务,并聚合结果返回客户端,服务故障时的熔断(如电商系统支付服务过载时自动降级)

API网关

管理API全生命周期、提供通用横切功能(认证、授权、限流、日志、监控)、协议转换、API版本管理与文档维护

应用层

Kong、Apisix、ShenYu

  • 为Web、移动端、IoT设备提供统一API,将外部HTTP请求转换为内部gRPC调用

  • 根据用户标签或版本号路由流量至新服务版本,支持金丝雀发布和AB测试

云原生网关

在传统网关(负载均衡、服务治理等)基础上,强化了对云原生场景的适配,支持K8s Ingress标准、服务网格集成、可观测性等

应用层:处理HTTP/HTTPS、gRPC、WebSocket等应用层协议

传输层:部分产品(如Envoy、APISIX)可代理TCP/UDP流量

开源:Apisix、Higress、Envoy、Istio Gateway

云服务:阿里云MSE网关、腾讯云API网关

  • 容器化应用:作为K8s入口网关,自动发现Pod IP并实现金丝雀发布

  • 多集群 / 多云流量调度:打通 Kubernetes 集群间或公有云 / 私有云的流量,实现跨环境服务访问

AI网关

专为AI应用设计的流量治理组件,统一代理大模型API和MCP Server,包括模型路由、请求缓存、数据防护、审计追踪、Token限流等,简化AI集成流程

应用层:适配AI特有协议,如OpenAI API

Higress(AI插件集)、Azure AI Gateway
 

  • 多模型动态调度:企业同时调用多个AI服务(如客服场景需文本模型,设计场景需图像模型),网关按业务需求自动分配最优模型

  • 成本优化:高频重复请求(如客服问候语)通过语义缓存直接返回结果,避免重复调用大模型

边缘网关

整合本地数据处理、设备接入、协议转换、边缘计算等能力,实现边缘侧与云端数据同步,降低带宽消耗,并提升本地实时响应能力

物理层与数据链路层:通过以太网、Wi-Fi、4G/5G 等接口连接本地设备,处理硬件通信

网络层:负责IP路由、子网划分,实现本地设备与上层网络的地址映射和数据转发

传输层:基于TCP/UDP协议保障数据传输的可靠性或实时性

应用层:核心功能层,处理协议转换(如MQTT与HTTP的适配)、数据格式解析(如JSON/XML 转换)等应用层逻辑

工业网关:西门子 SIMATIC IoT Gateway、罗克韦尔 Allen-Bradley Edge Gateway

通用网关:思科 IR829(支持 4G/5G,适用于户外边缘场景)、华为 OceanConnect Edge Gateway(侧重物联网协议转换)

云厂商方案:微软 Azure IoT Edge、AWS IoT Greengrass、阿里云 Link IoT Edge(支持边缘节点部署与云端协同)

  • 智能家居:整合ZigBee灯具、BLE门锁,通过MQTT协议上传至云平台。

  • 智慧交通:路口边缘网关接入摄像头、雷达,本地运行 AI 算法识别闯红灯、拥堵等事件,即时控制信号灯,同时将统计数据同步至城市交通指挥平台

3、如何选择网关?


        除针对特定场景设计的网关(如NAT网关、边缘网关、安全网关、AI网关)外,其他通用型网关的功能,尤其是在应用层,往往存在显著的交叉与重叠。因此,在架构选型决策过程中,核心并不在于网关的分类或功能,而在于精准锚定自身场景的核心需求。即不必纠结 “哪种网关功能更强大、技术更先进”,而要聚焦 “当前架构最需要解决什么问题、未来1~3年最可能遇到什么问题”。

        以云原生架构下的流量网关选型为例,究竟是选择传统的Nginx,主流开源方案如APISIX或Higress,还是直接采用Envoy + Istio服务网格方案?

第一步:明确刚需,排除明显不匹配的方案

  • 若核心诉求是 “简单稳定 + 低学习成本”比如中小团队迁移云原生初期,仅需基础的反向代理、静态资源缓存、简单路由(路径/域名匹配),且团队运维以Nginx为主力 -- 直接选Nginx。Nginx 的优势在于极致性能与稳定性,单实例每秒可处理数万级请求,在静态资源转发、简单反向代理场景中仍不可替代。但需接受其动态配置依赖reload(可能有毫秒级抖动)、原生不支持K8s Service动态发现的短板。

  • 若核心诉求是 “动态配置 + 微服务适配”:比如微服务架构下,服务频繁发布、需要动态更新路由规则(无需重启),且依赖K8s原生Service发现(自动感知Pod上下线)-- 排除 Nginx(动态性弱),优先考虑Apisix或Higress。Apisix与Higress这类云原生网关则针对性解决了动态性问题,它们基于etcd 实现配置热更新,配置变更从提交到生效可控制在毫秒级,能实时感知K8s Service的端点变化,简化K8s集群内微服务发现并实现了api全生命周期管理。

  • 若核心诉求是 “全栈流量治理:比如企业需要统一流量治理,Envoy + Istio可提供全栈解决方案。Envoy作为数据平面,不仅处理南北向流量(网关),还能管理服务间的东西向流量(Mesh),实现统一控制,避免网关与服务网格规则割裂(比如网关配置了限流,Sidecar却未同步导致失效)。但这种能力是是以架构复杂度为代价的,且Sidecar模式会引入额外延迟,适合对治理能力要求高于极致性能的场景。

第二步:用重要但非必须的诉求缩小范围,平衡功能与成本

  • 若需 “强扩展性 + 轻量插件”:比如业务有定制化需求(如特殊鉴权逻辑),且希望插件开发门槛低-- Apisix 更合适。它的插件机制轻量,支持热插拔,社区提供大量现成插件(如OpenTelemetry 链路追踪、Dubbo协议转换),且定制插件可通过简单API注册。

  • 若需 “K8s生态深度贴合”:比如团队重度依赖K8s原生能力(如CRD、Gateway API 标准),且需要与云厂商服务(如阿里云MSE)无缝对接--Higress 更优。它基于Envoy内核,但在 K8s 适配层做了深度优化(比如直接解析 K8s Service 的标签路由),且兼容 Gateway API 规范(未来云原生网关的标准接口),避免被特定Ingress规则绑定。

  • 若需 “极致性能 + 协议兼容”:比如高并发场景(每秒数十万请求),且涉及多协议转换(HTTP转 gRPC/Dubbo,甚至 WebSocket 长连接)— Apisix和Envoy更占优。两者均基于异步非阻塞架构(Apisix用OpenResty,Envoy用 C++),性能接近原生Nginx;而 Nginx如需支持gRPC等协议需额外编译模块,灵活性较差。

第三步:评估隐性成本,避免选时容易用时难

  • 运维团队的技术栈匹配度:比如团队熟悉Lua/OpenResty,Apisix的二次开发和问题排查会更顺畅;若团队擅长Go语言,Higress(Go编写)或 Envoy(可通过WebAssembly 用Go写插件)的上手成本更低;而 Istio+Envoy 的运维复杂度高(需理解 Pilot、Mixer 等组件),适合有专职服务网格运维团队的中大型企业。

  • 未来架构演进的兼容性:比如计划从独立微服务升级到服务网格,可优先选Higress(兼容Gateway API,未来能平滑接入Istio);若明确长期维持轻量微服务,无需服务网格的复杂治理,Apisix的轻量特性会更省心。

  • 社区与生态支持:开源方案的生命力依赖社区--Apisix、Higress和Istio社区活跃(issue响应快,新版本迭代快),Nginx虽稳定但云原生特性更新慢(如对Gateway API 的支持滞后),小团队尽量避开社区冷清的小众方案。

对比维度

Nginx

Apisix

Higress

Envoy

SLB/ELB/CLB

定位

Web服务器/反向代理

云原生API网关(流量+微服务)

云原生API网关(深度集成云生态)

服务网格SideCar代理

公有云流量分发服务,支持四层、七层负载均衡

技术基础

多进程单线程模型(C语言)

基于OpenResty(Nginx + LuaJIT)

基于Go语言,基于Envoy数据面

单进程多线程模型(C++)

/

支持协议

HTTP、HTTPS、WebSocket、WSS、gRPC

HTTP、HTTPS、HTTP 3.0、WebSocket、WSS、gRPC、MQTT、 Dubbo

HTTP、HTTPS、HTTP 3.0、gRPC、Dubbo等

HTTP、HTTPS、HTTP 3.0、gRPC、Redis、MySQL

HTTP、HTTPS、gRPC

配置管理

静态配置,配置变更、Lua插件变更需要Reload进程

基于etcd的声明式API + Dashboard动态配置,支持配置、证书、插件热更新

基于K8s CRD + 控制台,支持热更新,集成云配置中心(如ACM)

基于 xDS API 动态配置

资源变更后由云服务之间的OpenAPI能力动态加载配置

性能

基于多进程 + 单线程事件驱动模型(Epoll),无锁设计减少上下文切换,适合高并发短连接,优化后Http QPS 10万+,延迟1~5ms

复用Nginx内核,通过LuaJIT插件扩展,平衡性能与灵活性,Http1.1请求QPS接近Nginx(约90%性能)

接近Nginx性能,Http QPS约为Nginx的85%左右

多线程优化,Http1.1请求QPS约Nginx 70%性能

单个ELB实例最大支持100万QPS、千万级并发连接

服务发现

服务发现支持K8s

服务发现支持K8s、Nacos、ZooKeeper、Eureka、consul、DNS、固定IP

支持K8s、Nacos、Eureka,深度适配阿里云服务发现

K8s、Consul、Eureka、Nacos

服务发现支持K8s

扩展性

依赖Lua模块或第三方模块,扩展需修改配置并reload,灵活性有限;社区模块成熟但更新慢

插件热插拔机制,社区提供300+现成插件,支持Lua、go、java等自定义插件(Lua插件性能最佳,其他语言有rpc开销)

集成阿里云生态服务(如ARMS、WAF);支持WASM插件(跨语言,须符合Proxy-Wasm规范)

基于Filter机制扩展,支持自定义Filter;通过xDS协议对接控制面,适合深度定制化流量逻辑;支持C++(原生,需重新编译)和WASM插件

依赖云厂商提供的扩展能力,支持通过API对接云服务(如WAF、CDN)

可观测性

需通过第三方工具(如Prometheus + Grafana)采集指标,需配置日志模块输出日志;分布式追踪需额外集成(如SkyWalking)

内置监控指标(QPS、延迟、错误率),支持对接Prometheus、Grafana;集成SkyWalking、Jaeger等追踪工具;日志可自定义输出格式

内置监控指标,支持Prometheus、Grafana;集成阿里云ARMS监控,可自动生成监控看板;支持分布式追踪(对接SkyWalking、Jaeger);日志集成阿里云SLS,支持实时分析

原生支持Metrics(内置Prometheus指标)、Tracing(对接Jaeger、Zipkin);与Istio集成后可生成服务拓扑、遥测数据聚合;支持访问日志自定义

云厂商提供内置监控面板(如阿里云CLB监控),支持Metrics、日志自动采集;对接云厂商可观测平台(如ARMS、CloudWatch)

社区活跃度

成熟,开源版更新较慢

Apache项目,快速迭代

阿里开源,社区快速成长,迭代频繁

CNCF 项目,大厂支持

云厂商自行维护

运维复杂度

低,但缺少可视化配置界面

中,需维护etcd

中低,支持可视化控制台;若依赖阿里云生态,运维成本更低(云服务托管部分组件)

高,依赖控制平面集成

低,全托管

适用场景

传统高并发场景、静态资源托管、简单反向代理与负载均衡

轻量级、插件化的 API 全生命周期管理、混合云环境下统一流量入口

云原生环境下API网关需求、依赖阿里云生态的业务、混合云统一流量治理

流量镜像、故障注入、跨云多集群通信等复杂流量治理,深度集成Istio服务网格

四层大流量高并发业务场景

        总而言之,选型不是选最好,而是选最不折腾。核心逻辑是让网关的核心优势覆盖业务核心诉求,同时让团队运维能力能hold住网关的复杂度,与其追求功能全面,不如确保关键需求不打折,非关键需求不冗余。

专栏文章推荐:

为什么要用分布式ID?雪花算法有哪些坑?

 架构实战:2万字真实案例全方位解析高并发系统性能优化之道

 架构师指南:像呵护感情一样构建无懈可击的系统稳定性防线

系统性能评估:如何定义并发数、响应时间和吞吐量

实战:混合云架构Nginx+Lua实现流量跨机房分发

架构图的魅力:如何用UML提升架构设计的质量

为什么要做架构设计?架构设计包含哪些内容?

架构师的职责是什么?程序员如何转型为架构师?

什么是架构?架构如何演进?

Mysql数据库连接池druid、hikaricp优化实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT孟德

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值