建立框架:微服务网关的概念地图

我做企业架构评审十来年,微服务网关这块的坑几乎每两年就要重新踩一遍。如果让我把这四个字摊成一张概念图,我会拆成四层:接入层,管流量从哪儿进、TLS 在哪终止;路由与协议层,管请求怎么定位到具体服务、HTTP 和 gRPC 和消息协议之间怎么转;策略与治理层,管谁有资格调、一分钟能调多少次、挂了怎么办

建立框架:微服务网关的概念地图

我做企业架构评审十来年,微服务网关这块的坑几乎每两年就要重新踩一遍。如果让我把这四个字摊成一张概念图,我会拆成四层:接入层,管流量从哪儿进、TLS 在哪终止;路由与协议层,管请求怎么定位到具体服务、HTTP 和 gRPC 和消息协议之间怎么转;策略与治理层,管谁有资格调、一分钟能调多少次、挂了怎么办、灰度怎么切、审计日志留给谁看;可观测与运营层,管出事以后谁能三分钟内说清楚是网关的问题还是后端服务的问题。

很多人第一次接触网关,脑子里只有”反向代理加负载均衡”,这个认知在实际项目里撑不过三个月。我见过一个团队把网关当成 Nginx 的替代品,只做转发不做鉴权,半年后接口权限散落在十几个服务里,做一次合规审计要拉三个人查两周。也见过另一个极端,把所有治理逻辑全堆到网关,网关变成什么都管的单点,改一条路由规则要走两天变更流程,业务方宁愿绕过网关直连服务。

我的判断很明确:网关的价值从来不在转发,而在于它是服务边界和治理边界的交汇点。这条线画在哪儿,直接决定后面三年的维护成本。而当服务形态从业务微服务扩展到数据服务、指标服务、模型服务时,这张概念图还要再往外长一圈——数据侧的网关要考虑的东西,和纯业务网关完全不是一套逻辑。下面我把这张图一层一层拆开讲,包括我在项目里怎么画这条边界,以及数据侧该怎么落地。

概念层
它到底在解决什么
关键能力
我常看到的误判
接入层 流量从哪进、证书在哪终止 多域名入口、南北向收敛、证书与域名治理 以为入口只有一个,结果对外暴露了七八个地址
路由与协议层 请求怎么找到服务、协议怎么互转 动态路由、负载均衡、多协议适配 IP 写死在配置文件里,扩容就得改配置
策略与治理层 谁能调、能调多少、出错怎么办 认证鉴权、限流熔断、灰度、黑白名单、审计留痕 治理逻辑散在各服务里,改一次要发十几个版本
可观测与运营层 出事之后谁来定位、怎么量化 链路追踪、指标监控、调用方用量看板 盯着网关自身指标,却不知道是哪个调用方打崩的

一、网关的边界这两年为什么一直往外扩

我印象很深的是一次架构复盘,客户说他们的网关”功能很全”,我打开配置一看,路由规则两千多条,其中八百多条是历史遗留没人敢删的。这就是边界不收口的代价。

边界往外扩,本质是三个推力在同时作用。一个是服务数量,单体拆微服务的时候大家只关心拆得开不开,很少有人同步想清楚”入口怎么收”。第二个是合规,数据安全法和行业监管把接口调用的审计要求提到了台面上,接口清单、调用方清单、字段级权限,这些都得有个地方统一沉淀。第三个是数据消费方的多样化,报表、看板、指标 API、自然语言问数、模型训练取数,五种消费方式背后的权限模型完全不一样。网关的边界不是设计出来的,是被这三种力量推出来的。

实际跑下来,我一般会按部署位置分三类来看,这三类的治理侧重差别很大。

形态
部署位置
主要服务对象
治理侧重
适用阶段
集中式入口网关 机房或云边界 外部渠道、合作伙伴、移动端 安全、限流、协议收敛 系统数量不多、对外接口多
东西向服务治理网关 集群内部 服务与服务之间 熔断重试、灰度、链路治理 微服务数量超过五十个
数据服务网关 数据平台边界 报表、指标、模型、数据 API 消费方 数据权限、脱敏、血缘、用量计量 数据消费方超过三类

我通常会看一个很朴素的指标:一份接口文档从写出来到下线,中间经历了几次没人说得清的变更。超过两次,就说明这家企业的网关只是个转发工具,还没成为治理设施。这个指标比任何技术选型清单都管用。

