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

2024-04-19 10:20

本文主要是介绍Flink CDC 整库 / 多表同步至 Kafka 方案(附源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文讨论的方案将是本博客以往介绍的所有关于 CDC 数据同步方案中最贴合实际生产需要的,因为以往介绍的开箱即用方案往往都是一张表对应一个 Kafka Topic,在数据库和数据表数量很大的情况下,这种模式是不实用的,用户真正需要的是:将多张数据表或整个数据库写入到一个 Kafka Topic 中,然后下游再对 Kafka 消息进行分流,也就是把同一张表中的数据分离出来写入到下游表中。要实现这样的设计目标,有一个非常重要的前提条件:Kafka 中的消息必须要包含两个关键字段,就是这条 CDC 数据所属的数据库名和数据表名。本文我们将详细介绍这一方案的具体实现并给出可执行的源代码(订阅用户可以私信博主获得完整的项目源码)。

方案的整体思路是:

  1. 使用 Flink CDC 的 API 将 MySQL 整库或多表写入到一个 Kafka Topic 中

  2. 数据格式使用 debezium-json,但是该格式不包含 CDC 数据所属的数据库和表名,所以需要提供自定义的数据格式,将 CDC 数据所属的数据库和表名添加到 Kafka 消息中

本文提供完整可云行的项目源码,演示完整的数据接入流程,在后续问文章会进一步介绍对同一Topic中不同表的数据进行分流写入 Hudi 表的操作,最终会整合为完整实用的CDC 方案。

此外,结合典型的实时数仓维表关联场景,CDC 消息在分流时还需要根据配置表提供的配置信息将数据动态风流到指定位置,当配置发生改变时,例如要添加新的维表,会通过修改配置表即时生效,这一特性也会在该方案的基础之上,在后续的文章中各出具体实现!

本着“不重新发明轮子”的原则,本

这篇关于Flink CDC 整库 / 多表同步至 Kafka 方案(附源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917273

相关文章

Kafka拦截器的神奇操作方法

《Kafka拦截器的神奇操作方法》Kafka拦截器是一种强大的机制,用于在消息发送和接收过程中插入自定义逻辑,它们可以用于消息定制、日志记录、监控、业务逻辑集成、性能统计和异常处理等,本文介绍Kafk... 目录前言拦截器的基本概念Kafka 拦截器的定义和基本原理:拦截器是 Kafka 消息传递的不可或缺

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

MyBatis延迟加载的处理方案

《MyBatis延迟加载的处理方案》MyBatis支持延迟加载(LazyLoading),允许在需要数据时才从数据库加载,而不是在查询结果第一次返回时就立即加载所有数据,延迟加载的核心思想是,将关联对... 目录MyBATis如何处理延迟加载?延迟加载的原理1. 开启延迟加载2. 延迟加载的配置2.1 使用

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超