当前位置:   article > 正文

Flink CDC 整库 / 多表同步至 Kafka 方案(附源码)_cdckafka

cdckafka

本文讨论的方案将是本博客以往介绍的关于 CDC 数据同步方案中最贴合实际生产需要的,因为此前介绍的开箱即用方案往往都是一张表对应一条独立的链路(作业),需要一个独立的数据库连接,在表数量很大的情况下,会对数据库造成很大压力,同时过多的 Flink 作业会不易于管理和维护,为变更并不活跃的表创建独立的作业也浪费了资源。此外,针对每张表使用 Flink SQL 定义 CDC 作业也是一项繁重的重复性工作,如果能简化或省略也是很实用的一项改进。所以,实用的解决解决方案应该是:使用一个 Flink 作业完成整库 / 多表的 CDC 数据接入工作

另一方面,多张数据表接入到 Kafka 上,是公用一个 Topic 还是一张表对应一个 Topic 也是需要考量的,两种方式各有优劣:

  • 一个 Topic 接收所有表的数据:好处是避免创建大量的 Topic,便于维护;但是会给下游的 consume 消息增加复杂度,需要实现分流逻辑
  • 一个 Topic 接收一张表的数据:对下游非常友好,无需进行额外的消息过滤和分流,但是 Topic 的数量会比较多

本文,我们分别实现上述两种方式,并更细致地讨论它们的优缺点。 此外,要实现上述设计目标,还有一个非常重要的前提条件:Kafka 中的消息必须要包含两个关键字段,就是这条 CDC 数据所属的数据库名和数据表名。这两项信息既是使用 debezium-json 格式在 Kafka 上构建下游表时必须的两个关键字段,同是也是对数据进行分流(写入表所对应 Topic)时需要要知道的两个字段。

本文提供完整可云行的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/538246
推荐阅读
相关标签
  

闽ICP备14008679号