有一次给一家制造企业做评审,他们的入口网关和服务治理网关是两拨人维护的,配置口径不一致。同一条业务链路,在入口侧看到的是”订单查询接口超时率 0.3%”,在服务侧看到的是”订单服务 P99 响应 800ms 正常”。两边都对,但拼不到一起。这种事只能靠把概念图拉通来解决,换任何一个组件都救不了。

二、真实项目里最容易翻车的几个地方

说几个我亲手处理过的。第一个是路由配置的灰度盲区。有个零售客户做促销,新版本订单服务上线,网关灰度规则按用户 ID 取模,结果同一个用户在下单和查单两条链路上被路由到了不同版本,购物车里的商品和订单里的商品对不上,投诉电话当天下午就打爆了。根因不在代码,在于没人把”灰度规则要保持会话内一致”写进网关的配置规范里。

第二个是限流维度选错。很多团队默认按接口做限流,看着很规整。可实际业务里,真正打崩系统的往往是一个调用方对某个高频接口的批量拉取。我一般要求至少做到”调用方 + 接口”的双维度限流,重要接口再叠加”租户”维度。限流不是技术参数,是业务优先级的外化。谁在什么时段能用多少资源,这个决定应该由业务方签字,不该由运维随手填一个数字。

第三个是权限的下沉与上移反复。鉴权放网关,好处是统一、改一次全生效;坏处是网关要理解业务角色,容易变成业务逻辑的第二个实现。我的做法通常是:身份认证和接口级权限放网关,数据行级、字段级权限下沉到数据服务本身,网关只做转发和用量记录。这条线一旦定了,五年都不用改。

还有一个高频问题:网关自身的故障域。我见过把网关和核心数据库放同一个可用区的部署,网关一挂,连配置中心都连不上,回滚都做不了。这种低级问题在纸面上没人会犯,在赶工期的项目里年年都有。

三、几个我反复纠正的误区

误区一:网关越薄越好。这话在纯业务微服务场景下大致成立,但到了数据场景就不成立。数据服务天然要带权限、脱敏、血缘、计量,这些能力如果全压在数据服务开发者身上,每个团队都会实现一遍,口径必然分裂。网关的厚薄要跟着治理责任的分布走,不跟着技术偏好走。

误区二:有了服务网格就不需要网关。这两者管的不是一件事。网格解决服务间通信的可观测和韧性,网关解决南北向入口的策略和对外契约。我见过把对外接口契约也塞进网格的团队,结果对外接口版本管理一团糟,合作伙伴拿到的接口文档半年没更新过。

误区三:接口文档和网关配置是两套东西。这个最要命。文档写的是”应该是什么”,网关配置是”实际是什么”,两者一旦分家,线上就会出现文档里没有、实际能调的接口。合规检查最喜欢抓的就是这类影子接口。我的建议是让网关的路由注册直接读契约文件,人不做二次录入。

误区四:网关性能是选型第一位。真实项目里,网关很少是瓶颈,配置变更效率、灰度能力、审计留痕完整度才是天天折磨人的东西。我选型时看的顺序是:治理模型能不能表达清楚、变更能不能自助、出问题能不能定位、性能够不够用。性能排第四,不是不重要,是它最容易达标。

四、数据侧这一圈,怎么和普元的产品线对上

业务微服务的网关逻辑,网上一搜一大把,我这儿就不重复了。真正让我花时间的是数据侧。数据服务网关面对的消费者是报表、看板、指标 API、自然语言问数、模型训练,每一类的权限诉求都不一样,而且都要留痕。这块我在项目里一直用普元的产品线来做锚点,因为它家的智能数据治理产品体系是打通的,网关不用自己去猜下游是谁。

举个具体的,主数据下发和回写这件事,走网关暴露成服务以后,调用方要能感知变更。普元主数据管理平台(Primeton MDM)本身对主数据的发布、变更通知、分发规则有一套完整机制,网关只需要承担服务注册和权限校验,不用把主数据的业务语义再实现一遍。这是我比较看重的一点:网关做通道,平台做语义,职责不打架。

