• Flink CDC介绍及原理


    CDC (Change Data Capture) 是一种用于捕捉数据库变更数据的技术,Flink 从 1.11 版本开始原生支持 CDC 数据(changelog)的处理,目前已经是非常成熟的变更数据处理方案。

    Flink CDC Connectors 是 Flink 的一组 Source 连接器,是 Flink CDC 的核心组件,这些连接器负责从 MySQL、PostgreSQL、Oracle、MongoDB 等数据库读取存量历史数据和增量变更数据。在 2020 年 7 月开源,社区保持了相当高速的发展,平均两个月一个版本,在开源社区的关注度持续走高,也逐渐有越来越多的用户使用 Flink CDC 来快速构建实时数仓和数据湖。

    Flink CDC 2.1的改进

    Flink CDC 2.1 版本重点提升了 MySQL CDC 连接器的性能和生产稳定性,重磅推出 Oracle CDC 连接器和 MongoDB CDC 连接器。新增内容如下:

    (1)MySQL CDC 支持百亿级数据的超大表,支持 MySQL 全部数据类型,通过连接池复用等优化大幅提升稳定性。同时提供支持无锁算法,并发读取的 DataStream API,用户可以借此搭建整库同步链路;

    (2)新增 Oracle CDC 连接器, 支持从 Oracle 数据库获取全量历史数据增量变更数据

    (3)新增 MongoDB CDC 连接器,支持从 MongoDB 数据库获取全量历史数据增量变更数据

    (4)所有连接器均支持metadata column 功能, 用户通过 SQL 就可以访问库名,表名,数据变更时间等 meta 信息,这对分库分表场景的数据集成非常实用;

    丰富 Flink CDC 入门文档,增加多种场景的端到端实践教程。

    Flink CDC 1.x 问题点

    1、加锁时间不确定,极端情况会锁住数据库

    针对 一致性加锁的痛点 Flink cdc 2.x 借鉴 Netflix 的 DBlog paper 设计了全程无锁算法

    2、因为 Flink CDC 底层是基于 Debezium,Debezium 架构是单节点,所以 Flink CDC 1.x 只支持单并发。在全量读取阶段,如果表非常大 (亿级别),读取时间在小时甚至天级别,用户不能通过增加资源去提升作业速度。

    3、全量读取阶段不支持 checkpoint

    Flink CDC  读取分为两个阶段,全量读取和增量读取,目前全量读取阶段是不支持 checkpoint 的;

    因此会存在一个问题:当我们同步全量数据时,假设需要 5 个小时,当我们同步了 4 小时的时候作业失败,这时候就需要重新开始,再读取 5 个小时

    Flink cdc 2.x 中定期为源执行检查点,在故障转移的情况下,作业将从上次成功的检查点状态重新启动并恢复,并保证恰好一次语义

    Flink CDC 高频面试 13 问(万字长文吐血总结!)

  • 相关阅读:
    react实战系列 —— 起步(mockjs、第一个模块、docusaurus)
    网络流——EK算法求最大流
    Scala基础【正则表达式、框架式开发原则】
    Ansible playbook自动化运维工具详解
    【前端】HTTP相关知识总结
    独立站SEO推广的正确打开方式
    最近的工作和生活
    SQL Server如何建表
    【LeetCode】二分基础模板,查找左右边界
    C++ bitset 用法和应用
  • 原文地址:https://blog.csdn.net/qq_42456324/article/details/127982883