【微服务】springboot3 集成 Flink CDC 1.17 实现mysql数据同步

目录

一、前言

二、常用的数据同步解决方案

2.1 为什么需要数据同步

2.2 常用的数据同步方案

2.2.1 Debezium

2.2.2 DataX

2.2.3 Canal

2.2.4 Sqoop

2.2.5 Kettle

2.2.6 Flink CDC

三、Flink CDC介绍

3.1 Flink CDC 概述

3.1.1 Flink CDC 工作原理

3.2  Flink CDC数据同步优势

3.3 Flink CDC 适用范围

四、Java集成Flink CDC同步mysql数据

4.1 组件版本选择

4.2 数据准备

4.3 导入组件依赖

4.4 Java代码实现过程

4.4.1 自定义反序列化器

4.4.2 自定义Sink输出

4.4.3 启动任务类

4.4.4 效果测试

五、与springboot整合过程

5.1 自定义监听类

5.2 效果测试

六、写在文末


一、前言

在微服务开发模式下,系统的数据源往往不是一个单一的来源,在实际项目中,往往是多种异构数据源的组合,比如核心业务数据在mysql,日志分析数据在hbase,clickhouse,es等,但是不同的数据源需要配合完成某一类业务的时候,就涉及到数据的整合或数据同步问题,尤其是数据同步的场景可以说是非常常见的,那么有哪些解决方案呢?

二、常用的数据同步解决方案

2.1 为什么需要数据同步

当系统发展到一定阶段,尤其是系统的规模越来越大,业务体量也不断扩大的时候,一个系统可能会用到多种数据存储中间件,而不再是单纯的mysql,pgsql等,甚至一个系统中一个或多个微服务无法再满足业务的需求,而需要单独做数据存储的服务,在类似的场景下,很难避免新的服务需要从原有的微服务中抽取数据,或定期做数据的同步处理,诸如此类的场景还有很多。

<think>嗯,用户问的是Flink CDC是否支持YARN的Application模式。我需要先回忆一下Flink的不同部署模式,特别是YARN下的三种模式:Session、Per-Job和Application模式。 首先,确认Flink CDC是什么。Flink CDC是基于Apache Flink的Change Data Capture库,用于捕获数据库的变更数据。用户可能是在问,当他们使用Flink CDC构建一个应用时,能不能用YARN的Application模式来部署。 接下来,需要了解YARN的Application模式的特点。Application模式下,每个应用单独启动一个Flink集群,任务完成后资源释放,适合生产环境,资源隔离性好。而Session模式是共享集群,可能会有资源竞争问题,Per-Job模式每个作业一个集群,但Application模式更进一步,整个应用作为一个作业提交,适合需要多个作业协作的场景。 然后,Flink CDC本身是否和部署模式有关?可能Flink CDC作为库,主要和Flink版本相关,而不是部署模式。所以问题应该是Flink在YARN Application模式下是否支持Flink CDC的功能。 需要确认Flink版本。因为Flink 1.11引入了Application模式,而Flink CDC可能需要特定版本的支持。比如Flink CDC 2.x可能需要Flink 1.13+。所以如果用户使用的是较新的FlinkFlink CDC版本,应该是支持的。 另外,用户可能在部署时遇到了问题,比如依赖包如何打包,或者main方法是否正确。在Application模式下,用户需要将Flink CDC的依赖正确打包到uber jar中,并且确保入口类配置正确,这样才能在YARN上启动。 可能的误区:用户可能混淆了部署模式和CDC的支持,但实际上只要Flink版本和CDC版本兼容,Application模式应该是可行的。需要提醒用户检查版本兼容性,以及依赖是否正确包含,特别是数据库驱动和CDC连接器的依赖。 总结回答:是的,Flink CDC支持YARN Application模式,但需要注意FlinkCDC版本,以及正确打包依赖。可能需要提供示例命令或配置要点,比如通过yarn.provided.lib.dirs来避免上传大依赖,或者如何指定主类等。</think>是的,Apache Flink CDC 支持在 **YARN Application 模式** 下运行。以下是关键点说明: --- ### **1. YARN Application 模式简介** - **核心特点**:每个 Flink 应用单独启动一个专属集群,资源隔离性好,任务完成后自动释放资源,适合生产环境。 - **与 Session/Per-Job 模式区别**: - **Session 模式**:共享集群,资源竞争风险高。 - **Per-Job 模式**:每个作业独立集群,但需提前上传 JAR。 - **Application 模式**:以“应用”为粒度提交(可包含多个作业),直接通过 YARN 调度资源。 --- ### **2. Flink CDC 在 YARN Application 模式的兼容性** - **支持版本**: - Flink 1.11+ 支持 YARN Application 模式。 - Flink CDC 2.x 要求 Flink 1.13+(推荐使用 Flink 1.17+ 和 Flink CDC 3.0 获取最新功能)。 - **依赖管理**:需将 Flink CDC Connector(如 `flink-sql-connector-mysql-cdc`)及其依赖(如 MySQL JDBC 驱动)打包到应用的 FAT JAR 中,或通过 YARN 的 `yarn.provided.lib.dirs` 预上传依赖以加速分发。 --- ### **3. 部署步骤示例** 1. **打包应用**: 使用 Maven/Shade 插件生成包含 Flink CDC 和所有依赖的 JAR 文件。 ```xml <!-- pom.xml 示例 --> <dependencies> <dependency> <groupId>com.ververica</groupId> <artifactId>flink-connector-mysql-cdc</artifactId> <version>3.0.0</version> </dependency> </dependencies> ``` 2. **提交到 YARN**: 通过 `flink run-application` 命令提交: ```bash ./bin/flink run-application -t yarn-application \ -Djobmanager.memory.process.size=2048m \ -Dtaskmanager.memory.process.size=4096m \ -c com.example.CDCJob \ /path/to/your-cdc-app.jar ``` 3. **配置要点**: - 确保 YARN 集群已部署 Hadoop 和 Flink。 - 若使用 HDFS 存储依赖,可通过 `yarn.provided.lib.dirs` 减少上传时间: ```bash -Dyarn.provided.lib.dirs="hdfs:///flink/libs" ``` --- ### **4. 常见问题** - **依赖冲突**:检查是否包含重复的库(如不同版本的 Kafka 客户端)。 - **网络权限**:确保 YARN 节点能访问源数据库(如 MySQL Binlog 端口开放)。 - **资源分配**:调整 `jobmanager.memory.process.size` 和 `taskmanager.memory.process.size` 避免 OOM。 --- ### **5. 总结** Flink CDC 完全支持 YARN Application 模式,需注意版本兼容性、依赖打包和资源配置。该模式适合生产环境,能有效管理资源并实现高可靠性的数据同步。如需具体代码示例或调优建议,可进一步提供使用场景细节。
评论 114
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆风飞翔的小叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值