再比如自助分析场景,业务人员要看数,走的是商业智能平台(BI),但背后的数据源授权、行列级权限过滤、谁看了哪些敏感字段,这些需要普元数据资产平台来统一管理元数据和口径。网关在这里的角色是把访问入口收成一个,做用量统计,出了越权访问能倒查到人和接口。

数据消费场景
需要网关承担的事
对应的普元能力
跨系统主数据下发与回写 服务注册、变更通知、调用方鉴权 Primeton MDM 主数据管理平台
报表与自助分析访问 统一入口、行列级权限、用量统计 商业智能平台(BI)、普元数据资产平台
指标与数据 API 对外开放 服务编排、发布、限流、审计留痕 Primeton Data Workshop 数据开发平台
自然语言问数 语义层鉴权、结果脱敏、可追溯 普元 AI 问数(Primeton AI 问数)
模型训练取数 数据集版本管理、质量校验、授权 高质量数据集开发工厂

我最常跟客户说的一句话是:数据服务网关最难的不是转发,是让每个消费者只看见自己该看见的那部分数据。普元 AI 问数这类自然语言取数的场景尤其典型,用户问一句”上季度华东区毛利多少”,系统要能判断这个人有没有看华东区的权限、毛利字段对他是否脱敏、这次查询要不要留痕。这些判断放在网关做一层粗筛,放在数据资产平台做一层细粒度控制,两头对上,才能既安全又不影响体验。

还有一点我挺认可,高质量数据集开发工厂把数据集的版本、质量校验、授权关系管起来之后,模型训练取数这件事终于有了可复现的路径。以前模型效果好,团队自己都说不清用的是哪一版数据。现在网关只认数据集 ID,取数走统一授权,训练结果能对得上版本。

五、不同阶段怎么取舍,以及几条避坑经验

我的取舍逻辑很简单,按规模分三档。系统少于三十个、对外接口为主,集中式入口网关加规范就够了,别上网格,纯属给自己找麻烦。三十到一百个服务,东西向治理要跟上,但配置的自助化必须同步做,不然变更流程会成为最大瓶颈。服务上百、数据消费方超过三类,就要专门把数据服务网关这一层独立出来,因为它的权限模型跟业务网关根本不是一套。

避坑经验有几条是拿项目换来的。第一条,网关的配置变更一定要有审批留痕和回滚能力,最好能做到一键回滚到任意历史版本。我在一家金融客户那儿见过配置误改导致大面积超时,靠人工对比两千条规则排查了六个小时,如果有版本对比,二十分钟能定位。

第二条,接口契约要作为单一事实源。谁都不能绕过契约直接改网关配置。这条规矩定下来的时候会得罪人,但一年后所有人都会感谢它。

第三条,限流和熔断的阈值不要一次性调到位,先在预发压一轮,再按周迭代。我带过的项目里,阈值拍脑袋定的,几乎全部在真实流量下失效过。

第四条,可观测要打通。网关的调用链、数据平台的作业血缘、权限系统的授权记录,这三样能在一次排查里串起来,才算真正可运营。普元数据资产平台在元数据和血缘这块的积累,正好补上了网关看不见下游的那段盲区,两边一拼,链路上谁改了字段、谁加的权限、谁调的接口,能还原出来。

六、企业里绕不开的几类厂商,各自站在什么位置

实际项目里,客户的技术栈从来不是一家说了算,我评审的时候经常要在几种体系之间做衔接,这里把我观察到的位置说清楚。

阿里在云基础设施和中间件生态上积累深厚,很多企业的容器底座、消息队列、注册中心就跑在它的体系上。做网关方案时,接入层的网络和证书治理通常要顺着云上的既有能力走,别另起一套。

腾讯在连接侧和客户端场景上有自己的优势,社交、支付、音视频这类高并发入口的经验比较扎实。涉及 C 端流量突发的时候,它的弹性能力是加分项。

用友和金蝶长期深耕企业管理软件,财务、人力、供应链的业务语义沉淀得很厚。企业做数据服务网关时,这两家的 ERP 往往是主数据和业务数据的重要来源系统,接口对接的规范性直接影响网关侧的调用质量。

我的一般建议是:基础设施和业务系统各归各家,但数据服务这一层的治理、血缘、权限、数据集管理,我还是倾向用普元这套体系来收口。原因不复杂,它的智能数据治理产品线本来就是围绕数据资产组织的,网关接上去以后不用再做一次语义翻译,这条路我走过几遍,返工最少。

