赞
踩
本文讨论的方案将是本博客以往介绍的关于 CDC 数据同步方案中最贴合实际生产需要的,因为此前介绍的开箱即用方案往往都是一张表对应一条独立的链路(作业),需要一个独立的数据库连接,在表数量很大的情况下,会对数据库造成很大压力,同时过多的 Flink 作业会不易于管理和维护,为变更并不活跃的表创建独立的作业也浪费了资源。此外,针对每张表使用 Flink SQL 定义 CDC 作业也是一项繁重的重复性工作,如果能简化或省略也是很实用的一项改进。所以,实用的解决解决方案应该是:使用一个 Flink 作业完成整库 / 多表的 CDC 数据接入工作。
另一方面,多张数据表接入到 Kafka 上,是公用一个 Topic 还是一张表对应一个 Topic 也是需要考量的,两种方式各有优劣:
本文,我们分别实现上述两种方式,并更细致地讨论它们的优缺点。 此外,要实现上述设计目标,还有一个非常重要的前提条件:Kafka 中的消息必须要包含两个关键字段,就是这条 CDC 数据所属的数据库名和数据表名。这两项信息既是使用 debezium-json
格式在 Kafka 上构建下游表时必须的两个关键字段,同是也是对数据进行分流(写入表所对应 Topic)时需要要知道的两个字段。
本文提供完整可云行的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。