【大数据面试题】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,祝你变得更强!

相关推荐
渣渣盟5 小时前
当 Redis 集群发生主从切换(Failover)时,Flink 任务会崩溃吗?如何利用 Sentinel 实现高可用?
redis·flink·sentinel
科莱特SAP6 小时前
精准匹配双向赋能:科莱特数智人才猎场重塑数字化人才服务模式
大数据·人工智能·物联网·人力资源·科莱特·科莱特人才服务
飞飞传输6 小时前
海关行业FTP传输服务器评测:传统FTP与现代化替代方案对比
大数据·运维·安全
.柒宇.6 小时前
运维常见面试题_02_数据库
运维·数据库·sql·面试
渣渣盟6 小时前
当 Checkpoint 稳定运行后,如何进一步优化 Flink 作业的启动和恢复速度,让大状态作业的扩缩容从“小时级”降到“分钟级”?
大数据·flink
互联网中的一颗神经元16 小时前
04 — 安全撤销:改错了怎么退回去
大数据·安全·elasticsearch
kyriewen17 小时前
面试官问"这段逻辑为什么这样写"——我才发现,这半年我写的代码,我自己都解释不了
前端·javascript·面试
marvelyu19 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
ZCBUS实时计算20 小时前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
大龄秃头程序员20 小时前
深入梳理 UIView touch 事件全链路原理与实战
面试