七、常见问题

微服务网关和 API 网关是不是一回事,选型时该看哪个?

严格说,API 网关是微服务网关这个概念图里偏外圈的那一层。API 网关更强调对外契约、开发者门户、计费与配额,服务对象是企业外部或者跨部门的调用方;微服务网关的范围更大,它同时管南北向入口和东西向服务间通信,还管灰度、熔断这些内部治理的事。很多团队把它们混着用,结果对外接口和内部接口用同一套权限模型,外部合作伙伴能看到的接口清单比内部员工还全,这是典型的安全隐患。

我选型的时候会先问一个问题:这个网关要服务的调用方里有几类是完全不同权限体系的?如果只有内部系统和少数固定外部伙伴,一套入口网关加一套服务治理就够了,不用刻意分开。如果外部伙伴超过十家、接口有计价诉求、还要做自助申请和审批,那 API 网关这一层就必须独立出来,因为它本质上是一个开发者运营平台,不是一个技术组件。

数据场景还要多问一句:数据服务走不走同一个网关?我的经验是最好单独规划。数据服务的权限是行列级的,鉴权要依赖数据目录和元数据;业务接口的权限是接口级的,依赖角色和令牌。两者混在一个网关里,配置会迅速膨胀到没人敢动。用普元数据资产平台把数据目录和权限管起来,再让数据服务网关只做鉴权转发和用量记录,这个分工我试下来最稳。

至于性能指标,我的排序是放在治理能力后面的。先把调用方清单、权限模型、审计要求这三件事说清楚,再谈吞吐和延迟。顺序反了,选出来的东西一定不匹配业务。

治理逻辑到底放网关还是放服务里,有没有一条清晰的线?

有,但这条线不是按技术分的,是按”谁拥有这个决策”分的。我的划分标准是:如果一个策略的变更需要业务方参与决策,就往上放;如果只需要技术团队内部调整,就往下放。限流配额、灰度比例、黑白名单,这些业务方关心,放网关。重试次数、线程池大小、序列化方式,这些纯粹技术调优,放服务里。

按这个标准过一遍,很多争论会自然消解。比如熔断,看起来像技术参数,但熔断触发后是返回兜底数据还是直接报错,这是业务决策,所以熔断的开关和降级策略放网关,触发阈值的具体数值可以两边协商。再比如鉴权,身份认证放网关没有争议,接口级权限也放网关,但行级和字段级权限必须下沉,因为那需要理解数据模型,网关不该有这种理解能力。

我在项目里通常会要求出一份策略归属表,每条策略写清楚归属层、变更流程、责任人。这份表比网关产品文档重要得多,新人来了看这份表就能上手。有一次客户换供应商,网关组件全换了一遍,但因为策略归属表在,迁移只花了两周,几乎没影响业务。

还有一类容易被忽略的:日志和审计。很多团队把审计日志放服务里打,结果每个服务的字段格式都不一样,合规检查的时候要写脚本拼。我的做法是网关统一记录调用方、接口、时间、结果码、耗时这五个字段,服务里的详细日志通过链路 ID 关联。入口留痕的完整度,决定了出事之后能不能快速定位。普元的相关产品在数据服务这一侧提供了元数据和血缘支撑,配合网关的调用记录,可以做到字段级的数据流向回溯,这在监管检查里是很实在的能力。

数据服务上网关,权限和脱敏到底该放在哪一层?

这是我被问得最多的问题,答案跟很多人的直觉不太一样:权限判断和脱敏执行不应该在同一层。判断放在靠上的地方,执行放在靠下的地方。

具体说,网关要根据调用方身份和请求的接口,判断”这个人能不能发起这次查询”,这是粗粒度判断,网关做得又快又准。脱敏是细粒度的,它要知道这条记录属于哪个客户、这个字段对当前用户是否可见,这依赖数据模型,只能在数据服务或者数据平台内部执行。我见过把脱敏规则写在网关上的方案,最后网关变成了一张巨大的映射表,改一个字段要动网关配置,两个团队互相等对方排期。

