• Flink CDC介绍和个人理解


    简介

    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分配。
    对于并发线程
    会对比各个读取切分的最高和最低的位置区间,超过区间进行更新

    目前支持开发方式

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

    开发测试大致流程

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

  • 相关阅读:
    史上最详细的sqlmap使用教程
    小谈设计模式(2)—简单工厂模式
    章鱼网络社区治理的4种方式
    怎么查找和自己专业有关的英文文献?
    预约按摩app软件开发定制足浴SPA上们服务小程序
    基于 java+springboot+vue 的酒店⺠宿⽹站毕业设计源码250910
    项目从编码到上线的全过程详解
    STM32F303RE 四个ADC同步规则采样
    CentOS 7 免密密钥登陆sftp服务 —— 筑梦之路
    linux yum安装mysq8
  • 原文地址:https://blog.csdn.net/MyNameIsWangYi/article/details/126252719