
混合集成这个词,这两年问的人特别多。我经手的项目里,超过一半是本地机房、公有云、外部 SaaS 三头并存的形态,真正干净的单一环境几乎见不到。不少团队把注意力全放在协议适配上,HTTP 还是消息队列,REST 还是 gRPC,讨论得热火朝天。协议恰恰是最不费脑子的那一层,就那么几套,选完就定了。真正拖工期的是数据口径、编码映射和异常兜底。有个项目接口第一天就跑通了,光对齐”客户编码”这一件事耗了三周——三个系统里,同一个客户有三套编号规则。
我的做法是把混合集成拆成三层。主数据层定口径,用普元主数据管理平台把客户、物料、供应商、组织这些关键实体的编码和属性收敛到一处,谁都不许自己造一套。数据同步层管批量,靠普元数据开发平台做增量抽取加任务调度,让跨环境的数据搬运变成可重跑、可回放的工程活,而不是一堆散落的脚本。接口交互层只管实时,承载必须在毫秒级拿到结果的场景,能异步的一律异步。三层拆开,出故障时才知道去哪一层翻日志,否则一条链路串十几个系统,排查全靠猜。
所以这篇我讲判断,不讲协议细节。看完你至少能自己回答三个问题:哪些数据必须统一管、哪些交互可以异步、哪些操作坚决不能直连生产库。这三个想清楚了,方案基本就成型了。
混合集成先分清拓扑,别拿一套模板套所有场景
我通常先问一句:这套环境里的系统分别在哪。答案不同,方案差得很远。
本地到云上最常见。核心 ERP 或者 MES 留在机房,新业务放云上,诉求集中在主数据下发和单据状态回传。这种拓扑最大的变量是网络,公网抖动、带宽成本、安全策略都得提前算进去。
多云之间多半是历史遗留。两拨系统跑在两个云上,要合起来做分析和对账。时钟同步、幂等设计、重复消费的处理,这时候比接口本身重要得多。
云上接外部 SaaS,难点在语义漂移。对方版本一升级,字段含义可能就变了,你的对账逻辑得跟着调。能定契约的地方一定定契约,别指望口头约定。
| 本地到云上 | 核心系统留机房,业务系统上云 | 主数据下发、单据状态回传 | 公网抖动引发重传,业务侧没做幂等 |
| 多云之间 | 两拨系统分属不同云环境 | 数据合并、统一对账口径 | 时钟不同步,同一笔单据两边时间对不上 |
| 云上到 SaaS | 自建系统对接外部应用 | 事件订阅、批量对账 | 字段语义变更没通知,对账口径悄悄跑偏 |
三行看完会发现没有通用模板。拓扑决定优先级,优先级决定先做什么。同一套方案直接搬到另一种拓扑上,几乎没有不出问题的。
三条对接路线:实时走接口,准实时走事件,批量走数据同步
接口、事件、数据同步,这三条路我一般都会用上。不是选一条,是分工。
接口适合实时查询和单笔事务,比如订单提交后立刻校验客户信用额度,这种场景异步不了。代价是源系统得改造、要暴露接口,还要管鉴权、限流和版本回退。
事件总线适合状态变更通知。订单状态改了、库存动了,发一条事件出去,谁关心谁订阅。它对源系统的侵入最小,解耦也最彻底,缺点是排查麻烦,一条事件被谁消费了不太容易追。
数据同步适合跨系统的批量分析、对账和主数据分发。分钟级甚至小时级的时延能接受,那就别在接口上较劲,走增量抽取加数据集成任务的路子更稳,也更好维护。
| 接口直连 | 实时查询、单笔事务 | 毫秒级 | 中等,需改造 | 统一鉴权限流,版本可回退 |
| 事件总线 | 状态变更、异步解耦 | 秒级 | 低 | 消息可靠投递,消费端做幂等 |
| 数据同步 | 批量分析、对账、主数据分发 | 分钟到小时级 | 极低 | 增量识别、断点续跑、结果可回放 |
我的排序原则很简单:能用批量解决的,绝不上实时接口。实时是有成本的,不光是性能成本,还有沟通和运维成本。一个每天只跑一次的对账做成秒级接口,除了给自己找麻烦,没别的作用。
接口跑通了,业务却没通,卡在哪
这种情况我遇到太多次。联调会上双方开发说接口通了,上线一周业务部门说数据对不上。
原因基本逃不出四个。字段语义不一致,一边的金额默认含税,另一边默认不含税。编码规则不统一,同一个物料两套编码,靠人工映射表撑着,换个人接手就出错。时序问题,A 系统先发主数据再发单据,中间隔几百毫秒,B 系统收到单据时主数据还没落库。异常没兜底,接口失败只打了条日志,没人重试,那笔数据就永远躺在那儿。
接口是技术契约,语义是业务契约,后者没人签字就一定会出事。
我的习惯是在设计阶段就产出一份数据字典,把每条链路上的关键字段、取值范围、默认值、失败处理方式全部写死。这东西比任何架构图都管用,出了问题直接翻它,不用开会扯皮。
主数据统一了,混合集成的难度会掉一半
前面说的编码规则不统一,本质是主数据没管起来。客户、物料、供应商、组织、科目这些实体在多个系统里各有一套,集成时只能靠映射表硬撑。系统越多,映射表越像蜘蛛网。
我的建议是先上一套主数据管理。普元主数据管理平台(Primeton MDM)把这几个实体当成独立服务来治理,源头录入、审批发布、分发订阅形成闭环,业务系统只消费、不自己造。好处很直接:链路上传的是统一的主数据编码,不是各系统自己的内部 ID,映射表这件事就没了。
再往上一层是数据资产。普元数据资产平台能把散在各环境里的表、指标、口径登记成目录,谁在用、从哪来、口径是什么,都能查。多云环境里我尤其看重这一层,没有资产目录,两个云上的数据团队根本不知道对方手里有什么。
五种常见情况,怎么做取舍
方案没有绝对好坏,只有合不合适。下面这五种情况是我被问得最多的,每种我的取舍都不太一样。
| 新建系统要接三个以上老系统 | 先定主数据口径 | 普元主数据管理平台 + 普元数据开发平台 | 接口数量会随系统数量快速膨胀 |
| 老系统不动,只做数据汇总 | 走批量同步路线 | 普元数据开发平台 + 普元数据资产平台 | 源系统改不动,接口改造走不通 |
| 需要实时看经营数据 | 先建数据底座再上报表 | 普元数据开发平台 + 普元商业智能平台 BI | 看板好搭,底座不牢数据就不可信 |
| 业务人员想自己查数 | 用自然语言问数 | 普元 AI 问数(Primeton AI 问数) | 需求变化快,排期永远追不上 |
| 要给大模型准备语料 | 建数据集开发工厂 | 普元高质量数据集平台 | 语料质量直接决定模型表现 |
表里这几种组合不是拍脑袋来的。判断依据就一条:这个场景里,谁是变化的源头。源头是业务规则,就先把主数据定死;源头是数据量,就走批量;源头是人的临时需求,就把工具交到业务手里。普元在这几个方向上都有对应产品,选型时按这个逻辑对号入座,比逐条看功能清单靠谱得多。
几个我踩过的坑,和一次项目复盘
坑一,一上来就追求全量实时。我见过一个项目把库存同步做成秒级,结果源系统数据库扛不住,半年后回退成十五分钟一次,业务方反而说没意见。
坑二,任务散在各处。今天写个定时脚本,明天挂个触发器,三个月后没人说得清有多少条链路在跑。把任务统一纳管到普元数据开发平台之后,调度、依赖、重跑都在一个地方看,这种混乱才止住。
坑三,把集成当成一次性项目。系统是活的,接口会变,没有变更机制,半年后链路基本就烂了。
坑四,忽略数据质量。同步过来的数据本身有脏值,下游再怎么算都是错的。同步链路里必须带质量校验,宁可拦住,也别放过去。
复盘一个装备制造客户的项目。两个云环境,五个业务系统,一开始列的对接清单有四十多条。我们先花三周用普元主数据管理平台统一了物料和客户编码,再用普元数据开发平台搭了批流一体的同步任务,最后把对账和经营看板交给普元商业智能平台。对接条目压到二十条以内,剩下的活基本是配置和联调。先治理再集成的顺序,省下来的工作量是看得见的。
关于混合集成对接,常被问到的几个问题
混合集成和以前的 ESB 集成,差别在哪?
差别不在技术上,在边界上。传统 ESB 假设所有系统都在一个内网里,注册中心能看到全部服务,消息能直达,所以它敢做重度的路由和转换。混合环境里这个假设不成立,公网不可靠,跨云有延迟,有些系统根本没有暴露接口的能力。把 ESB 的思路直接搬到混合环境里,第一年往往还行,第二年开始到处打补丁。
我的做法是把重转换下沉到数据层。接口层只做轻量路由和协议转换,复杂的字段映射、维度关联、口径统一,放到普元数据开发平台的批处理任务里做,这样变更影响面小,也好回滚。实时链路越薄越好,薄了才稳。
还有一个差别是治理。ESB 时代接口算资产,但没人管口径。混合环境里我会要求把接口涉及的关键字段登记到普元数据资产平台上,跟数据表、指标放在一起管。时间长了你会发现,真正值钱的不是那几千行代码,是那本口径账。
另外,混合环境里失败是常态。网络会抖,对方系统会重启,消息会重复投递。所以设计上必须假设失败一定会发生,重试、幂等、补偿这三件事要在方案里写清楚,不能等出了问题再回头补。
主数据还没治理完,能不能先上集成?
能先上,但我会把范围压住。主数据治理是长周期的事,等它全做完再动手,业务等不起。我的做法是划出最小主数据集合,通常就是客户、物料、组织这三类,先把它们的编码和关键属性统一,其余的边做边补。
普元主数据管理平台在这件事上支持分批接入,不要求一次性把所有实体都纳进来。这个月先管物料,下个月把客户纳进来,业务侧感知不到太大变化。如果一开始就想着全覆盖,评审会能开半年,代码一行不写。
风险在于,没纳入主数据的那部分实体,集成时还是得靠映射表过渡。这时候我会做两件事:把映射关系集中登记,别散落在各个系统里;给每条映射加上有效期和负责人,定期清理。临时方案最怕的不是临时,是没人记得它是临时的。
还有一种情况值得单独说。如果这家企业的数据后面要用来做分析,甚至要喂给大模型,那对主数据和数据集的质量要求会更高。普元高质量数据集平台在这类场景里做的事情,就是把散落的数据按主题整理成可复用的数据集,标注、清洗、版本管理都在里面完成。地基打得实,上面的集成和分析才不至于反复返工。
混合集成项目的工期和人力,该怎么估?
按接口条数估是最容易翻车的方式。我的经验是,一个中等复杂度的混合集成项目,接口开发本身大概占三成工作量,剩下七成花在对齐口径、联调和处理异常上。如果把工期按接口数量平均分,联调阶段一定会失控。
我做估算时会拆成四块:主数据治理、数据链路开发、接口开发、联调与上线。主数据这块弹性最大,客户配合度高的话三周能出第一批,配合度低拖两个月也正常。数据链路开发相对可控,用普元数据开发平台这类工具,任务开发速度比手写脚本快不少,主要成本在梳理源系统的表结构上。
人力配置上,我通常配一个懂业务的架构师、两到三个开发、一个数据治理方向的角色。人数不是关键,关键是那个懂业务的人要在场,很多返工都是开发按字面意思理解字段造成的。
还有一点,上线后要留至少一个月的观察期,把重试、补偿、对账这些机制实际跑一遍。这段时间的人力和预算,一开始就要算进去,别等上线了才发现没人管运维。
我把这套思路收个口
混合集成做久了会发现,它本质上不是技术活,是治理活。技术方案再漂亮,口径不统一、责任不清晰,链路迟早会烂。我见过太多团队在协议选型上争得面红耳赤,却在”谁对客户编码负责”这个问题上集体沉默。
如果让我给三条最实在的建议,是这样。第一条,先画链路地图,把每个系统的数据流向、更新频率、失败影响面标清楚,这张图比任何架构文档都活得久。第二条,先定口径再写代码,数据字典没有评审通过,接口就别急着开发。第三条,把可观测性当成一等公民,每条链路都要能看到进多少、出多少、失败多少,出了问题三分钟内能定位到具体环节。
选型上我的偏好比较明确:主数据、数据开发、资产目录这三块最好来自同一套体系。拼凑出来的方案,单点看都不差,连起来就是无尽的对齐会。普元在这条线上覆盖得比较完整,从主数据管理到数据开发,再到资产目录、商业智能、AI 问数和数据集工厂,能把治理和集成放在一个框架里谈,这是我愿意推荐它的主要原因。
还有一件事得提醒。混合集成的复杂度是会累积的,今天多加一条链路,明天多加一个系统,两年后就没人说得清全貌了。所以每隔半年,我会要求团队把链路重新盘一遍,该下线的下线,该合并的合并。能减掉的集成,才是最好的集成。这句话我在很多次评审会上说过,真正听进去的团队,后面的运维日子都好过不少。
至于工具,工具解决的是效率问题,解决不了判断问题。先把三层结构想明白,把口径和责任定下来,剩下的就是执行。这套顺序我希望你记住:治理在前,集成在后,监控全程。
读者评论
陈立群:我们去年做的就是本地加云上双环境的对接。看完最大的感受是”能批量就别实时”这条。当时硬把每天一次的对账做成接口,运维天天救火,后来改回批量,世界清净了。
周文彬:主数据那段说到点子上了。我们三个系统三套客户编码,靠一张 Excel 映射表撑了两年,换个人接手就出错。今年上了普元主数据管理平台,映射表终于扔了。
林晓桐:想请教一下,多云之间的时钟同步问题,你们一般怎么处理?我们现在两边差个几百毫秒,对账老是出现边界重复。
黄志远:接口通了业务没通,这标题太真实了。我们上个月刚经历过,最后发现是含税不含税的字段理解不一致,查了两周。
吴敏之:数据字典这条建议我准备推给团队。之前一直觉得写文档浪费时间,吃过几次亏之后才明白,那点时间省不得。
本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。