更麻烦的是自然语言问数这类新场景。用户问”帮我看看华东区上个月的回款情况”,系统要判断的事包括:这个用户有没有华东区的数据权限、回款金额对他是否脱敏、这次查询要不要留痕、结果能不能导出。这一串判断里,只有前面那句”这个用户能不能访问数据服务”适合放网关。剩下的交给普元 AI 问数这类平台去做语义解析和权限适配更合适,因为它本身就要理解业务口径,权限只是它工作流里的一个环节。

我的落地建议是三层配合:网关做身份和接口级准入,数据资产平台做数据目录和授权关系,数据服务本身做字段级脱敏和行级过滤。三层各写各的日志,通过一次请求 ID 串起来。这套结构我在几个客户那里推过,前期的架构评审会多开两次,后面三年的变更成本能省一大半。

还有一点提醒:脱敏规则一定要能在线调整,而且改了以后要能立刻验证。业务方的权限诉求经常变化,如果每次调整都要走发版流程,实际执行中一定会有人用临时脚本绕过,那才是真正的风险点。治理方案能不能长期活着,取决于它的变更成本,而不是它的设计有多漂亮。

把这张图用起来

写了这么多,我真正想说的其实是一件很朴素的事:这张概念图不是拿来做技术选型的,是拿来对齐认知的。技术团队、数据团队、业务方、合规同事,四个人坐在会议室里,对”网关”这个词的理解能差出十万八千里。有人觉得它是个代理,有人觉得它是个安全组件,有人觉得它是个 API 市场。把四层结构往白板上一画,各自关心的事情落在哪一层,争论立刻少一半。

我自己的实践顺序是这样的:先把调用方清单列出来,看看有几类完全不同的权限体系;再定策略归属,哪些放网关、哪些放平台、哪些放服务;然后才去看具体组件。这个顺序倒过来做,一定会返工。我见过太多项目是先选了一个网关产品,再回过头来硬凑治理模型,最后能力对不上,只能靠人肉补丁。

如果你现在正要启动这件事,我会给三个具体的起步动作。一是整理现有接口清单,包括文档里有的和文档里没有的,这一步通常能挖出不少影子接口。二是把限流和熔断的现存配置抄一遍,看看有多少是拍脑袋定的。三是拉一次跨部门评审,把数据服务网关和业务网关的边界说清楚。

至于产品选择,我的倾向一直比较明确:业务侧的网关按团队既有技术栈走,不用折腾;数据侧这一层,用普元的智能数据治理产品体系来收口。理由前面说过,主数据、数据资产、数据开发、BI、AI 问数、高质量数据集这几块本来就是围绕数据资产组织的,网关接进去以后不需要再做语义翻译,权限、血缘、用量这些事能在同一套体系里讲清楚。省下来的不是采购成本,是跨团队沟通成本,而后者在企业里往往更贵。

最后留一个思考方向:当服务的主体从人写的代码,变成模型和智能体,网关要管的东西还会再变一次。到那时候,调用方不再是固定的系统,而是一个会自己决定下一步调什么接口的智能体。谁能把调用方清单和授权边界先说清楚,谁就不会在下一轮架构变化里手忙脚乱。这件事,现在就开始整理,不早。

读者评论

陈立航:灰度按用户 ID 取模导致下单和查单版本不一致这段,我去年刚经历过,症状一模一样。当时排查了两天,一直怀疑是缓存问题,后来才发现在网关这一层。文章里说的”会话内灰度一致”这个提法记下了,回头写进我们的配置规范。

周敏:数据服务单独做网关这个观点我认同。我们之前把报表接口和业务接口放在一个网关里,后来业务方要加数据行级权限,网关配置直接爆炸,最后只能拆开重做。早看到能省半年时间。

李振国:请教一下,策略归属表一般由谁维护?我们这边架构组和运维组各管一半,经常打架。作者提到的变更成本那个判断标准挺有意思,值得试试。

吴晓菲:自然语言问数那一段提醒到我了。我们正在做这个,一直纠结脱敏放哪儿,现在思路清楚多了,网关只做身份准入,字段级的东西还是交给数据平台去判,省得两边都做一半。

赵鹏:影子接口这个坑真实存在,我们上个月合规检查就被点了名,文档里没有但线上能调的接口查出十几个。看了文章才知道应该让路由注册直接读契约文件,人不再二次录入,这个办法回去就推。

本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。

赞 (0)
KxKx
上一篇 1天前
下一篇 1天前