赞
踩
本文讨论的方案将是本博客以往介绍的所有关于 CDC 数据同步方案中最贴合实际生产需要的,因为以往介绍的开箱即用方案往往都是一张表对应一个 Kafka Topic,在数据库和数据表数量很大的情况下,这种模式是不实用的,用户真正需要的是:将多张数据表或整个数据库写入到一个 Kafka Topic 中,然后下游再对 Kafka 消息进行分流,也就是把同一张表中的数据分离出来写入到下游表中。要实现这样的设计目标,有一个非常重要的前提条件:Kafka 中的消息必须要包含两个关键字段,就是这条 CDC 数据所属的数据库名和数据表名。本文我们将详细介绍这一方案的具体实现并给出可执行的源代码(订阅用户可以私信博主获得完整的项目源码)。
方案的整体思路是:
使用 Flink CDC 的 API 将 MySQL 整库或多表写入到一个 Kafka Topic 中
数据格式使用 debezium-json
,但是该格式不包含 CDC 数据所属的数据库和表名,所以需要提供自定义的数据格式,将 CDC 数据所属的数据库和表名添加到 Kafka 消息中
本文提供完整可云行的项目源码,演示完整的数据接入流程,在后续问文章会进一步介绍对同一Topic中不同表的数据进行分流写入 Hudi 表的操作,最终会整合为完整实用的CDC 方案。
此外,结合典型的实时数仓维表关联场景,CDC 消息在分流时还需要根据配置表提供的配置信息将数据动态风流到指定位置,当配置发生改变时,例如要添加新的维表,会通过修改配置表即时生效,这一特性也会在该方案的基础之上,在后续的文章中各出具体实现!
本着“不重新发明轮子”的原则,本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。