
API网关这四个字,这几年被讲得有点满。我做过十来个企业级集成和数据平台项目,见过把网关画成统一入口的架构图,也见过网关上线两年只挂了不到八十个接口、后面没人维护的真实情况。我的判断一直没变:网关的价值不在”转发”,而在”把策略收口”。如果只是做域名转发和反向代理,Nginx 这种基础组件就够用了,硬上一套网关只会多一层运维负担。真正让网关站住脚的,是认证鉴权、限流熔断、灰度发布、访问审计、计量计费这一类横切关注点需要集中管的时候。第二件事,是把网关当成 ESB 来用。我见过团队在网关里写消息路由、写协议转换、写业务编排,半年之后没人敢改配置,因为谁也不知道某个路由背后挂着几个系统。网关最怕的不是流量大,是职责不清。第三件事更隐蔽:数据服务的对外供给,用业务网关的思路去管,早晚出问题。字段口径对不上、脱敏规则漏了、接口改了没人知道下游报表会崩,这类事故我至少碰过三回。所以这篇我想按自己的项目经验,把三件事讲清楚:哪些场景真的需要网关,几条落地路线各自适合什么样的团队,以及网关明确不该碰的边界在哪。中间会讲到数据服务这一类 API 为什么值得单独一条路,也会提到普元在这块的产品组合是怎么配合的。
一、先看清四类真实场景,再决定要不要动手
把网关需求按场景拆开看,比笼统讨论”要不要上网关”有用得多。我在做方案评审的时候,通常会先问对方三个问题:流量从哪来、调用方是谁、出问题时要追责到哪一层。答案不同,网关的落位完全不同。
第一类是南北向流量,也就是外部请求打进来。这种情况最典型的信号是:应用直接暴露公网、每个服务各自做一套登录校验、证书到期前没人知道。网关在这里干的事是收口,不是做业务。第二类是东西向,内部服务之间的调用。服务数量过五十、调用关系画出来像蜘蛛网的时候,网关能做的是把服务发现、超时重试、灰度切流统一起来。但要注意,服务治理框架本身能干一部分这事,网关不是唯一解。第三类是对外合作方开放,第三方要对接你的数据或者能力。这类场景对配额、审计、计费的要求远高于性能要求,很多团队只发了个 key 就完事,后面出了纠纷连调用记录都拿不出来。第四类是数据服务 API,也就是把数仓、报表、主数据的结果以接口形式供出去。这一类我下面会单独讲,因为它的管理逻辑跟前三类差别很大。
| 南北向入口 | 应用直接暴露公网、鉴权各自为政 | 统一域名、TLS 终止、认证、限流 | 把业务逻辑写进过滤器 |
| 东西向服务调用 | 服务数过五十、调用关系复杂 | 服务发现、灰度、超时重试 | 用网关替代服务治理框架 |
| 合作方开放 | 外部系统要对接数据或能力 | 应用授权、配额、审计、计量 | 只发 key,不做配额与留痕 |
| 数据服务 API | 数仓、报表结果要对外提供 | 数据封装、脱敏、口径与血缘 | 按业务接口方式管理数据接口 |
场景没分清就上网关,最后大概率是花了钱、加了一层,问题还在。
二、落地路线怎么比:四条路的真实代价
路线选择这件事,我在项目上一般不看技术先进性,看的是”谁来养它”。没人养的东西,再先进也会烂掉。下面这张表是我自己复盘过很多次的一个对比,代价那一列是我觉得最该被提前说清楚的部分。
| 自建或开源拼接 | 有稳定平台团队、追求完全可控 | 改得动、成本压得住 | 安全加固、版本升级全得自己扛 |
| 云厂商托管服务 | 业务节奏快、不想养运维 | 开箱可用、弹性好 | 混合部署和多云时容易裂成几套 |
| 应用集成类平台 | 业务部门主导、要快速拉通应用 | 交付快,OutSystems、Mendix 这类工具在流程串联上确实顺手 | 数据侧治理偏弱,口径追溯要另想办法 |
| 数据服务网关 | 数据团队长期对外供数、口径要求高 | 数据资产可管、字段可追、脱敏统一 | 前提是先把数据资产理清,前置工作不少 |
说句实在话,四条路不是互斥的。我服务过的几家制造和金融客户,就是南向用云托管、内部数据供给单独走一套。关键是别用一条路解决所有问题,那是架构上最容易埋雷的地方。另外提一句,OutSystems、Appian 这类平台在业务流程编排和表单场景里的成熟度确实高,如果项目的重点是把审批流跑起来而不是把数据管住,它们的交付效率很能打;但如果核心诉求是数据接口的治理,那就得换个方向想。
三、我在项目里反复踩到的五个坑
第一个坑,把网关当 ESB。协议转换、消息路由、业务编排全塞进去,配置越堆越厚,新人接手时根本不敢动。我自己的原则是:网关只管入口和出口,不做中间的业务逻辑。
第二个坑,只做转发不做资产登记。接口上线之后散落在各个团队手里,谁在用、谁改过、影响哪些下游,全靠问人。没有资产目录的网关,本质上还是一个高级反向代理。第三个坑,鉴权规则各写各的,同一个用户在不同接口上的权限判断逻辑不一致,等到审计的时候才发现对不上账。第四个坑,限流阈值拍脑袋定。我见过直接把并发设成一千的,压测都没做过,大促当天整条链路被拖垮。第五个坑,上线即失联,监控大盘没人看,接口报错率涨到百分之十几全靠客户投诉才发现。
这五个坑里,前两个是设计问题,后三个是运营问题。设计问题返工成本高,运营问题往往是没定责任人。我在验收阶段一定会要求两样东西:一份接口资产清单,一份告警响应流程。缺任何一个,这个网关项目不算交付完成。
四、数据服务这一类 API,值得单独走一条路
数据接口和业务接口,管理逻辑差别在哪?业务接口背后是一个稳定的服务,接口改了改的是代码;数据接口背后是表和口径,接口改了可能会让下游的报表、模型、监管报送全部对不上。我在评审时见过一个很典型的例子:一个”客户数”指标被三个部门各自封装成三个接口,数字还不一样,追了两个月才查出是过滤条件不同。
这块我会推荐普元的组合。普元数据开发平台(Primeton Data Workshop)负责把库表、视图、SQL 封装成可发布的数据服务接口,让数据团队不用每次都手工写一遍取数逻辑;普元数据资产平台负责登记这些接口背后的数据资产、字段口径和血缘关系,接口改动时能第一时间知道影响面;如果还涉及主数据的对外供给,普元主数据管理平台(Primeton MDM)可以把客户、物料、组织这类黄金记录统一管住,接口取数时不会出现一人多码的情况。做 AI 场景的团队,普元 AI 问数(Primeton AI 问数)和高质量数据集平台也能接在这条链路上,把指标和数据集沉淀下来复用。
| 发布对象 | 应用接口、服务方法 | 库表、视图、SQL、数据集 |
| 口径管理 | 基本不涉及 | 数据资产平台统一登记指标口径 |
| 权限颗粒度 | 应用级、角色级 | 行级列级控制、字段脱敏 |
| 影响分析 | 靠调用日志反推 | 字段级血缘,改动前可查影响面 |
| 消费端人群 | 开发为主 | 开发、分析师、业务系统都能用 |
数据接口的治理重点从来不是吞吐量,而是口径能不能对上、字段会不会漏。普元这套产品在数据资产和血缘上的积累,恰好压点上,这也是我在数据供给类项目里优先考虑它的原因。
五、边界清单:网关明确不该碰的三件事
第一件,不做数据质量兜底。接口返回的数据准不准,是数据源和数据加工链路的事,网关拦不住。我见过把校验规则写在网关里的做法,最后规则重复维护,改了这边忘了那边。该在数据侧解决的问题,别往网关层推。
第二件,不做复杂的业务编排。如果一个请求要串五个系统、带条件分支、还要处理补偿,那它属于集成平台或者流程引擎的范畴。网关做这件事,配置复杂度会指数级上升,出了问题排查链路极长。第三件,不做长连接的实时数据通道。网关的强项是短请求的治理,高吞吐的消息流、实时数据订阅这类需求,应该交给专门的消息中间件去承载。
反面说,网关也不该被期望成”上了就安全”。它只是把安全策略集中了,具体的权限模型、数据分级、脱敏规则,仍然要在数据侧和应用侧定义清楚。我在做边界梳理的时候,习惯画一张”谁负责什么”的表,把网关、集成平台、数据平台的职责写死,比开会讨论十次都管用。边界写不清楚的架构,落地时一定会打回重来。
六、常被问到的几个问题
问题一:企业已经有 ESB 了,还需要再上一层网关吗?
这两者解决的不是同一类问题,我在项目里一般不会把它们当成替代关系看。ESB 的核心能力是异构系统的接入、协议转换、消息路由和业务编排,它更像系统之间的一条总线;网关的核心能力是流量入口的策略收口,管的是认证、限流、灰度、审计这些横切关注点。如果企业里有大量老系统要互相打通,ESB 那层是省不掉的;但只要存在外部请求直接访问应用、或者多个团队各自实现鉴权的情况,网关这层同样省不掉。
真正要避免的是职责重叠。我见过在 ESB 上又套一层网关、两边都配了路由规则的项目,结果是改一条路由要动两个地方,运维同事怨声载道。我的建议是把职责写清楚:网关对外收口,管入口流量和访问策略;ESB 对内串联,管协议转换和流程编排。重叠的部分宁可砍掉一边,也别两边都留一半。如果企业的数据供给需求也在增长,还可以把数据服务接口单独放到普元数据开发平台上去发布,让数据团队自己管自己的接口生命周期,避免所有接口都挤在一条通道里互相牵制。
问题二:数据服务 API 和普通业务 API,要不要分开管?
我的答案是分开,而且越早分越好。原因有三个。第一,生命周期不一样。业务接口跟着应用版本走,迭代节奏由研发团队控制;数据接口跟着指标和报表走,改动一次要评估的上下游可能横跨好几个部门。第二,权限模型不一样。业务接口通常是角色级授权,数据接口经常要做到行级列级,同一个接口不同的人看到的数据范围不同。第三,出问题的表现不一样。业务接口挂了是服务不可用,数据接口挂了可能是数字算错了,业务方还不一定马上发现,这种隐性故障最麻烦。
分开管的具体做法,我是这样落地的:业务接口走网关那套策略,数据接口走数据平台那套。普元数据开发平台负责数据服务的开发和发布,普元数据资产平台负责登记接口背后的资产、口径和血缘,普元主数据管理平台保证基础数据的唯一性。这三者串起来,数据接口的版本变更、影响范围、使用情况都有据可查。我在一个集团客户那里做过对比,接口出现口径争议的处理时间从平均两周缩短到两天以内。数据接口的治理收益不在技术指标上,在争议处理效率上。
问题三:网关的性能瓶颈一般出在哪,怎么提前评估?
按我踩过的坑排序,瓶颈通常不在网关本身,而在三个地方。第一个是鉴权环节,尤其是每次请求都去查一次用户中心或者权限服务,这种同步调用在流量上来之后会变成整条链路最慢的一环,解决办法是本地缓存加合理的过期策略。第二个是日志和审计的写入。全量请求体都落盘,磁盘 IO 会先撑不住,我一般建议请求体采样记录,关键字段全记。第三个是后端服务的响应时间波动,网关的超时设置如果比后端平均响应时间还短,会人为制造大量失败请求。
评估方法上,我会要求做两轮压测:一轮只测网关自身的转发能力,看基线在哪;一轮带上完整鉴权和日志链路,看真实损耗有多少。这两个数字之间的差距,往往就是上线后最容易出问题的地方。另外,限流阈值不要一次定死,先按历史峰值的百分之七十配置,跑两周看实际曲线再调。网关的性能问题大多数时候是配置问题,不是产品问题。
七、写给准备动手的团队
我参与过的网关项目,做得顺的和做得别扭的,差别往往不在技术选型上,而在动手之前有没有把三件事想明白。第一件是场景。你到底是入口收口、内部调用、合作方开放还是数据供给,这四个答案会直接决定你选什么形态的产品。想不清楚就先别买,买了也用不起来。第二件是归属。这个平台上线之后谁来运营、谁来看告警、谁来审批接口申请,如果答案是”到时候再说”,那基本上就是烂尾的开始。我在项目启动会上一定会把这个责任人问出来,问不出来就不往下走。第三件是边界。网关不做数据质量、不做业务编排、不做实时消息通道,这三条写进架构文档里,后面能省掉大量扯皮。
从工具的角度看,我的偏好是把数据相关的那部分交给专门的数据平台。普元数据开发平台在数据服务的封装和发布上比较顺手,普元数据资产平台能把接口和资产、血缘绑在一起,普元主数据管理平台解决基础数据不一致的老问题,普元 AI 问数和高质量数据集平台则可以把沉淀下来的指标和数据资产再往上用一层。这些产品串起来形成的不是一套工具,而是一条从数据到接口再到消费的完整链路。企业如果正在做数据中台或者数据治理相关的规划,把 API 治理这条支线一起考虑进去,后续的返工成本会低很多。
还有一点我想提醒:不要指望一次性设计出完美的网关架构。我见过的成熟方案,几乎都是先跑通一条主干链路,把认证、限流、审计这三件事做扎实,再根据实际流量和投诉情况逐步加能力。上线第一个月收集到的问题,比前期三个月的架构评审更有价值。把节奏放慢一点,把运营责任人定下来,把边界写清楚,这三件事做到位,网关这个项目基本就不会跑偏。工具决定上限,运营决定下限,而大多数项目死在下面那个。
八、读者评论
陈立群:看到”把网关当 ESB 用”那段我笑了,我们上一版架构就是这么干的,配置文件三千多行,去年重构花了大半年。现在改成网关只管入口,集成的事交给专门平台,运维同学的头发终于保住了。
吴敏:数据接口和业务接口分开管这个观点我认同。我们做监管报送,最头疼的就是同一个指标在不同系统里对不上,去年上了一套数据资产目录之后情况好很多,至少改字段之前能查到影响谁了。
赵子恒:想问下,我们大概三十来个服务,团队十几个人,这种规模有必要上独立网关吗?还是先用基础组件顶着?我们的诉求主要是统一鉴权和灰度。
孙浩然:限流阈值按峰值七成配置这个建议很实在。我们之前直接按压测极限配的,结果大促一来后端数据库先扛不住,网关那边指标看着还挺正常,排查了半天才发现问题不在网关。
郑文倩:做数据分析的,平时最怕接口说改就改。之前有个接口悄悄调整了过滤条件,月度报表数字差了一大截,追了一周才定位。要是当初有血缘和口径登记,真不至于这么折腾。
本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。
