当前位置:网站首页>Flink CDC介绍和个人理解

Flink CDC介绍和个人理解

2022-08-10 03:29:00 bigdata王一

简介

CDC是Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。

种类

基于查询和基于binlog
在这里插入图片描述

基于日志的 CDC 方案介绍

从 ETL 的角度进行分析,一般采集的都是业务库数据,这里使用 MySQL 作为需要采集的数据库,通过 Debezium 把 MySQL Binlog 进行采集后发送至 Kafka 消息队列,然后对接一些实时计算引擎或者 APP 进行消费后把数据传输入 OLAP 系统或者其他存储介质。
Flink 希望打通更多数据源,发挥完整的计算能力。我们生产中主要来源于业务日志和数据库日志,Flink 在业务日志的支持上已经非常完善,但是在数据库日志支持方面在 Flink 1.11 前还属于一片空白,这就是为什么要集成 CDC 的原因之一。
Flink SQL 内部支持了完整的 changelog 机制,所以 Flink 对接 CDC 数据只需要把CDC 数据转换成 Flink 认识的数据,所以在 Flink 1.11 里面重构了 TableSource 接口,以便更好支持和集成 CDC。
在这里插入图片描述
在这里插入图片描述
重构后的 TableSource 输出的都是 RowData 数据结构,代表了一行的数据。在RowData 上面会有一个元数据的信息,我们称为 RowKind 。RowKind 里面包括了插入、更新前、更新后、删除,这样和数据库里面的 binlog 概念十分类似。通过 Debezium 采集的 JSON 格式,包含了旧数据和新数据行以及原数据信息,op 的 u表示是 update 更新操作标识符,ts_ms 表示同步的时间戳。因此,对接 Debezium JSON 的数据,其实就是将这种原始的 JSON 数据转换成 Flink 认识的 RowData。

flink作为etl工具

原工作原理
在这里插入图片描述
优化后
在这里插入图片描述
Flink SQL 采集+计算+传输(ETL)一体化优点:
 开箱即用,简单易上手
 减少维护的组件,简化实时链路,减轻部署成本
 减小端到端延迟
 Flink 自身支持 Exactly Once 的读取和计算
 数据不落地,减少存储成本
 支持全量和增量流式读取
 binlog 采集位点可回溯

应用场景

 实时数据同步,数据备份,数据迁移,数仓构建
优势:丰富的上下游(E & L),强大的计算(T),易用的 API(SQL),流式计算低延迟
 数据库之上的实时物化视图、流式数据分析
 索引构建和实时维护
 业务 cache 刷新
 审计跟踪
 微服务的解耦,读写分离
 基于 CDC 的维表关联

开源地址

https://github.com/ververica/flink-cdc-connectors

最新flink cdc官方文档分享

https://flink-learning.org.cn/article/detail/eed4549f80e80cc30c69c406cb08b59a

流程图

个人理解作图
在这里插入图片描述

1.X痛点

在这里插入图片描述所以设计目标
在这里插入图片描述
设计实现上
在对于有主键的表做初始化模式,整体的流程主要分为5个阶段:
1.Chunk切分;2.Chunk分配;(实现并行读取数据&CheckPoint)
3.Chunk读取;(实现无锁读取)
4.Chunk汇报;
5.Chunk分配。
对于并发线程
会对比各个读取切分的最高和最低的位置区间,超过区间进行更新

目前支持开发方式

个人理解作图
在这里插入图片描述

开发测试大致流程

个人理解作图
在这里插入图片描述

原网站

版权声明
本文为[bigdata王一]所创,转载请带上原文链接,感谢
https://blog.csdn.net/MyNameIsWangYi/article/details/126252719