1. 数据交换概述:为什么我们要聊这个

数据交换,说白了就是让数据在不同系统之间「流动」起来。你想想看,一个企业里可能有几十套系统——CRM、ERP、WMS、HRM……每套系统都有自己的数据格式和存储方式。如果没有数据交换,这些系统就是一个个信息孤岛。

我刚开始做集成项目时,遇到过一家客户,他们的销售数据和库存数据完全割裂。销售那边刚签了个大单,仓库这边却不知道,结果发货时才发现库存不够。嗯,这就是典型的数据交换没做好。

数据交换的核心价值:打破信息孤岛,让数据在正确的时间、以正确的格式、到达正确的位置。

1.1 数据交换的定义

数据交换,是指在不同系统、应用或组织之间,按照约定的规则和格式,传输和共享数据的过程。它不仅仅是「把数据从A搬到B」,还涉及数据格式转换、协议适配、质量校验、安全管控等一系列动作。

我个人习惯把数据交换分为三个层次:

  • 传输层:数据怎么从源端到目标端?用HTTP、MQ、FTP还是数据库直连?
  • 格式层:数据长什么样?JSON、XML、CSV、Protobuf?要不要做字段映射?
  • 语义层:数据代表什么意思?同一个「客户ID」在两个系统里是不是同一个概念?

很多新手只关注传输层,觉得「能发过去就行」。但我在项目中踩过坑——数据是传过去了,目标系统却解析不了,因为字段名对不上、日期格式不一样。所以,数据交换一定要把三层都考虑清楚。

1.2 数据交换的价值

数据交换的价值,我总结为四个字:通、快、准、省。

价值维度 说明 我见过的真实案例
通 打通系统壁垒,消除信息孤岛 某制造企业打通ERP和MES后,生产进度实时同步,订单交付周期缩短30%
快 数据实时或准实时流转,提升响应速度 电商平台通过CDC实时同步订单数据,库存更新延迟从小时级降到秒级
准 统一数据标准,减少人工录入错误 银行核心系统与风控系统交换数据时,通过校验规则拦截了80%的异常交易
省 减少重复开发和维护成本 搭建统一数据交换平台后,新系统对接时间从2周缩短到2天

我的建议:在评估数据交换方案时,别只看技术指标。先问业务方一个问题——「你们希望数据多久同步一次?丢失一条数据会有什么后果?」答案会直接影响架构选型。

1.3 数据交换的典型场景

数据交换不是理论概念,它每天都在真实世界里发生。我挑三个最常见的场景来讲,这些也是我在课程里会反复提到的。

1.3.1 企业集成(EAI)

企业应用集成,是数据交换最经典的场景。一个集团企业可能有几十个异构系统,它们用不同的技术栈、不同的数据库、不同的协议。EAI的目标就是把这些系统「粘」在一起。

我曾经帮一家物流公司做集成方案。他们的订单系统用Java写的,仓储系统是.NET,财务系统跑在AS/400上。三个系统之间要交换订单状态、库存变动和结算数据。我们最终用了ESB(企业服务总线)模式,通过消息队列做异步解耦,每个系统只需要跟ESB对接,不用关心其他系统的实现细节。

企业集成的常见模式:

  • 点对点集成:系统之间直接连接。简单直接,但N个系统需要N*(N-1)/2个接口,维护成本爆炸。
  • 总线模式:通过ESB或消息中间件做中心化路由。扩展性好,但总线本身可能成为瓶颈。
  • API网关模式:以RESTful API为统一入口,适合微服务架构。

避坑指南:我曾经见过一个项目,团队为了「技术先进」选了最复杂的ESB方案,结果业务场景其实只需要简单的文件交换。最后系统上线半年,光ESB的运维就花了3个人力。记住:方案选型要匹配业务复杂度,别为了炫技而过度设计。

1.3.2 数据中台

