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

本文讨论的方案将是本博客以往介绍的所有关于 CDC 数据同步方案中最贴合实际生产需要的,因为以往介绍的开箱即用方案往往都是一张表对应一个 Kafka Topic,在数据库和数据表数量很大的情况下,这种模式是不实用的,主要问题在于:每张表都对应一个单独的 Flink 作业,占用一个单独的数据库连接,表的数量一多,对数据库造成的压力是不可接受的。此外,针对每张表使用 Flink SQL 定义 CDC 作业也是一项繁重的重复性工作,如果能简化或省略也是很实用的一项改进。所以,实用的解决解决方案应该是:使用一个 Flink 作业完成整库 / 多表的 CDC 数据接入工作

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

  • 使用一个 Topic 接受所有表的 CDC 数据:好处是避免创建大量的 Topic,便于维护;但是会给下游的 consume 消息增加额外负担
  • 一个 Topic 对应一张表:对下游非常友好,无需进行额外的消息过滤,但是 Topic 的数量会比较多

本文,我们分别实现上述两种方式,并更细致地讨论它们的优缺点。

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 14:50:03       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 14:50:03       74 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 14:50:03       61 阅读
  4. Python语言-面向对象

    2024-04-22 14:50:03       71 阅读

热门阅读

  1. 从事数据分析相关工作技术总结

    2024-04-22 14:50:03       26 阅读
  2. FFT快速傅里叶变换音频分析

    2024-04-22 14:50:03       38 阅读
  3. 基于单片机雨天自动关窗器的设计

    2024-04-22 14:50:03       33 阅读
  4. 基础矩阵和本质矩阵

    2024-04-22 14:50:03       38 阅读
  5. 水气表CJ/T188协议学习及实例

    2024-04-22 14:50:03       29 阅读
  6. 基于springboot的教学资源库源码数据库

    2024-04-22 14:50:03       31 阅读
  7. flink mysql数据表同步SQL CDC

    2024-04-22 14:50:03       34 阅读
  8. 【QT进阶】Qt http编程之json解析的简单介绍

    2024-04-22 14:50:03       39 阅读
  9. 从0开始深入理解Spring(1)--SpringApplication构造

    2024-04-22 14:50:03       32 阅读
  10. kubeadm 升级 k8s集群 1.17到1.20

    2024-04-22 14:50:03       27 阅读
  11. SpringCloudAlibaba+RocketMQ实现对消息中间件的整合

    2024-04-22 14:50:03       34 阅读