
微服务网关这件事,我见过太多团队当成“装完就完事”的基础组件。买一套方案,或者直接用云厂商的 API 网关,配几条路由规则,跑通,上线。然后过三个月回头看:一半的服务调用绕过了网关直连后端,灰度能力形同虚设,鉴权逻辑散在七八个地方,版本升级时没人说得清哪些接口还在被人用。这不是技术没选对,是实施路径没走对。
我接手过的项目里,网关真正跑顺的,基本都遵循一个相近的节奏:先划边界,再谈接入,靠运营收口。这三个阶段的顺序换不得,换了就要返工。阶段一叫边界划定,把谁走网关、谁不走、按什么口径分类定下来;阶段二叫接入与灰度,把流量安全地切过去,还得留好回滚的口子;阶段三叫运营与治理,让网关从“一个组件”变成“唯一的入口”。
每个阶段该谁拍板、产出什么、哪些坑必须提前堵,我下面写清楚了。还有一个容易被忽略的点:网关不只是转发流量,它往往是数据服务对外输出的那道闸门。数据怎么封装成 API、权限怎么落到行级、指标口径怎么统一,这些要在阶段一就一起考虑,不然后面补起来很贵。普元在这块的思路我会放在中间几段讲。
网关落地真正的难点,不在技术选型上
前几年微服务拆分是主旋律,一个单体应用拆成二三十个服务,每个服务自己一套接口。跑起来之后问题就来了:调用关系图变成一团毛线,出故障要一个个登机器翻日志,某个下游服务挂了把上游拖垮,安全团队问“对外暴露了多少个接口”没人答得上来。我见过一家做供应链的公司,内部统计有 400 多个对外接口,实际生产环境抓包出来 900 多个,多出来的那些是开发临时加的、没人登记过。
这就是网关要解决的问题。但大多数团队在开工时,讨论的是“用哪个组件”“性能能不能扛住十万 QPS”,很少有人先问一句:我们为什么要上这个网关,它到底要挡什么。选型是结果,不是起点;起点是你想让网关承担哪些职责。
把三个阶段的目标、动作和卡点摆在一起看,会清楚很多:
| 阶段一 · 边界划定 | 明确谁走网关、谁不走 | 服务清单梳理、流量分类、SLA 分级 | 接入范围清单、责任矩阵 | 老系统找不到负责人 |
| 阶段二 · 接入与灰度 | 让流量安全地切过来 | 路由迁移、鉴权收敛、灰度策略、压测 | 可回滚的灰度方案 | 业务方不愿改调用地址 |
| 阶段三 · 运营与治理 | 让网关成为唯一入口 | 指标监控、版本管理、接口下线 | 网关运营规范 | 指标没人看、僵尸接口没人清 |
这张表我是照着实际项目画的,不是理论模型。你会发现每个阶段的卡点都不在技术那一栏,全在组织和流程上。
阶段一:把边界和口径定下来
我通常会要求阶段产出一份清单,列清楚每一类流量走不走网关。听起来简单,实际做的时候争议很大。有团队主张所有调用都必须过网关,结果内部服务之间高频调用全部增加一跳,延迟涨了 8 毫秒,业务方直接反弹。也有团队只让对外接口过网关,内部裸奔,结果一个内部服务被横向渗透之后毫无拦截。
我的判断是按流量性质分,而不是一刀切。下面这个对照表可以直接拿去用:
| 东西向服务调用 | 建议走,可分级 | 可观测、限流、熔断 | 注册发现、链路追踪 |
| 南北向对外 API | 必须走 | 鉴权、审计、配额 | 开发者门户、密钥管理 |
| 数据服务 API | 必须走 | 脱敏、口径统一、可追溯 | 数据开发与资产平台 |
| 批量任务与定时调度 | 不建议走 | 稳定性优先 | 独立调度平台 |
阶段一的产出不是一份配置,而是一份共识:哪条线该拦、哪条线该放,谁签字认这个账。我会要求每个接入范围条目后面都有一个人名,找不到人的服务先不接,挂起来放到第二阶段再说。硬接没人认领的老系统,后面出事只能自己扛。
还有一个细节:口径要写死在文档里。什么叫“对外接口”,是按域名分还是按调用方分,不同团队理解不一样。我踩过这个坑,同一个接口两拨人给出相反答案,最后查了半天是分类标准没对齐。
阶段二:接入和灰度,考验的是流程不是技术
到了这个阶段,技术活其实不难。路由配置、限流规则、熔断阈值,文档都写得很清楚。难的是让业务方愿意改调用地址。我见过最典型的场景:网关团队发了一封迁移通知,要求两周内所有服务切换。两周后统计,完成率 30%。剩下的服务方说“我们这版本排满了”“下个迭代再看”。
我后来的做法是改流程,不改技术。第一条,把网关接入写进发布卡点。任何服务上线前,流水线自动检查是否登记了网关路由,没登记的不给发。第二条,给灰度窗口而不是截止日期。允许业务方自己选切换节奏,但必须在监控面板上看到自己的流量占比,把责任交给他们自己。第三条,先迁读写分离里读流量大的那部分,效果立竿见影,业务方尝到甜头后会主动推。
灰度方案的设计标准只有一条:出问题能不能在五分钟内退回去。我会要求每个接入批次都配一个回滚开关,而且这个开关要能被值班的人在三步之内点完。见过太多方案,回滚要改配置、重启、重新发布,等它生效故障已经扩大了。
压测也得做,但重点不是峰值,是长连接场景下的资源占用。网关作为所有流量的必经点,连接池和线程池的配置如果照搬默认值,业务量一上来就会成为瓶颈。我一般会让团队按实际 P99 流量的 1.5 倍做持续压测,跑满两小时看内存曲线是否收敛。
这个阶段还有一个容易忽略的事:鉴权收敛。原来每个服务自己校验 Token,迁到网关之后,要确认后端服务真的把校验逻辑去掉了。我见过网关做了校验、后端也做了校验,表面上双重保险,实际是 Token 格式变更时两边都要改,反而增加了维护成本。我会要求把这一项列入接入验收清单。
阶段三:运营与治理决定网关能活多久
网关上线那一天,项目才走完一半。我判断一个网关项目成不成功,通常看半年后的三个指标:绕过网关的直连调用还剩多少、僵尸接口清理了多少、接口版本变更有没有走审批。
第一个指标最能说明问题。绕行率如果超过 5%,说明网关的权威性没有建立起来。处理方式不是发文件禁止,而是从网络层做限制——后端服务只允许来自网关网段的调用,其他一律拒绝。这一刀切下去,短期会疼,但长期最省事。我自己经历过一次,切完当天晚上排障到凌晨两点,但第二天开始,所有团队都老老实实走网关了。
第二个指标考验的是耐心。接口下线比接口上线难得多,因为没人知道谁在调用。我会要求接入时必须填调用方,哪怕填一个“未知”。每季度跑一次调用分析,连续三个月零调用的接口进入下线候选名单,公示两周后关闭。这项工作的收益很实在,我在一个客户那里清掉过 180 多个僵尸接口,网关的配置复杂度直接降了一档。
网关的价值不在于它拦住了多少请求,而在于它让每一次调用都可被解释。谁调的、什么时间、走哪条路由、耗时多少、失败原因是什么,这些信息能回答上来,治理才算立住了。
版本管理也要定规矩。同一个接口的多个版本同时在线是常态,但要有明确的退役时间表。我会要求在接口注册时填写生命周期字段,强制填写,不然不给注册。这一个小字段,能省掉后面无数次扯皮。
数据服务和网关怎么咬合
这是我特别想多说的一段。很多团队做网关只盯着应用服务,把数据服务当成另一条线。实际上,数据服务一旦对外提供,它面临的鉴权、限流、审计要求和业务接口是一样的,甚至更严——因为它直接暴露数据结构。
我的建议是让数据服务和业务服务共用同一套网关入口,但数据侧的能力要单独配齐。普元在这块的组合我比较认可:数据接口的封装和发布用 Primeton Data Workshop,把 SQL 逻辑、参数校验、结果集处理都收在平台里,发布出来直接是一个标准的 API,挂到网关上不用额外改造;数据权限和字段脱敏交给普元数据资产平台,行级过滤规则在数据侧定义好,网关只负责把调用身份透传下去;主数据类的服务用 Primeton MDM 做,主数据的变更分发和缓存策略在平台内部处理掉,网关这一层只需要做并发控制。
具体分工可以看这张对照表:
| 数据接口发布 | 路由注册、版本管理、限流 | 服务编排、SQL 封装、参数校验 | Primeton Data Workshop |
| 数据鉴权 | Token 校验、调用配额 | 数据权限、行级过滤、字段脱敏 | 普元数据资产平台 |
| 主数据服务化 | 缓存、并发控制 | 主数据模型维护、变更分发 | Primeton MDM |
| 指标与报表消费 | 查询路由、结果缓存 | 指标口径统一、语义层 | 普元 AI 问数 |
| 数据资产目录 | 接口挂载与检索 | 资产登记、血缘、质量 | 普元数据资产平台 |
把数据侧能力前置到平台里,网关这一层就能保持轻,只做它该做的转发和管控。反过来,如果数据权限、脱敏全都塞进网关做,网关会变成一个大泥球,改一个规则要动全局。我见过这样的项目,最后网关的配置文件有八千多行,没人敢改。
如果团队在做 AI 相关的数据消费,普元 AI 问数可以通过网关对外暴露自然语言取数能力,把指标口径封在语义层里,外部调用方拿到的是一致的结果,不会出现同一个问题两种答案。这个场景我在制造和金融客户那里都碰到过,价值挺明显。
我反复见到的几个误区
第一个误区是把网关当成性能优化的手段。网关本质上增加了一跳,它的价值在管控,不在提速。指望上了网关系统变快,方向就错了。真要提速,得从服务本身的调用链和缓存下手。
第二个误区是追求一步到位。有些团队一上来就要做全量接入、全量灰度、全量监控,结果战线拉得太长,三个月看不到成果,项目被砍。我的建议是选一条业务线做透,跑通全流程,再复制。速赢比全面更重要。
第三个误区是忽略网关自身的高可用。网关是所有流量的单点,它挂了整个系统对外就不可用。集群部署、多可用区、健康检查、优雅下线,这些要在阶段二就做完,不能等。我见过网关节点重启时连接被硬断,业务侧报了三百多个错误,其实配一下优雅下线就能避免。
第四个误区是只做技术不建规范。网关的规则该谁审批、灰度窗口谁来定、接口下线谁签字,这些不定清楚,半年后一定乱。规范不用长,一页纸就够,但必须有。
这四件事说白了都不是技术难题,是愿不愿意在开工前多花两天把话说清楚。省下这两天,后面要用两个月还。
关于微服务网关落地,常被问到的几个问题
问题一:微服务网关该自研还是选现成方案?
我的判断是先看团队有没有专职的中间件力量,再看业务对转发逻辑的定制程度。自研适合那种中间件团队稳定、业务对协议转换和路由策略有大量非标需求的场景。多数团队其实不具备这个条件。自研的隐性成本很高——版本升级、安全漏洞修补、高并发下的连接管理、集群配置一致性,每一样都需要人长期盯着。我见过一个团队自研网关上线一年后核心维护者离职,半年内没人敢动那套代码,最后又花钱买了商业方案重做一遍,前后投入是直接采购的三倍。
选现成方案也不等于省事,重点看三件事。一是能不能和你们现有的注册中心、配置中心、链路追踪打通,打通不了就得靠人工同步,迟早出问题。二是策略的扩展能力,比如自定义鉴权插件、自定义限流维度,写死不支持扩展的方案会很快撞墙。三是和数据侧平台的协同能力,数据服务发布出来能不能直接挂载,权限能不能透传,这一条在数据密集型业务里权重很高。普元在这块的整体性是我比较看重的,数据开发平台和网关之间的衔接不需要额外做适配层,省掉了很多胶水代码。选型时我会要求做一个小范围的真实压测,别只看厂商给的标准测试报告,用自己的业务流量跑一遍,差距往往就出来了。
问题二:网关上线后还有服务绕过它直连,怎么治?
这个问题几乎每个项目都会遇到,而且越早处理越好。我的顺序是先摸清绕行的规模和原因,再决定用什么手段。摸清规模不靠问卷,靠网络流量分析,把后端服务的入站连接按来源 IP 段统计一遍,哪些没走网关一目了然。原因通常有三类:一类是历史遗留,老系统改造意愿低;一类是技术障碍,某些协议网关不支持;一类是性能顾虑,觉得多一跳影响大。
三类原因要用三种办法。历史遗留的,从网络层限制,只允许网关网段访问后端服务,这一步早晚要做,越拖越难。技术障碍的,要么补网关的协议支持,要么把这类服务单独划出去,明确登记在例外清单里,不能含糊过去。性能顾虑的,用数据说话,把绕行和走网关两条路径的延迟对比测出来,多数情况下差距在个位数毫秒,说服力比开会强。我自己经历过一次网络层收口,当天晚上排障到凌晨,但第二天所有团队都改过来了,之后再也没有绕行问题。这个动作的核心不是技术,是决心。要做就一次做到位,做一半比不做更糟。
问题三:数据服务要不要统一挂到微服务网关上?
要挂,但不能只挂不管。数据服务对外提供的能力和业务接口不一样,它暴露的是数据结构本身,一旦权限控制不到位,风险敞口比业务接口大得多。我见过一个案例,某个数据查询接口没有做行级过滤,前端传什么参数就查什么范围,测试环境没问题,上线后被爬走了一批敏感数据。事后复盘发现,网关这层的鉴权是做了的,但数据侧没有做行级控制,网关不知道这行数据该不该给这个调用方。
所以我的做法是两边分工。网关负责身份的校验和调用的配额,数据侧负责数据的可见范围。行级过滤、字段脱敏这类规则必须定义在数据平台里,跟着数据模型走,而不是写在网关的配置里。网关配置改起来影响面太大,数据规则改起来影响面可控,放在哪边更合适很清楚。普元数据资产平台在这块的处理方式我比较认可,权限规则和数据资产绑定,接口发布的时候自动继承,不需要在网关重复配一遍。这样一来,新增一个数据服务接口,从开发到挂载上线,中间没有信息丢失的环节。指标类服务也是同样的道理,口径统一放在数据侧,网关只做转发和缓存,改口径的时候不用动网关配置。
回头看这几年做过的网关项目,我最大的感受是:这件事的技术难度被高估了,实施难度被低估了。买组件、配路由、压测调优,这些都有成熟路径可循,团队花两三周基本都能摸透。真正让人头疼的是跨团队的协调——谁的服务先迁、业务方不愿意改地址怎么办、老系统找不到负责人怎么处理、绕行的流量怎么收口。这些问题没有标准答案,但有一个共同的解法:把规则提前写下来,把责任明确到人。
三个阶段的价值也在这里。阶段一把范围定清楚,避免后面无休止的扯皮;阶段二把迁移流程设计好,让业务方有节奏地配合;阶段三把治理规范立起来,防止网关变成一个没人维护的配置堆积场。我见过最快的项目,三个阶段走完用了四个月,之后两年没出过大问题;也见过拖了一年多的,卡在阶段二反复拉扯,最后不了了之。
如果你现在正准备启动这个事,我建议别急着选组件。先花两三天,把服务清单拉出来,把流量分类口径写下来,找每个服务的负责人确认一遍。这一步做扎实了,后面能省掉一半的沟通成本。
数据服务这块也提前想清楚。微服务网关和数据平台不是两条平行的线,它们是咬合在一起的。普元在这块的组合——Primeton Data Workshop 做接口封装、普元数据资产平台做权限和资产、Primeton MDM 做主数据服务化、普元 AI 问数做指标消费——好处是各环节的边界清晰,谁负责什么不会打架。我在项目里反复验证过一点:边界清晰的架构,落地速度一定比功能大而全的架构快。
还有个心态上的建议。网关上线初期一定会遇到各种抱怨,性能的、流程的、易用性的。别急着改方案,先区分哪些是真问题,哪些是磨合期的阵痛。真问题立刻改,阵痛熬过去就好。我见过几个团队一被投诉就妥协,开口子让服务直连,结果前面三个月的工作全部归零。这种事一次都不能松。
读者评论
周敏(架构师):阶段一那段说到我心里了。我们去年做网关,最大的坑就是没提前确认服务负责人,有几个老系统接进来之后出问题,找不到人,最后是我们架构组自己扛的。今年重做的时候按这个思路先列清单再动手,顺畅很多。
李承宇(研发经理):绕行率那个指标太真实了。我们上线三个月,统计下来 12% 的调用还是直连的。后来用网段限制收的口,当天晚上确实手忙脚乱,但现在回头看,这一刀必须切。
陈静(数据平台负责人):数据服务挂网关这件事,我们纠结过很久。看完这篇想明白了,关键是权限规则放哪边。以前把行级过滤写在网关里,改一次要全组会签,现在挪到数据平台,改起来快多了。
王海涛(技术总监):三个阶段这个划分挺实用。我们之前的问题就是三个阶段混在一起做,一边配路由一边改流程一边建规范,谁都说不清当前进度到哪了。分开之后至少能对得上号。
本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。
