【大数据面试题】014 Flink CDC 用过吗,请简要描述

一步一个脚印,一天一道面试题。

Flink CDC 的全称是 Change Data Capture(变更数据捕获) 每一项技术的诞生都是为了解决某个问题,某个痛点。而 Flink CDC 的诞生就是为了解决在读取,监控 MySQL 这样的数据库时,不会因为读取数据库,对数据库本身造成压力,影响性能。同时,保证了数据源的准确,正确。

  1. 方式一 :通过查询来获取更新的数据。
    如查询数据库:
sql 复制代码
select * from table1 where create_time >{传入上次查询时间}

这原理非常简单,就是查询上次查询期间创建或更新的数据。但缺点也非常明显:1.查询慢 ,数据一多你这么查就快不了。 2.额外的查询会给组件带来性能压力。

  1. 方式二

通过监控日志获取变化的数据。
Flink CDC 的原理是监控数据库比如 MySQLBinlog
BinlogMySQL 这样的带事务的数据库为了一致性写的日志。每次有数据的更新,操作都会有对应的 log 产生。我们可以先全量读取一份数据,再通过监控 Binlog来同步更新数据。

Binlog 是原本就有的,没有 Flink CDC 也不会减少日志量,所以不会影响数据库本身性能。

java 复制代码
	import com.ververica.cdc.connectors.mysql.source.MySqlSource;
	import com.ververica.cdc.connectors.mysql.table.StartupOptions;
	
	// 配置获取 MySQLSource
	MySqlSource<String> mysqlSource = MySqlSource.<String>builder()
                .hostname("hostname")
                .port(3306)
                .username("root")
                .password("123456")
                .databaseList("database_name")
                .tableList("table_name")
                .jdbcProperties(prop)
                .serverTimeZone("Asia/Shanghai")
                // 反序列化(这里指定为 Json)
                .deserializer(new JsonDebeziumDeserializationSchema())
                // 是否需要先读一份完整的数据
                .startupOptions(StartupOptions.initial())
                .build();

	// 获取对应流 Stream
	DataStreamSource<String> mySqlSourceStream = env.fromSource(mysqlSource, WatermarkStrategy.noWatermarks(), "mysql_source");

    mySqlSourceStream .print();

	env.execute();

我是 Jiweilai,祝你变得更强!

相关推荐
Mahir082 小时前
Redis 与 MySQL 数据同步:一致性保证的完整解决方案
数据库·redis·mysql·缓存·面试·数据一致性
AC赳赳老秦2 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
QYR-分析2 小时前
高功率飞秒激光器行业发展现状、市场机遇及未来趋势分析
大数据·人工智能
微擎应用2 小时前
全渠道批发订货商城小程序管理系统
大数据·小程序
卷毛迷你猪3 小时前
快速实验篇(A1)干旱气象数据上传至HDFS
大数据·hadoop·hdfs
刀法如飞4 小时前
Go 字符串查找的 20 种实现方式,用不同思路解决问题
算法·面试·程序员
头歌实践平台6 小时前
招聘大数据可视化
大数据·python
头歌实践平台6 小时前
Hadoop开发环境搭建
java·大数据·hadoop
Alter12306 小时前
从“力大砖飞”到“拟态共生”,新华三定义AI基础设施的系统级进化
大数据·运维·人工智能