建筑学
Debezium 架构
最常见的部署方式是通过 Apache Kafka Connect 来部署 Debezium。Kafka Connect 是一个用于实现和运行以下组件的框架与运行时:
- 源连接器(如 Debezium),用于将记录发送到 Kafka
- 接收器连接器,用于将记录从 Kafka 主题传播到其他系统
下图展示了基于 Debezium 的变更数据捕获管道的架构:

如图所示,MySQL 和 PostgreSQL 的 Debezium 连接器被部署用于捕获这两类数据库的变更。每个 Debezium 连接器都会与其源数据库建立连接:
- MySQL 连接器使用客户端库来访问
binlog。 - PostgreSQL 连接器从逻辑复制流中读取数据。
Kafka Connect 作为独立服务运行,与 Kafka broker 分开。
默认情况下,来自一个数据库表的变更会被写入一个名称与该表名对应的 Kafka 主题。如有需要,可以通过配置 Debezium 的主题路由转换来调整目标主题名称。例如,你可以:
- 将记录路由到名称与表名不同的主题
- 将多个表的变更事件记录流式传输到同一个主题中
当变更事件记录进入 Apache Kafka 后,Kafka Connect 生态系统中的不同连接器可以将这些记录流式传输到其他系统和数据库,例如 Elasticsearch、数据仓库和分析系统,或者 Infinispan 等缓存系统。根据所选的接收器连接器,你可能需要配置 Debezium 的新记录状态提取转换。这个 Kafka Connect 单消息转换(SMT)会将 Debezium 变更事件中的 after 结构传播给接收器连接器。经过修改的变更事件记录将取代默认传播的、内容更冗长的原始记录。
Debezium Server
部署 Debezium 的另一种方式是使用 Debezium server。Debezium server 是一个可配置、可直接使用的应用程序,它将变更事件从源数据库流式传输到各种消息基础设施。下图展示了使用 Debezium Server 的变更数据捕获管道的架构:

你可以配置 Debezium server 使用某个 Debezium 源连接器来捕获源数据库的变更。变更事件可以被序列化为 JSON 或 Apache Avro 等不同格式,然后发送到 Amazon Kinesis、Google Cloud Pub/Sub 或 Apache Pulsar 等各种消息基础设施之一。
Debezium Engine
使用 Debezium 连接器的另一种方式是 Debezium 引擎。在这种情况下,Debezium 不会通过 Kafka Connect 运行,而是作为库嵌入到你自定义的 Java 应用程序中。这样既可以在应用程序内部直接消费变更事件,无需部署完整的 Kafka 和 Kafka Connect 集群,也可以将变更流转到其他消息代理(例如 Amazon Kinesis)。关于后一种用法,你可以在示例仓库中找到一个示例。
评论
登录后参与评论
KnowForge