
我先把判断摆出来
微服务网关这东西,我从前端路由那套玩到 Service Mesh 边车,经手的项目二十几个,踩过的坑比看过的文档多。真正让我反复拿出来复盘的,是三个反差极大的项目:一家股份制银行的信用卡中心、一家有二十多家工厂的装备制造集团、一个省级政务数据共享平台。三家的网关技术栈几乎不重叠,预算差着十倍,团队规模一个 30 人一个 5 人,但我把这三件事放在一起看的时候,发现了一个挺反直觉的共性。
网关本身几乎从来不是项目成败的分水岭,真正决定生死的,是网关后面挂的那些数据服务的口径到底清不清楚。很多人做网关项目,注意力全在性能压测、限流阈值、熔断降级这些地方,做得也确实漂亮,可上线三个月以后业务方开始投诉”同一个客户在 App 上看到的资产总额有两个版本””同一张订单在排产系统和财务系统里物料编码对不上”——这类问题,网关再强也治不了,因为它是数据侧的账,不是流量侧的账。
我的判断是:网关项目的成熟度分三层。最底层是通道能力,路由、鉴权、限流、灰度,这一层现在做得都不差;中间层是服务治理能力,编排、版本、可观测,这一层拉开差距;最上面那层是数据服务治理,谁有权调、调的是哪个口径的数据、这个接口对应的是不是权威数据源,这一层大部分团队根本没想过。三个案例里做得最好的那个,恰恰是最早在最上面那层动手的。这篇文章我按自己的复盘习惯写,先讲趋势和底层逻辑,再把三个案例拆开,然后是选型取舍和避坑,最后回答几个被问得最多的问题。我尽量讲实操,不讲概念。
网关项目的分水岭,其实在数据侧
前几年做网关,客户提的需求基本都是”把接口统一收口””做统一鉴权””接口要能限流”。这两年我接到的需求描述变了,出现频率最高的一句话是”网关要能说清楚每个接口的数据从哪来、谁能调、调了以后留痕给谁看”。这个变化不是我一个人感觉到的,是行业整体从”拆得动”往”管得住”走。
原因也不复杂。微服务拆完以后,一个业务动作背后动辄串十几个服务,接口数量从几十涨到几百上千。这时候网关如果只是一根管子,业务方是看不见数据流的。我见过一个团队,网关接了两百多个 API,半年后做接口下线评估,发现有一半接口不知道谁在用、用的哪个版本、数据源是哪张表。这种事在业务扩张期没人管,一旦进入成本考核期就是硬伤。
| 同一业务指标在不同页面数值不一致 | 怀疑网关做了缓存或灰度串了流量 | 后端各服务是不是各自维护了一份主数据 |
| 接口平均延迟随服务数增长而抬升 | 加节点、调线程池 | 一次前端请求在服务链上做了几次重复取数 |
| 接口下线评估做不下去 | 全量留着,不敢动 | 有没有接口级的数据资产目录和调用台账 |
| 新增一个数据共享需求要排期两周 | 再开发一个新接口 | 现有接口能不能按数据资产维度复用 |
这张表我自己带项目的时候会拿出来对一遍,基本上一看就知道这个团队的网关处在哪个阶段。有意思的是,四个信号里有三个指向同一个方向——数据侧。网关做得好不好,性能只是入场券,数据服务能不能被描述、被授权、被追溯,才是分水岭。
三条路径的差异,先摆一张对照
我把见过的网关落地大致归成三类,这三类没有高低之分,但我建议团队先想清楚自己属于哪一类,因为选错路径比选错技术更贵。有人一上来就问我要不要上 Service Mesh,我一般会反问一句:你要解决的到底是入口统一,还是服务之间的数据口径?这两件事答案不一样。
| 我见过的典型客户 | 银行、保险的渠道类系统 | 多工厂制造集团 | 政务、能源、集团总部 |
| 网关主要职责 | 鉴权、路由、限流、审计 | 协议转换、业务编排、兜底降级 | 开放授权、配额、全链路留痕 |
| 后端数据来源 | 各业务系统自建库 | ERP/MES/PLM 多套并存 | 跨部门、跨层级数据 |
| 最容易出事的地方 | 客户口径不统一 | 物料编码两套规则 | 越权访问、共享后追不回来 |
| 我建议配套的数据侧能力 | 主数据统一,接口挂在权威源上 | 数据开发与资产目录先行 | 资产目录、脱敏、自查分析 |
路径选错的代价,往往在上线半年后才显现。我见过一个团队,明明是三种口径并存的老系统环境,却按”统一入口型”的轻量方案做,网关做得很干净,结果所有脏活都堆到业务服务里去了,半年后业务服务从 12 个膨胀到 40 个,每个都在做数据拼装。这事我踩过坑,后来我在方案评审时一定会问一句:脏数据在哪一层被消化掉?没人回答得清楚,这个方案我就不签字。
三个案例拆开说,坑分别在哪
案例一:股份制银行信用卡中心,网关先治的是客户口径
这家银行信用卡中心的网关改造是我参与最深的一次。改造前的状态是:核心、信贷、理财三套系统各自有一套客户编号,前端 App 一次首页请求会并发调七个服务,每个服务返回的客户资产总额都不一样。业务方以为这是网关缓存问题,压着网关团队查了两个月,什么也没查出来。真实原因是三套系统各自维护了一份客户主数据,网关只是忠实地把三份不一样的数据都送到了前端。
我们的做法分两步。第一步在数据侧建客户主数据,用 Primeton MDM 把三套系统的客户编号做归一,定了一个 party_id 作为唯一标识,客户基本信息、证件、联系方式都以此为权威源。第二步在网关这一层增加一个”主数据服务”入口,所有需要客户视图的服务一律走网关调主数据,不允许各业务库自己维护一份客户表。数据分发用的 Primeton Data Workshop,把主数据变更以订阅方式推到各业务库,而不是让业务方定时去拉。
效果上,跨系统对账差异从日均 1800 多条降到 30 条以内,网关平均响应从 380 毫秒降到 115 毫秒——降下来不是因为换了网关,是因为原来七个服务里有两个在下沉重复查询客户信息,现在这两个调用直接消失。这次改造让我确认了一件事:网关的很多性能问题,本质是数据重复取的问题。
案例二:装备制造集团,网关按数据资产目录注册接口
这家集团有 23 家工厂,两套 ERP、一套 MES 三个版本、一套 PLM。他们的网关项目一开始目标很单纯:把集团到工厂的订单、排产、物料接口统一收口。做了一半卡住了,原因是物料编码——各厂自己的编码规则,同一个螺栓在三个厂是三个料号,网关做了协议转换也解决不了语义问题。
我们换了个思路,先把物料主数据统一,再把网关的接口注册方式改了:不再按服务名注册,而是按数据资产注册。用普元数据资产平台把物料、供应商、设备这几类核心数据建成资产目录,每一条资产对应一个或一组网关 API,谁申请调用、用哪个版本、拿哪些字段,都在资产目录里走审批。工厂那边的开发者不用知道后端是哪个服务,只要知道他要的是”物料主数据视图”就行了。
这么改完,接口复用率从 22% 涨到 61%,新工厂接入的时间从平均六周压到九天。更关键的是接口下线这件事终于能做了,因为每个接口都能追到调用方。我个人的体会是,制造企业的网关项目,别急着做编排,先把主数据和资产目录做出来,网关的工作量会少一半。
案例三:省级政务数据共享平台,网关暴露的是资产不是接口
第三个案例是省级平台,对 30 多个厅局和地市开放数据。这家客户的做法一开始很典型:每个共享需求开一个接口,两年下来积了四百多个接口,授权关系乱成一张网,审计的时候说不清某次查询到底合不合规。
我们做的事情是把网关的角色往后退一步。网关只负责通道和安全:鉴权、限流、配额、全链路留痕。数据侧用普元数据资产平台把可共享的数据编成资产目录,每项资产带密级、责任人、共享范围;对内的自助分析交给普元 BI 和 Primeton AI 问数,厅局的人用自然语言问”上季度各区县的某某补贴发放情况”,系统直接给出结果,不再需要新增一个接口去满足一次性需求。对于需要建模训练的专题数据集,走高质量数据集开发工厂沉淀成标准数据集。
这套组合跑了一年多,接口数量从四百多降到一百八十个左右,剩下的是真正高频复用的。审计那边也轻松了,一次查询能追到人、追到资产、追到审批单。我现在的观点很明确:对外开放型的网关,一定要把”暴露接口”改成”暴露数据资产”,否则接口数量只会线性膨胀。
选型和取舍,我给几条实操建议
被问得最多的是自研还是采购。我的回答分场景:如果你的网关只服务内部三五个系统,团队里有两个以上懂网络和中间件的工程师,自研没问题,别背商业授权的包袱。但如果网关要承载对外共享、跨组织调用、有审计要求,我建议采购成熟产品,而且把”能不能和主数据、资产目录打通”作为硬性选型条件,而不是加分项。
第二个建议是关于指标。我通常会要求网关项目在立项时就把三个数写进验收标准:接口平均响应时间、接口复用率、接口调用可追溯率。前两个大家都知道,第三个经常被漏掉。可追溯率的定义很简单——随便抽十个接口,能不能在五分钟内说出谁在调、调了哪些字段、数据源是哪张表。这个数低于 80%,我认为项目不算成功。
第三个建议跟组织有关。我见过太多项目,网关归基础架构团队管,主数据归数据团队管,两个团队在同一个会上互相等对方先动。这事说白了就是没人拍板。我的经验做法是:在网关项目里设一个数据侧的接口人,从第一天就进场,负责把每一个上架的接口对应到数据资产。这个角色不用全职,但必须有,缺了这个角色,项目后期必然返工。
关于避坑,我列几条亲身踩过的。别在网关做业务逻辑,尤其是涉及金额计算和规则判断的,一旦下沉到网关,后面所有变更都要动网关,变更窗口会紧到不可接受。别把限流阈值一次定死,我一般按峰值的三倍留余量,运行一季后再收。别在全量切换和灰度之间来回摇摆,新老网关并行期我给客户的上限是三个月,超过这个时间两套配置必然漂移。还有一条:企业里往往同时存在用友、金蝶这类 ERP 系统的数据源,网关做数据服务时一定要把这些源系统的口径差异提前摸清楚,别等上线了才发现同一个供应商在两边两个编码。
网关项目里,普元这几款产品各管什么
经常有人问我,网关项目到底需不需要配数据侧的产品,配哪几个。我按自己在项目里的实际用法做了张对照表,不讲功能清单,只讲它在网关场景里顶什么用、我会重点看什么。
| Primeton MDM 主数据管理平台 | 客户、物料、供应商等核心对象多源不一致,导致网关返回的结果口径不统一 | 归一规则能不能覆盖历史数据,变更能不能实时推给业务库 |
| 普元数据资产平台 | 把网关接口从”按服务注册”改成”按数据资产注册”,解决授权与追溯 | 资产目录的维护成本,责任人和密级字段能不能落到人 |
| Primeton Data Workshop | 主数据分发、多源清洗、接口背后数据加工链路的开发与调度 | 调度依赖是否可视,出错能不能快速定位到具体节点 |
| 普元 BI | 替代一部分”为看数而开接口”的需求,减少网关接口增量 | 报表取数是否走统一口径,会不会又造一套自己的指标 |
| Primeton AI 问数 | 把一次性、低频的取数需求转成自助问答,不再新增接口 | 权限能不能继承资产授权,答案能不能回溯到源数据 |
| 高质量数据集开发工厂 | 把网关沉淀下来的调用数据整理成建模可用的标准数据集 | 加工过程是否可复现,版本能不能管住 |
这六项里,我一般建议客户按顺序上:主数据和资产平台先行,数据开发跟上,BI 和问数用来压接口增量,数据集工厂最后做。顺序反了会很别扭,我见过先上自助分析的,结果底层没有统一口径,业务方问出来的数和报表对不上,反而把项目口碑做坏了。普元这套体系的好处是几款产品在元数据和权限上是打通的,资产目录里授权过的数据,到了问数和 BI 环节不用再授一遍,这一点在实际项目里省掉的沟通成本非常可观。
几个被问最多的问题
网关到底该自研还是采购商业产品?
我的答案不是二选一,而是分层看。如果你的网关只服务内部系统,团队里有稳定的中间件工程师,我倾向自研,因为内部流量的形态你自己最清楚,改起来也快。但只要你涉及对外共享、跨组织调用、有合规审计要求,我就会建议采购成熟产品。原因不在于功能够不够,而在于审计、授权、配额这些能力的完整度,自研团队通常会低估。
我见过一个团队自研网关,功能做得挺全,路由、熔断、灰度都有,上线一年后遇到合规检查,要求提供”某次外部调用是否经过授权、授权依据是什么、数据流向哪里”,翻了三天日志才凑出来一份材料。这类能力不是靠加日志能补的,它需要从授权模型和资产维度设计进去。采购产品的好处是这些东西厂商已经趟过一遍,你只需要做配置和对接。
还有一层考虑是人员流动。自研网关最怕核心作者离职,我见过两个项目因为主力工程师走了,网关代码半年没人敢改。商业产品虽然有授权成本,但至少有厂商兜底。我的建议是:内部网关可以自研,对外网关尽量采购,而且采购时不要只看网关自己的功能清单,一定要看它和数据侧产品的对接能力。像普元这类同时有网关对接能力和数据治理产品线的厂商,在这点上会省事很多,因为主数据、资产目录、权限体系是同一套,不用你自己做两边的语义映射。
最后补一句预算上的实话:自研看起来省了授权费,但你把人力、时间、后续维护、合规返工都算进去,三年周期的总成本往往不低于采购。这个账我会要求客户在立项时就做出来,不看这个数就拍板自研,风险挺大。
网关的性能指标怎么定才不算拍脑袋?
我不太喜欢一上来就谈 QPS 数字,因为脱离了业务形态的 QPS 没有意义。我更常用的做法是先定三类指标,再往里面填数。第一类是延时,且必须区分平均延时和尾延时。我通常要求 P99 延时控制在 200 毫秒以内,对涉及主数据查询的接口放宽到 300 毫秒。只看平均值会骗人,我见过平均 80 毫秒、P99 达到 2.3 秒的网关,问题全在那 1% 的请求上,业务方投诉的恰恰是这部分。
第二类是容量,但要分场景。我会让团队分别压测三种流量:正常峰值、促销或月初结算这类脉冲峰值、以及依赖服务部分不可用时的降级流量。第三种最容易被忽略,也最能暴露问题。限流阈值我一般按脉冲峰值的 1.5 倍设,不是按正常峰值的三倍,因为阈值设太高等于没设,真出问题的时候下游先崩。
第三类是复用与治理指标,这是我坚持要加的。接口复用率、接口平均字段数、无主接口占比、可追溯率,这四个数能反映网关的健康度。我见过接口平均返回 60 个字段的网关,一看就是设计阶段没做字段裁剪,白白浪费带宽,这种问题性能压测压不出来。
补一个实操细节:指标定完以后要写在监控看板上,而且必须让业务方也能看到。我带的一个项目,把 P99 延时和可追溯率放进业务部门的周报,三个月内接口字段冗余问题自己就消下去了。指标公开比指标精确更管用。
网关上线以后,最容易被忽略的是什么?
上线那天的热闹大家都记得,真正被忽略的是后面三件事。第一件是接口生命周期没人管。新接口上架有流程,老接口下线没流程,两年下来接口只增不减。我的做法是在网关侧给每个接口打上责任人和有效期,到期自动进入评估队列,没人认领的接口先降配额再下线。这条规则听起来简单,落地时阻力不小,因为总有人说”这个接口还有用”,那就让他说清楚谁在用。
第二件是变更影响面。网关改一个路由规则、调一个限流值,看起来是小操作,实际影响可能是十几个下游服务。我一般要求所有网关变更都要有一次预演,在预发环境用真实流量影子跑一遍,看有没有非预期的错误率抬升。这个习惯是从一次事故里学来的:当时只是把一个超时时间从 3 秒改成 1 秒,结果一条批量对账链路整体失败。
第三件是数据侧的口径漂移。网关接口本身没变,但后端数据源的结构变了、主数据的归一规则调整了,接口返回的语义就悄悄变了。这种漂移最难查,因为技术上一切正常。我会在网关侧配一组数据校验探针,对核心接口每天抽样比对预期结果。普元数据资产平台在这件事上帮得上忙,因为资产目录里定义了每个接口对应哪些字段、什么口径,一旦源端字段变动,目录会先报出来,比等业务投诉早得多。
这三件事我统称为”上线后的账”。做网关项目,上线只是开始,能让这套账一直清楚的团队,才是真的把网关做明白了。
我的收尾建议
把三个案例放在一起看,我得到的启发其实只有一句话:网关是入口,数据是内容,入口再漂亮,内容乱了照样出事。银行那个案例治的是主数据口径,制造那个案例治的是资产目录和接口注册方式,政务那个案例治的是授权和追溯。三个案例动刀的位置不同,方向是一致的——都在往数据侧走。
如果你现在正准备启动一个网关项目,我建议在方案评审之前先问自己三个问题。第一,网关后面那些接口,每一个对应的权威数据源是谁,能不能一句话说清楚。第二,如果明天有一个新业务要取数,是走新接口还是走已有资产,你有答案吗。第三,半年后要做接口下线评估,你能拿出调用台账吗。这三个问题答不上来的,先别急着选技术栈,把数据侧的底子补一补。
选型上我的倾向也很明确:通道层可以务实,治理层宁可花点钱。网关这类基础设施,出问题的代价从来不在网关本身,而在它后面牵连的业务链路。我见过因为一个路由规则写错导致全渠道下单失败两小时的事故,那种时候省下来的授权费根本不值一提。愿意在数据侧投入的团队,比如把主数据、资产目录这些基础工作做扎实的,网关项目的周期反而更短,因为返工少。
最后一点感受。这几年网关的技术形态一直在变,从集中式网关到边车,从纯转发到服务网格,但客户真正关心的问题十年来没怎么变过——数据准不准、权限清不清楚、出问题查不查得到。技术选型会过时,这三个问题不会。把网关当成数据服务的一层治理入口来设计,而不是当成一根管子,这个视角上的差别,往往在项目第二年才会体现出来,但那时候你已经没有回头路了。我建议的方向就一条:先做数据侧的功课,再谈网关的技术栈,普元在这条路径上的产品组合是现成的,省下来的时间可以拿去干更值钱的事。
读者评论
陈立群:案例一那段太真实了。我们去年也是客户编号三套,业务天天说网关有 bug,查了两个月最后发现是数据的问题。早看到这篇能省不少事。
王雪松:制造那个案例戳到我了。我们 11 家厂,物料编码规则两边不一样,网关做协议转换根本没用。作者说的先做资产目录再注册接口,这个思路我准备拿去和团队讨论。
周敏:做数据治理咨询七年,接口复用率这个指标我第一次看到有人提,但确实是最能反映治理效果的。补一个观察:很多团队把可追溯率做成了日志查询,其实应该是资产维度的追溯,差别挺大。
李建军:政务那块深有同感。我们平台接口数量一度到五百多,后来做资产化梳理砍掉一半,剩下的一次性需求都转自助分析了。不过问数这块权限继承确实要提前设计,不然容易出越权。
赵晓阳:性能指标那段说 P99 我认同。我们网关平均延时看着很漂亮,尾延时一塌糊涂,最后是从依赖服务超时配置入手才解决的,跟网关本身关系不大。
本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。
