企业数据集成模式有哪些?常见模式对比分析
企业数据集成模式是在系统之间移动和协调数据的可复用架构解决方案,而 Hohpe 和 Woolf 的经典目录(《企业集成模式》,2003 年)记录了大约 65 个命名模式,涵盖消息传递、路由、转换和端点。本对比涵盖主要模式家族、它们的权衡取舍,以及如何选择。
企业数据集成模式详解
从实践角度理解企业数据集成模式,关键在于认识到大多数集成工作并非全新问题。同样的难题反复出现:系统使用不同的模式(schema)、运行在不同的时钟节奏上、独立发生故障,并且需要被协调一致。模式为架构师提供了共享词汇,使设计评审可以直接说“这里用 claim check,那里用 routing slip”,而不必从零重新发明解决方案。
模式文献分为两大传统。消息传递传统根植于企业集成模式(EIP)目录,将集成视为端点之间异步的消息流动。数据传统以 Kimball 式维度建模、Data Vault 和现代 ELT 工具为代表,将集成视为数据集的移动与重塑。大多数真实世界的架构混合了这两种传统:事件流馈入数据仓库,而规范模型负责协调二者。
模式不是产品。一个消息代理实现了多个模式;一个反向 ETL 工具实现了另一些模式。模式是契约,产品是它的实现。这一区分很重要,因为它让你的架构在供应商更替时仍保持可移植性。
什么是企业数据集成模式
企业数据集成模式是命名的、可复用的设计,用于解决连接异构系统时反复出现的问题。它们描述解决方案的形态(数据如何被路由、转换、缓冲、去重和协调),而不依赖于任何特定技术。
主要模式家族值得明确列出:
Related: — The fully pipeline that just keeps running.
- 消息传递模型:消息通道、消息路由器、消息转换器、消息代理、发布-订阅、点对点。
- 路由模型:基于内容的路由器、收件人列表、拆分器、聚合器、重排序器、路由单、流程管理器。
- 转换模型:消息转换器、信封包装器、内容增强器、认领校验、规范化器。
- 端点模型:轮询消费者、事件消费者、幂等接收器、事务性客户端、并发消费者。
- 数据移动模型:ETL、ELT、变更数据捕获(CDC)、批量同步、流式复制、反向 ETL。
- 语义模型:规范数据模型、参考数据管理、数据虚拟化、实体解析。
规范企业数据模型位于这些之上。它定义了共享词汇——客户、订单、产品、地点——每个集成都映射其中。Cloud Information Model 是一个开源规范模型示例,旨在跨云和本地系统实现应用无关。
企业数据集成模式的含义
企业数据集成模式在最深层次上关乎解耦。每个模式都是一种手段,用于在两个系统之间插入稳定接口,否则它们会因彼此的模式、时序和故障模式而紧密耦合。
三种解耦形式反复出现:
If you are shopping: — for hybrid cloud-to-on-prem integration.
- 空间解耦——发送方不知道谁在接收消息。发布-订阅和消息通道实现了这一点。
- 时间解耦——发送方不等待接收方。队列和持久日志提供了这一点。
- 模式解耦——双方都不知道对方的内部格式。消息转换器和规范模型提供了这一点。
第三种最为困难,也最有价值。模式解耦正是规范模型存在的原因,也是 JSON-LD、GraphQL 和模式注册表发挥作用的地方。规范模型加上转换层意味着新增一个系统只需一次映射,而不是对每个现有系统做 N 次映射。
企业数据集成模式的优势
企业数据集成模型的好处是随时间累积的,而非立竿见影。用模板构建的第一个集成往往比快速的点对点脚本更慢。第十个则快得多,因为模型已经回答了那些困难的问题。
具体优势包括:
- 复用:一个路由模式解决一次,便可适用于后续每条路由。
- 可审查性:命名的模型让架构决策对新工程师和审计人员来说可读。
- 故障隔离:幂等接收器和死信通道等模式让故障处理变得显式,而非偶然。
- 供应商可移植性:模型驱动的设计能在工具迁移中存活,因为契约不绑定于产品。
- 成本控制:认领校验等模式避免让大负载流经昂贵的消息总线。
企业数据集成模式的优缺点
| 模式家族 | 主要优势 | 主要成本 | 最佳适用场景 |
|---|---|---|---|
| 点对点 | 简单、构建快速 | O(N²) 连接、脆弱 | 两个系统、模式稳定 |
| 中心辐射 / 代理 | 集中控制、连接更少 | 中心成为瓶颈和单点故障 | 多系统、中等流量 |
| 发布-订阅 | 松耦合、扇出 | 更难追踪、排序挑战 | 事件驱动、多消费者 |
| ETL(批量) | 工具成熟、易于推理 | 延迟、加载窗口 | 分析、夜间协调 |
| ELT | 利用仓库计算能力 | 需要强大的仓库治理 | 云分析 |
| CDC / 流式 | 近实时、对源系统影响小 | 运维复杂性、模式漂移 | 运营同步、低延迟需求 |
| 规范模型 | 模式解耦、复用 | 前期建模投入、治理 | 多系统、长期项目 |
| 数据虚拟化 | 无数据重复 | 查询性能、依赖源可用性 | 联邦报表 |
诚实的权衡是:每个模型都以简单性换取特定能力。点对点简单,但无法演进。规范模型可扩展,但建立成本高昂。没有哪个模型能两者兼得。
企业数据集成模式是否值得
当系统数量、集成生命周期或故障成本超过某个阈值时,企业数据集成模型就值得投入。对于连接两个内部工具的单个脚本,模板是额外负担。对于一个在五年内连接十几个 SaaS 应用、一个 ERP、一个数据仓库和一个客户门户的项目,模型意味着可维护平台与不可维护乱麻之间的差别。
一个实用的决策启发式:数一数集成数量。低于约五个时,点对点通常足够。在五到二十个之间时,采用代理和规范模型。超过二十个时,投资于治理、模式注册表和正式的模式文档。这些阈值是经验法则,不是定律:受监管行业应更早采用治理。
企业数据集成模式的问题
企业数据集成模式的问题真实存在,值得在投入之前明确指出。
- 过度工程:对琐碎问题套用重型模型,只会增加成本而无任何收益。
- 规范模型漂移:共享模型逐渐偏离系统的实际需求,映射中不断累积例外。
- 模式演进:源系统在无预警的情况下变更;没有注册表或版本管理,集成会静默中断。
- 身份解析:同一个客户在三个系统上以三个标识符存在,没有主数据策略,任何模型都无法解决这个问题。
- 可观测性缺口:异步和解耦的系统比同步调用更难追踪。
- 治理成本:规范模型需要持续投入,而非一次性项目。
最常见的失败不是选错了模型,而是未能治理所选模型。没有负责人的规范模型会在一年内瓦解。
语义层与 API 层模式:JSON-LD 和 GraphQL
现代集成越来越多地发生在语义层和 API 层,而不仅仅是消息层。有两组模型值得特别关注,因为它们在大多数模型目录中覆盖不足。它们代表了关键的企业数据集成模式。
面向企业词汇表的 json-ld 上下文设计模式
面向企业词汇表的 JSON-LD 上下文设计模式解决了为 JSON 文档赋予全局无歧义含义的问题。@context 将短术语映射到 IRI,因此 "customerId" 解析为一个特定的、可解引用的定义,而不是一个在每个系统中含义不同的字符串。
一份面向企业用途的实用 json-ld 上下文设计模式清单:
- 内联上下文:
@context内嵌于每个文档中。简单,但重复且难以更新。 - 引用上下文:
@context是指向托管文档的 URL。集中化、可缓存且可版本化。 - 作用域上下文:嵌套对象携带自己的
@context,为该子树覆盖父级。 - 上下文继承:基础上下文定义通用术语,领域上下文对其进行扩展。这就是面向企业数据模型的 JSON-LD 上下文设计模式:核心词汇加上产品、订单和参与方扩展。
- 术语别名:在迁移期间将多个遗留字段名映射到一个规范术语。
- 类型强制:声明某个术语始终是日期、IRI 或数字,在解析时消除任何歧义。
面向企业产品数据的 json-ld 上下文模式
面向企业产品数据部署的 JSON-LD 上下文模式通常将 schema.org 术语与内部扩展叠加。产品上下文可以将 gtin、sku 和 mpn 别名到规范标识符,将价格强制为货币类型的值,并从基础商务词汇继承。这使得目录、市场和仓库都能描述同一产品,而无需两两定制映射。
json-ld 上下文 URI 设计模式
JSON-LD 上下文 URI 设计模式很重要,因为上下文 URL 是一份长期契约。一个好的做法是对路径进行版本化(/context/v2/commerce.jsonld),让旧版本无限期可解析,用适当的缓存头提供服务,并且绝不原地修改已发布的上下文。一个含义发生变化的上下文 URL 会静默地中断每一个消费者。
json-ld 上下文注册表设计模式
JSON-LD 上下文注册表设计模式将上下文视为受治理的制品。注册表存储每个上下文、其版本历史、所属团队及其依赖关系。这些注册表自然与流式管道中用于 Avro、Protobuf 和 JSON Schema 的模式注册表配对,为消息模式和语义上下文提供统一的治理界面。
json-ld 上下文设计反模式
需要避免的 JSON-LD 上下文设计反模式:
- 可变的已发布上下文:更改一个活跃的上下文 URL 会在无预警的情况下破坏消费者。
- 上下文蔓延:数十个近乎重复的上下文,没有注册表或归属。
- 过度嵌套——深度作用域上下文,令人无法推理。
- 隐式默认值——依赖未文档化的术语含义,而非显式 IRI。
- 关注点混杂——一个上下文试图同时服务产品、参与方和财务词汇。
面向企业应用的 graphql 查询模式
面向企业应用的 GraphQL 查询模式针对 API 集成层。相关模式包括持久化查询(固定已批准的查询以减少负载和攻击面)、批处理与 dataloader 模式(避免对后端服务产生 N+1 解析)、面向大型稳定结果集的基于游标的分页,以及联邦(federation),即多个团队拥有由网关统一的子图。联邦实际上是在 API 层表达的规范模型模式。
规范企业数据模型多对多模式
规范企业数据模型多对多模式处理的是实体以复杂方式交互这一现实。一个客户有多个地址;一个产品属于多个类别;一个订单引用多个产品。它们的建模需要具有自身身份和生命周期的显式连接实体,而非嵌入式数组。在规范模型中,连接实体往往是最重要的对象,因为它承载关系自身的属性:生效日期、角色和状态。在规范模型中正确处理多对多,正是防止映射层累积特例的关键。
如何选择:一份标准清单
在企业数据集成模型之间做选择是一项决策,而非偏好。根据以下标准评估候选方案:
- 延迟要求:批量、微批量还是流式。
- 耦合容忍度——当一个系统变更时,有多少系统必须随之变更。
- 故障语义:至少一次投递可接受,还是要求恰好一次投递?
- 数据量与负载大小:你需要认领校验还是内容增强?
- 模式波动性:源系统多久变更一次,是否有注册表?
- 治理能力——谁拥有规范模型和上下文?
- 可逆性——日后更换模型是否困难?
根据这些标准为候选方案打分,并优先选择满足严格约束的最简单模型。复杂性必须由需求赢得,而非默认采用。
关键要点
- 企业数据集成模式是可重用的设计,而不是产品;模式是契约,工具是一种实现。
- EIP 目录(Hohpe 和 Woolf,2003)仍然是消息传递模式的参考,而 ETL/ELT、CDC 和规范模型则覆盖数据层。
- 每种模式都以简单性换取特定功能;没有普遍适用的最佳模式。
- 规范模型和 JSON-LD 上下文提供模式解耦,这是价值最高且最难的解耦形式。这包括利用企业数据模型的 json-ld 上下文设计模式、企业词汇表的 json-ld 上下文设计模式以及针对企业产品数据的特定 json-ld 上下文模式。对于那些寻求企业应用程序的 json-ld 上下文设计模式列表或 graphql 查询模式的人来说,这些工具进一步实现了解耦。
- 治理,而不是模式选择,是最常见的失败点——无主的规范模型会衰退。
- 随着集成数量的增加,采用更重的模式;低于大约五个集成,临时集成通常就足够了。
资料来源和进一步阅读
- 数据集成 — 维基百科:数据集成是组合、共享或同步多个来源的数据以为用户提供统一视图的过程。有各种各样的…
- 数据模型 — 维基百科:数据模型是一种抽象模型,它组织数据元素并标准化它们之间的关系以及与现实世界实体的属性的关系。为了…
- 企业数据建模 - 维基百科:企业数据建模或企业数据建模 (EDM) 是创建企业或公司使用的数据的图形模型的实践。典型输出…
常见问题
什么是企业数据集成模式?
企业数据集成模式是用于连接异构系统的可重用架构解决方案,涵盖数据的路由、转换、缓冲和协调方式。它们涵盖了 EIP 目录中的消息传递模型、ETL 和 CDC 等数据移动模型以及规范模型等语义模型。价值在于共享词汇和针对重复出现的问题的经过验证的解决方案。
企业数据集成模式有哪些好处?
好处包括跨集成的重用、可审查的架构决策、显式的故障处理、供应商可移植性以及通过权利主张验证等模型进行的成本控制。好处加起来:第一个模板化集成比脚本慢,但第十个集成要快得多,因为困难的问题已经得到解答。
企业数据集成模式的优缺点是什么?
优点是重用、清晰、故障隔离和可移植性。缺点是初始建模成本、治理开销以及微不足道的过度设计问题的风险。每个模型都以简单性换取功能,因此正确的选择取决于延迟、耦合容限以及需要互操作的系统数量。
企业数据集成模式值得吗?
当集成数量、生命周期或故障成本超过阈值时,模型就有价值。在集成数量低于五个时,临时方法通常是合适的。二十年后,治理、模式注册表和模型的正式文档变得至关重要。受监管的行业应该比这些经验法则建议的更早采取治理措施。
企业数据集成模式解决并创建了哪些问题?
模式解决了模式不匹配、时序差异和故障隔离的问题。它们带来了过度设计、规范模型漂移、模式演进中断、身份解析差距和可观察性问题的风险。最常见的失败不是选择了错误的模型,而是未能随着时间的推移管理所选择的模型。
JSON-LD 和 GraphQL 如何适应集成模式?
JSON-LD 上下文模型通过为 JSON 术语提供全局明确的 IRI 来提供语义解耦,并具有用于治理的继承、注册表和 URI 版本模型。持久查询、数据加载器批处理和联合等 GraphQL 模式解决了 API 层的问题。联合(Federation)实际上是一种规范模型模式,表现为统一的API网关。
进一步阅读
- 企业集成模式 — Gregor Hohpe 和 Bobby Woolf 的规范目录:https://www.enterpriseintegrationpatterns.com/
- 企业集成模型(维基百科演示):https://en.wikipedia.org/wiki/Enterprise_Integration_Patterns
- JSON-LD 1.1 规范,W3C 推荐:https://www.w3.org/TR/json-ld11/
- GraphQL 规范:https://spec.graphql.org/
- 云信息模型 — 用于云和本地互操作性的开源规范模型:https://cloudinformationmodel.org/
Frequently asked questions
什么是企业数据集成模式?
企业数据集成模式是用于连接异构系统的可重用架构解决方案,涵盖数据的路由、转换、缓冲和协调方式。它们涵盖了 EIP 目录中的消息传递模型、ETL 和 CDC 等数据移动模型以及规范模型等语义模型。价值在于共享词汇和针对重复出现的问题的经过验证的解决方案。
企业数据集成模式有哪些好处?
好处包括跨集成的重用、可审查的架构决策、显式的故障处理、供应商可移植性以及通过索赔验证等模型进行的成本控制。好处加起来:第一个模板化集成比脚本慢,但第十个集成要快得多,因为困难的问题已经得到解答。
企业数据集成模式的优缺点是什么?
优点是重用、清晰、故障隔离和可移植性。缺点是初始建模成本、治理开销以及微不足道的过度设计问题的风险。每个模型都以简单性换取功能,因此正确的选择取决于延迟、耦合容限以及需要互操作的系统数量。
企业数据集成模式值得吗?
当集成数量、生命周期或故障成本超过阈值时,模型就有价值。下面大约有五种集成,临时方法通常是合适的。二十年后,治理、模式注册表和模型的正式文档变得至关重要。受监管的行业应该比这些经验法则建议的更早采取治理措施。
企业数据集成模式解决并产生了哪些问题?
模式解决了架构不匹配、时序差异和故障隔离的问题。它们带来了过度工程、规范模型漂移、破坏模式演化、身份解析差距和可观察性问题的风险。最常见的失败不是选择了错误的模型,而是未能随着时间的推移管理所选择的模型。
JSON-LD 和 GraphQL 如何适应集成模式?
JSON-LD 上下文模型通过为 JSON 术语提供全局明确的 IRI 来提供语义解耦,并具有用于治理的继承、注册表和 URI 版本模型。持久查询、数据加载器批处理和联合等 GraphQL 模式解决了 API 层的问题。联邦实际上是一种规范模型模式,表现为统一的API网关。进一步阅读 - 企业集成模式 - Gregor Hohpe 和 Bobby Woolf 的规范目录:https://www.enterpriseintegrationpatterns.com/ - 企业集成模型(维基百科演示):https://en.wikipedia.org/wiki/Enter
See Matillion transform data inside your warehouse
Push-down ELT built for cloud data warehouses