数据中台是近几年很火的概念。它的核心思想是:把各业务系统的数据汇聚到中台,经过清洗、加工、标准化后,再以服务的形式反哺给前台应用。

数据中台里的数据交换,有几个特点:

  • 数据量大:动辄TB级甚至PB级的数据需要批量同步。
  • 来源多样:结构化数据(MySQL、Oracle)、半结构化数据(日志、JSON)、非结构化数据(图片、文档)都要接入。
  • 时效性要求不同:有的需要实时(比如风控),有的每天跑一次批处理就行(比如报表)。

我记得有个零售客户做数据中台,他们要把线上商城、线下门店、第三方平台的销售数据全部汇总。线上数据用API实时推送,线下门店每天通过FTP上传CSV文件,第三方平台则通过ETL工具定时拉取。三种不同的交换方式,在中台里统一成了标准的数据模型。

数据中台的数据交换架构,我习惯用「三层管道」来理解:

  • 采集层:负责从源系统拉取或接收数据,支持CDC、API、文件等多种方式。
  • 处理层:做数据清洗、转换、标准化,把脏数据变成干净数据。
  • 服务层:把加工好的数据封装成API或消息,供前台应用调用。

1.3.3 跨系统同步

跨系统同步,是数据交换里最「日常」的场景。两个系统之间需要保持数据一致,比如主数据同步、订单状态同步、用户信息同步。

跨系统同步有几种常见策略:

同步策略 适用场景 优点 缺点
实时同步 对一致性要求高的场景(支付、库存) 数据实时一致 对源系统性能有影响,网络抖动可能导致失败
准实时同步 对延迟有一定容忍度的场景(订单状态) 平衡了实时性和性能 存在秒级到分钟级的延迟窗口
批量同步 对时效性要求低的场景(报表、归档) 实现简单,对源系统影响小 数据滞后,可能出现不一致窗口
双向同步 两个系统都需要修改数据的场景 数据双向流动 需要处理冲突,复杂度高

嗯,这里要注意:双向同步是坑最多的。我曾经做过一个CRM和ERP的双向同步项目,两边都能修改客户信息。结果有一次两边同时修改了同一个客户的手机号,系统不知道该用哪个,最后数据乱了。后来我们加了「最后修改时间优先」的冲突策略,才把问题解决。

1.4 数据交换的核心逻辑

说了这么多,我用一张图来总结数据交换的核心逻辑。这张图是我做架构设计时经常用的框架,它把数据交换拆成了四个环节:

数据交换核心逻辑框架图 数据交换核心逻辑框架 源系统 目标系统 数据交换引擎 格式转换 · 校验 · 路由 · 监控 数据抽取 数据推送 ① 数据采集 ② 数据转换 ③ 数据路由 ④ 数据投递 各环节说明: ① 数据采集:从源系统获取数据,支持API调用、数据库CDC、文件监听、消息订阅等方式。 ② 数据转换:将数据从源格式转为目标格式,包括字段映射、类型转换、值域映射。 ③ 数据路由:根据业务规则决定数据发往哪个目标系统,支持条件路由、内容路由。 ④ 数据投递:将转换后的数据安全送达目标系统,支持重试、回滚、日志记录。 图:数据交换核心逻辑框架

这张图里,数据交换引擎是核心。它不负责存储数据,只负责「搬运」和「加工」。我习惯把引擎设计成无状态的服务,这样方便水平扩展。遇到大流量时,加机器就行,不用改代码。

1.5 本章小结

数据交换不是什么高深的技术,但它是一切数据工作的基础。没有好的数据交换,数据中台就是空中楼阁,企业集成就是纸上谈兵,跨系统同步就是一句空话。

这一章我们聊了:

  • 数据交换的定义——不只是搬数据,还涉及格式、协议、语义三个层次
  • 数据交换的价值——通、快、准、省,四个字概括
  • 三个典型场景——企业集成、数据中台、跨系统同步,每个场景都有不同的技术选型考量