Flink CDC 原理、实践和优化

查看数: 3570 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-4-1 10:45

正文摘要:

问题导读: 1.CDC 是什么? 2.CDC 的实现原理是什么? 3.为什么选 Flink? CDC 变更数据捕获技术可以将源数据库的增量变动记录,同步到一个或多个数据目的。本文基于腾讯云 Oceanus 提供的 Flink CDC 引擎, ...

回复

若无梦何远方 发表于 2021-4-4 14:42:05
Flink CDC
&#8226; 是变更数据获取的缩写 (Change Data Capture)
&#8226; 将源数据 (Source)的变动同步到一个或者多个目的地 (Sink)
&#8226; 再同步的过程中可以对数据进行一些额外操作 (GROUP BY | JOIN | ...)
&#8226; 解决: 对同一份数据多次下沉的场景,解决传统方式对一份数据多次分发的操作
&#8226; 比如落地: Redis | Elasticsearch | ClickHouse
实现模式
主动查询
&#8226; 在数据源表中 保存上次更新的时间戳跟版本号
&#8226; 下游通过不断查询和上次记录做对比,来确定数据是否有变动,是否需要同步
&#8226; 优点:不涉及底层 binlog 的采集与解析 (减少数据传输过程)
&#8226; 缺点:下游需要不断查询对数据库 Service 有压力
事件接收
&#8226; 通过触发器 Trigger 或者 日志的操作记录该事件 (例如 Transaction log、Binary log、Write-ahead log)
&#8226; 源数据发生改变后附加在 Trigger 或者 LOG(Binlog) 中
&#8226; 下游通过数据库底层的协议订阅并消费这些事件,对数据库的变动做回放的效果 达到数据的同步工作
&#8226; 优点:可以减少对数据库 Service 的压力,实时性比较高
&#8226; 缺点:针对于 LOG 需要有对应的解析工具参与解析 (Canal、Datax、Debezium),学习成本高
使用方法
输入 Debezium 等数据流进行同步
&#8226; 特点:做到处理的解耦工作 | 对于数据的处理得到的解耦合
相当于是 DBServer ->  Debezium -> Kafka -> Flink -> TransSink
&#8226; 缺点:个人感觉维护量大、学习成本高
直接对接上游数据库进行数据同步
&#8226; 特点:学习成本小、无需考虑内部细节(内部都做了封装、开箱即用)
相当于是 DBServer -> Flink CDC ->TransSink
&#8226; 缺点:不透明化、内聚、数据安全需要考虑 (类似做一些加密操作)
关闭

推荐上一条 /2 下一条