Jump to section

什么是变更数据捕获(CDC)?

复制 URL

变更数据捕获是一种经过验证的数据集成模式,用于跟踪数据更改,并向必须响应这些更改的其他系统和服务发出警报。变更数据捕获有助于确保所有依赖数据的系统数据同步,功能正常。

数据是所有业务的基础。但是,数据不断的更新和更改也带来了挑战,而企业必须适应这些更改。无论是交易、订单、库存,还是客户,掌握最新的实时数据对保持业务稳定运行至关重要。当采购订单更新、有新客户加入或收到付款时,整个企业的各个应用都需要知晓相关信息才能完成关键业务流程。

更新源数据库(通常是关系数据库,如 Oracle、Microsoft SQL Server、Postgres 或 mysql)时,您可能需要更新多个相关资源,如缓存和搜索索引。一种简单的办法是升级应用,来同时更新这些资源。然而,将更改后的数据一致地写入多个目标位置会带来许多挑战和协调方面的消耗。CDC 可以避免双重写入等问题,帮助您准确地同时更新资源。

CDC 可以通过跟踪数据库源表(分为插入、更新和删除事件)中的行级更改,向依赖相同数据的任何其他系统或服务发送更改通知。更改通知的发送顺序与原始数据库中的更改顺序相同。如此一来,CDC 可以确保某个数据集的所有相关方都知晓准确的更改信息,并做出相应反应,更新自己的数据版本或触发业务流程。

在微服务驱动的现代架构中,CDC 作为连接传统数据库与事件驱动型云原生架构的关键纽带,越来越受到重视。采用 CDC,企业可以继续使用其传统数据库,同时借助新兴技术利用数据。针对新的部署,CDC 支持使用有用的模式和结构,例如允许微服务从数据库事务交换整合数据的"发件箱"。

虽然 CDC 可以捕获数据库更改,但它仍然需要利用消息传递服务将这些更改通知传递至适用的系统和应用。最高效的方法是将更改视作事件,就像在事件驱动架构(EDA)中一样,以异步方式发送事件。

Apache Kafka 是在数据库和需要高容量、可重复使用模式的数据使用者之间提供异步通信的理想方式。Apache Kafka 是一个分布式流平台,可以实时发布、订阅、存储和处理事件流。它具有高吞吐量和可扩展性,能够处理来自多个源的数据流,并将数据传送至多个目的地。

变更数据捕获能确保 Kafka 传送的事件与原始源系统或数据库中的更改一致。由于 Kafka 消息传递为异步传递,事件与使用者相互分离,因此可以更可靠地传递所有更改。

变更数据捕获平台(如 Debezium)通过监控变更提交时的事务日志跟踪数据库变更。另一种捕获方法是基于轮询或基于查询的简单过程。 

与这些选项相比,基于事务日志的 CDC 拥有以下几个优势:

  • 所有变更均能捕获:CDC 旨在捕获对数据库所做的所有变更。如果不使用 CDC,两次轮询循环之间的中间变更和新增数据(如更新和删除)可能会丢失。
  • 代价小:结合使用 CDC 和 Kafka 可以提供近乎实时的数据变更传递。它可以避免频繁轮询导致的 CPU 负载增加。
  • 无数据模型影响:CDC 不需要通过时间戳列来确定最后数据更新时间。

以下示例仅代表众多变更数据捕获用例中的一小部分。

微服务集成

CDC 可用于同步微服务和传统的单体式应用,从而顺畅地将数据变更从传统系统传输到基于微服务的应用。

数据复制

CDC 可用于将数据复制到多个数据库、数据湖或数据仓库,确保每个资源都拥有最新版本的数据。因此,CDC 可以让多个分布式团队(哪怕是孤立团队)访问相同的最新数据。 

分析界面

CDC 可用于将数据更改提供给分析界面,来实现商业智能等目的,从而助力进行时效性强的决策。

审计与合规

为遵守严格的数据合规要求,避免不合规的严重处罚,必须保存数据更改的历史记录。CDC 可用于保存数据更改,满足审计或归档要求。 

缓存失效

CDC 可用于缓存失效,确保替换或删除缓存中过时的条目,以显示最新版本。

CQRS 模式更新

CDC 可用于保持命令查询职责分离(CQRS)读取模式与主模式同步。

全文检索

CDC 可用于自动保持全文检索索引与数据库同步。

变更数据捕获可以帮助您的企业更快做出数据驱动决策,以减少时间、精力和收入的浪费。

最大化数据价值

CDC 通过赋于企业将信息用于多种用途的能力,能帮助其实现数据价值的最大化。CDC 提供了在各个数据筒仓中一致地更新相同数据的方法,让企业能够在保持数据完整性的同时,最大限度地利用数据。

保持最新的业务状态

CDC 使多个数据库和应用与最新数据保持同步,为业务利益相关方提供最新信息。

决策更快,更明智

CDC 可赋能商业用户根据最新信息做出更准确、更迅速的决策。由于决策数据通常会迅速失去价值,所以利用 CDC 和 Kafka 让所有利益相关方立即获取数据至关重要。 提供几乎实时的准确分析是建立和保持竞争优势的关键。

无延误的稳定运维

如果多个系统中的数据不同步,就可能会在协调订单、处理交易、服务客户、生成报告或遵循生产计划等方面遇到问题。以上任意情况都会耽误您的业务,造成营收损失。采用 CDC,您的企业可以跨多个系统以低延迟保持数据同步,实现平稳运维。

红帽集成通过 Debezium,结合红帽 AMQ 流和 Apache Kafka,提供变更数据捕获功能。Debezium 是基于日志的分布式开源 CDC 平台,支持从各种数据库系统中捕获更改。Debezium 速度快且持久耐用,因此您的应用可以快速响应,而不会错失事件。

继续阅读

文章

什么是集成?

想要知道什么是集成?了解何为集成、它的具体实现方式以及使用开源技术为什么有助于实现集成。

文章

什么是 Apache Kafka?

Apache Kafka 是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流。

文章

什么是 API?

应用编程接口(API)是一组用于构建和集成应用软件的定义和协议。

详细了解集成

产品

一套全面的集成和消息传递技术,旨在跨混合基础架构连接应用和数据。包括红帽 3scale API 管理、红帽 AMQ、红帽应用运行时、变更数据捕获和服务注册表。

托管平台、应用和简化了混合云体验的数据服务,从而降低了运维成本和提供云原生应用的复杂性。

一整套产品、工具及组件,以用于开发和维护云原生应用。包括红帽 AMQ、红帽数据网格、红帽 JBoss® 企业应用平台、红帽 JBoss Web 服务器、OpenJDK 的红帽版、Quarkus 红帽版、一组云原生运行时、应用迁移工具包、单点登录和启动器服务。

一套全面的集成和运行时技术,旨在帮助您构建、部署和操作应用,同时兼顾安全性和跨混合云的可扩展性。

相关资源

继续探索

培训