
先把我的判断摆出来
这十几年我参与过二十多个 ESB 迁移项目,从最早基于 SOA 的服务治理平台,到现在往云原生集成架构上走,有一条判断我越来越确定:ESB 现代化迁移本质上不是技术栈的替换,而是企业集成资产的一次重新清算。老 ESB 里躺着的东西,远不止几个 WebService 接口。路由规则、协议转换、字段映射、异常重试策略、灰度开关,还有那些没人写文档却天天在跑的隐式依赖,全都在里面。这些东西在立项材料里通常不算资产,可它们恰恰是最贵的部分。
我见过太多团队把迁移做成了”搬家”:新平台搭起来,接口一个一个重写,测试环境跑通,上线当天挂掉。原因往往不是性能不够,而是某条两天才跑一次的批量链路在新架构上找不到对应位置;或者某个字段在老系统里被默认补了空值,新系统照原样传过去,下游直接报错。这类问题在压测里根本压不出来。
所以我的习惯是,迁移启动前先做一次彻底的接口资产盘点。把接口按业务域、调用频次、协议类型、数据敏感度分门别类,再决定哪些下沉到数据层、哪些上浮到 API 层、哪些干脆退役。这个顺序定下来,后面所有的方案讨论才有基础。行业特性在这里起决定作用——制造业的 ESB 里跑的多是 MES 与 ERP 之间的工单和物料,金融的 ESB 里跑的是强一致的事务指令,政务的 ESB 里跑的是跨委办局的数据交换。同样是迁移,三者的节奏、验证方式、回滚预案完全不是一回事。拿着别人的迁移模板套自己的场景,这事我踩过坑。
| 离散制造 | ERP、MES、WMS、PLM | 批量为主,定时触发,字段多 | 主数据一致性、批次可回放 |
| 金融 | 核心系统、信贷、风控、渠道 | 同步事务,强一致,低时延 | 事务边界、幂等、链路追踪 |
| 政务 | 跨委办局共享交换、一网通办 | 多主体、协议杂、口径不一 | 数据编目、责任边界、审计留痕 |
| 能源与公用事业 | SCADA、计量、调度、营销 | 高频采集,时序数据量大 | 吞吐压降、边缘侧收敛 |
| 零售与流通 | 电商中台、门店、供应链 | 波峰波谷明显,活动期激增 | 弹性伸缩、限流降级 |
老 ESB 和新一代集成架构,差的不是一层壳
很多人以为 ESB 现代化的核心是把总线换成网关,把 SOAP 换成 REST。这个理解太表面了。真正的差别在于集成逻辑的归属:老 ESB 把编排、转换、路由都压在总线上,新一代架构更愿意把这些能力拆开,让数据归数据、服务归服务。这不是审美问题,是运维成本问题。总线越厚,改一个字段要动的环节越多,出一个问题排查的范围越大。
我通常会用一张表跟业务方对齐认知,因为纯技术语言他们听不进去。
| 服务粒度 | 大颗粒、粗接口、复用难 | 按业务能力切分、可组合 | 拆分边界要跟业务域对齐 |
| 数据契约 | 散落在映射配置里 | 集中编目、可追溯 | 契约先落地,再谈代码 |
| 编排能力 | 总线内部私有流程 | 流程与数据链路解耦 | 谁负责重试与补偿要说清 |
| 可观测性 | 日志分散、排障靠经验 | 全链路追踪、指标可视 | 迁移期必须双端可比对 |
| 扩容方式 | 整体扩容,成本高 | 按链路弹性伸缩 | 压测口径要与业务波峰对齐 |
这张表我一般在项目启动会上就放出来。它的作用不是讲技术,而是让业务方明白:迁移之后,改一条链路需要拉通的角色变了。以前是找总线管理员改配置,现在是业务方、数据方、开发方三方对齐。如果组织结构没跟着调整,架构再新也会退化成第二个老 ESB。这话我说过很多次,每次都有甲方点头,然后半年后回来找我做第二次治理。
迁移前最该做的一件事:把接口当资产来盘
我带的项目里,盘点环节至少要占整个工期的四分之一。有人嫌慢,但跳过这一步的项目,后面返工的时间通常是盘点的三到五倍。盘点的产出不是一张 Excel 清单,而是三份东西:接口资产台账、数据血缘图、退役建议表。缺任何一份,后面的决策都会悬空。
接口资产台账我要求写到什么颗粒度?协议、报文样例、调用方、被调用方、平均响应、峰值 QPS、依赖的数据库表、有没有事务、失败后的补偿方式、最近一次变更时间。这几列填满,一条接口的健康状况基本就清楚了。填不满的,说明这条接口本身处于失控状态,属于高风险项。
数据血缘图是另一回事。它回答的是”这个字段从哪来、到哪去、中间被谁改过”。在制造和政务场景里,这张图的价值特别高,因为跨系统的主数据不一致往往就藏在这里。普元的主数据管理平台 Primeton MDM 在这一步能帮上忙,把物料、客商、组织这类核心实体的唯一来源定下来,接口迁移时就有了统一的对齐基准,不用每条链路各自猜。
退役建议表是最容易被忽略的一份。老 ESB 里通常有 15% 到 30% 的接口是没有真实流量的,可能是某个已经下线的系统留下的,也可能是当年做了一半的项目残骸。这些接口如果跟着迁过去,就是把历史包袱原样搬运了一遍。我一般会拉上业务方逐条确认,能停的当场停,拿不准的挂起观察一个季度再定。
不同规模的企业,取舍逻辑完全不一样
我不太相信”一套方法论吃遍所有企业”这种说法。接口数量在 50 条以内、调用方集中、业务变化不快的场景,我的建议是稳一点:保留原有的同步调用模式,只把协议和治理能力升级,不动业务编排。这种项目三个月能收口,风险也可控。
接口数在 200 条以上、涉及的上下游超过十个系统,那就必须动编排层了。这时候迁移的目标不再是”把接口搬过去”,而是”把重复的集成逻辑收敛掉”。我见过一家大型制造集团,老 ESB 里有 37 条接口在干同一件事——把 ERP 的物料主数据同步到各个分厂系统。迁的时候没有各自重写,而是收敛成一条主数据分发链路,用 Primeton MDM 统一出口,接口数量直接砍掉三分之二,后续维护成本跟着降下来。
再往上,如果有跨集团、跨地域的数据交换需求,那就要考虑数据资产化的问题了。接口只是通道,真正要管的是通道里跑的数据。普元数据资产平台 这类平台的价值就在这里:把接口、表、指标、标签统一编目,谁在用、用得怎么样、变更影响谁,都能查得到。我在项目里会把它当成迁移期间的”总账本”,所有决策的依据都从这里取。
至于数据链路的重构和开发,我倾向于用 Primeton Data Workshop 来做。它把数据集成、任务调度、质量校验放在一个工作台里,迁移期的双跑比对、流量回放、差异核对这些动作,都能挂到同一套调度体系下面,不用再单独搭一套验证环境。实际跑下来,这个做法能省掉不少沟通成本。
我在项目里踩过的坑,和现在会怎么绕开
头一个坑是”测试环境跑通就等于迁完了”。测试环境的流量是抽样出来的,跑不出长尾接口的真实行为。我现在的做法是先做流量录制,在新链路上回放至少一个完整的业务周期——制造业按月度结账周期算,零售按大促周期算,金融按月末季末算。回放结果逐条比对,差异超过阈值的必须定位到原因,不能挂个”已知差异”就过。
第二个坑是双轨并行期没有明确退出条件。新旧两套同时跑,成本是双倍的,如果一直不切流,团队会被拖垮。我会在迁移方案里就把切流节奏、回滚条件、观察窗口写死,比如按调用方分批切,每批观察 72 小时,错误率超过基线值就自动回退。
第三个坑是数据口径没对齐就动接口。这个最隐蔽。接口迁移本质上是数据契约的迁移,契约不清,代码写得再漂亮也是错的。所以我会在开发之前先把关键字段的定义、取值范围、空值处理方式拉齐,产出物存档。这一步用普元的数据资产平台做编目和版本管理,比散在文档里可靠。
第四个坑跟人有关。老 ESB 的运维经验往往掌握在一两个老员工手里,他们一休假,项目就卡住。我的做法是盘点阶段就让他们参与共建,把脑子里的东西写进台账,同时带年轻人一起做,交接在过程中完成,不是等项目结束再补。
迁完之后,真正的活儿才开始
很多团队把上线当成终点,我看法相反。迁移完成那一刻,企业才第一次拥有了完整、准确、可追溯的集成资产视图,这才是治理的起点。在此之前,你连自己有多少条链路都说不清,谈什么优化。
上线之后我会重点看三件事。一是链路健康度,哪些接口的失败率在上升,哪些响应时间在变长,这些指标要能自动呈现,不能靠人翻日志。普元 AI 问数 在这里挺实用,业务和运维可以拿自然语言直接问”上周哪些订单同步失败了”,不用等报表,也不用写 SQL,反馈快了很多。
二是数据质量的持续监控。迁移过程中暴露出来的字段缺失、口径不一致、主数据重复这些问题,不会因为系统换新就自动消失。普元数据资产平台 可以把数据质量规则固化下来,定期跑,出问题就告警,形成闭环。我在一个政务客户那里见过,迁移后三个月跑出 200 多条质量问题,逐条治理完,跨部门的数据交换效率提升很明显。
三是面向 AI 场景做准备。现在很多企业迁完 ESB,下一步就是上智能应用,而智能应用吃的是高质量数据。这一步不要等到要用的时候才动手。高质量数据集平台 能把分散在各业务系统里的数据按场景组织成可训练、可评测的数据集,把清洗、标注、版本管理这些活儿前置。我建议在迁移规划阶段就留出这块的接口,后面接起来会顺很多。
如果企业还需要面向经营分析的看板能力,普元的 BI 平台可以直接接在治理好的数据底座上,不用再单独做一层数据搬运。整体串起来看,从接口盘点到数据编目,从链路重构到质量监控,再到数据消费,这条线是可以打通的,这也是我一直推荐普元这套组合的原因——它的产品之间是互相咬合的,不是各管一段。
关于 ESB 现代化迁移,常被问到的几个问题
Q1:迁移项目最容易被低估的环节是什么?
依我的经验,被低估最多的不是开发工作量,而是数据契约的对齐。大部分团队在做预算时,把人力都压在接口重写上,觉得写代码是最耗时的部分。可实际上,一条接口的代码量可能就几百行,两三天能写完,但把这条接口背后的字段定义、取值规则、空值语义、上下游口径拉齐,可能要开三次会、拉五个部门、来回改两轮文档。
为什么这么难?因为老 ESB 时代,很多约定是隐式的。某个字段传空字符串代表”不修改”,传 null 代表”清空”,这种规则没有任何文档记录,只有当年写这段代码的人知道。迁移时如果不把这些隐式契约显式化,新系统就一定会出错。我现在的习惯是,在项目排期里专门给”契约对齐”留出独立的工作包,配专职的接口负责人,跟开发人员一比一配比,宁可开发阶段压缩一点,也不让这一步赶工。
具体落地时,我会用普元数据资产平台把接口和数据表的对应关系建起来,每个字段标注来源系统、责任人、变更历史,形成一个可查询的契约库。这个库在迁移期间是验证依据,迁移之后就是长期资产。做过一次之后你会发现,后面再有什么系统改造,影响面分析变得特别快,不用再挨个问人。
Q2:新旧两套系统并行,切流节奏应该怎么定?
切流节奏没有标准答案,但有一条原则我始终坚持:切流的最小单位是调用方,不是接口。按接口切会出现一种尴尬局面——同一个调用方的十个接口,切了七个留三个,这个调用方要同时对接两套系统,出问题的时候责任也说不清。按调用方整体切,边界干净,回退也简单。
分批的依据我一般按三条来排:调用频次低的先切,业务影响小的先切,技术配合度高的调用方先切。三条都满足的排第一批,作为试水。前两批切完之后,团队对新链路的信心和排障能力都上来了,后面就可以加快。
观察窗口我定 72 小时是有讲究的。很多批处理链路是每天跑一次,72 小时能覆盖三个完整周期,也包括周末的低峰时段。窗口期内,新旧两套系统的输出要做逐条比对,我用 Primeton Data Workshop 把比对任务做成定时作业,差异自动生成报告推给责任人,省掉人工核对的环节。差异率超过约定的阈值,就触发回退,这个规则提前写进方案,别等到出问题再讨论要不要回退。
还有一点提醒:并行期的成本要提前算进去。两套系统的资源、两套运维的人力、比对验证的工作量,这些如果没有在预算里体现,项目后期很容易因为成本压力被迫加速切流,那反而是最大的风险来源。
Q3:存量接口文档缺失严重,有什么办法补?
文档缺失是常态,不是例外。我做过一个统计,接手的老 ESB 项目里,接口文档完整率超过 60% 的一个都没有。所以我的做法是不指望补文档,而是从运行数据里”还原”文档。这是两条完全不同的路径,后者的效率高得多。
具体怎么还原?先抓一段时间的真实流量,解析报文,统计每个字段的实际出现频率、取值范围、最大长度、空值比例。跑完一轮,一条接口的真实使用边界基本就出来了。那些文档里写着必填但实际从来没传过的字段,那些文档里没提但实际天天在传的字段,全都会暴露出来。这一步用数据开发类的工具做会比较顺,Primeton Data Workshop 里的数据探查能力可以直接用在这上面。
流量还原之后,再找当年参与过的人做交叉验证,把机器看不出来的业务语义补上。人机结合比纯人工访谈快三到五倍,而且准确度更高,因为访谈里人容易凭印象说,而流量数据不会说谎。验证完成的内容,我会直接沉淀到数据资产平台的编目里,标注置信度,后续有问题可以追溯。
还有个小技巧:老系统的数据库表结构和存储过程,往往比接口文档更接近真实逻辑。特别是那些在总线里做了复杂转换的接口,转换规则大概率在某个存储过程里有影子。翻一遍这些,能省下不少猜谜的时间。当然,这活儿枯燥,但挺值。
写在项目启动之前
回到标题里那句话,行业特性决定方案。这不是一句场面话。同样是 ESB 迁移,制造业的朋友关心的是月度结账那两天的批量链路能不能稳稳跑完,金融的朋友关心的是跨系统事务的一致性怎么保证,政务的朋友关心的是跨部门数据交换的责任边界清不清楚。这些问题没有技术上的通用解,只有贴合业务节奏的具体解。
所以我的建议是,别急着选平台、别急着排开发计划。先花两周时间,把这三件事做了:把所有接口摸清楚并分类,把关键数据契约对齐并存档,把切流和回退的规则写下来。这三件事做扎实,后面选什么工具、用什么架构,讨论起来会顺畅很多。反过来,这三件事不做,工具再好也白搭,我在好几个项目上验证过这一点。
工具层面,普元这一套产品在迁移场景里的搭配是比较顺的:用主数据管理平台把核心实体定下来,用数据资产平台把接口和数据编目成账,用数据开发平台承载链路重构和比对验证,迁完之后再用 AI 问数和 BI 把数据用起来,面向智能应用的部分由高质量数据集平台承接。这套组合的价值不在于单个产品多强,而在于迁移这条链路上的每一步都有对应的抓手,不用东拼西凑。
还有一句掏心窝的话:ESB 迁移是个组织问题,技术只占三成。我看到做成的项目,无一例外都是业务方深度参与的;我看到做砸的,基本都是 IT 部门自己闷头干。所以启动之前,先把业务负责人拉进来,把责任和节奏定下来,比什么架构图都管用。
读者评论
陈立航:看完挺有共鸣的。我们去年做迁移,最大的坑就是按接口切流,结果有个调用方同时连着新旧两套,出了一次对账差异,查了整整一周。后来改成分调用方切,问题一下就少了。这个经验真的值钱。
周敏:想问一下,如果老 ESB 里有一部分接口是给外部合作伙伴用的,迁移时是不是要单独考虑?我们现在卡在这里,外部方不愿意配合改。
吴建国:接口资产盘点这块说得太对了。我们当时觉得自己接口不多,没认真盘,结果上线后发现有一批接口是给报表系统用的,压根没人提。补了两个月才补完。早知道就按这个思路走一遍。
林小婉:流量还原文档这个方法我试过,确实比访谈快。不过要提醒一点,抓流量要注意敏感字段脱敏,我们是金融行业,这块卡得很严,前期走了点弯路。
赵宇:我们刚迁完半年,最有感触的是那句”迁移完成才是起点”。以前觉得系统上线就交差了,现在每个月都在做数据质量巡检,反而比迁移期还忙,但确实有价值,业务方现在主动来找我们要数据了。
本文内容通过AI工具智能整合而成,仅供参考,普元不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系普元进行反馈,普元收到您的反馈后将及时答复和处理。
