《Apache Flink 案例集(2022版)》——1.数据集成——小米-Flink 流批一体在小米的实践(3)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 《Apache Flink 案例集(2022版)》——1.数据集成——小米-Flink 流批一体在小米的实践(3)


2. 实时数据集成  

image.png


主要分为两个部分:  


第一部分是实时数据的收集,小米内部主要分为两大类, 分别是日志数据和 DB 的 Binlog 数据。这里主要介绍 DB 系统的 Binlog 数据收集。最初小米使用自研的 LCS Binlog 服务来进行统一的 Binlog 收集,类似于 Canal 服务,通过该服务将 Binlog 的数据统一收集到消息队列中。  


第二部分则是数据的转储, 将使用 Spark Streaming 任务将消息队列中的数据导入其他系统,比如 Kudu 或 HDFS。  


现在小米使用 Flink 对 Binlog 的收集和转储链路都进行了改造。使用 Flink CDC 收集 Binlog 数据,并写入消息队列中。同时通过 Flink 将消息队列的数据转储到其他系统,比如 Kudu、Doris、Iceberg 等等。  


3、批流混合集成

image.png


在实际的使用中往往需要流批混合的方式,以适用于分库分表、部分链路重做,新增库表等场景。小米选择使用 Flink CDC 任务来收集库级别的 Binlog 数据(按照表级别收集会对 MySQL 服务造成较大的压力)。将数据收集到消息队列后,再针对不同的收集场景,起不同的作业来进行转储。对于单表全量数据需要重做的场景(backfill),小米使用Hybrid Source分别读取 MySQL中的存量数据和消息队列中的增量数据。


image.png

另一种批流混合的数据集成是在调度层做到批流混合,主要运用于TiDB的Binlog收集场景。在支持 TiDB 的数据收集和转储时无法使用 Hybrid Source,因为 TiDB 的全量数据往往非常大,需要起大量并发能够加速全量数据的转储,而增量数据则只需要较小并发即可,因此使用Hybrid Source难以同时保证业务性能和资源使用效率。解决的方法是在全量数据部分使用 Flink SQL Batch 作业来完成,可以灵活调整并发且相对于实时作业处理效率更高,增量部分则以较小的并发转储即可。


未来规划

当前 Flink + Iceberg 的数据湖解决方案在小米已经初步落地,未来可以提升的空间依然非常大,小米会不断跟进社区,继续推进内部流批一体化的建设。

image.png

与此同时,小米会将 Flink SQL Batch 用于更加复杂的场景。当前 Flink SQL Batch 发挥的场景有限,主要运用于批量导出的场景,相信未来它会发挥更大的价值。  


其次,小米会跟进社区的 built in dynamic table,结合消息队列和数据湖,兼顾时效性和准确性,提升用户的体验。同时也会升级 Hybrid Source connector,更加灵活地对接其他系统。

相关文章
|
17天前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
29 1
|
15天前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
61 2
|
17天前
|
消息中间件 分布式计算 Hadoop
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
30 3
|
17天前
|
消息中间件 运维 Kafka
Apache Flink 实践问题之达到网卡的最大速度如何解决
Apache Flink 实践问题之达到网卡的最大速度如何解决
33 2
|
18天前
|
消息中间件 前端开发 Kafka
【Azure 事件中心】使用Apache Flink 连接 Event Hubs 出错 Kafka error: No resolvable bootstrap urls
【Azure 事件中心】使用Apache Flink 连接 Event Hubs 出错 Kafka error: No resolvable bootstrap urls
|
17天前
|
SQL 运维 分布式计算
Apache Flink 实践问题之避免用户作业包中包含Flink的core包如何解决
Apache Flink 实践问题之避免用户作业包中包含Flink的core包如何解决
33 1
Apache Flink 实践问题之避免用户作业包中包含Flink的core包如何解决
|
17天前
|
数据采集 分布式计算 Kubernetes
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
35 4
|
1月前
|
SQL API Apache
官宣|Apache Flink 1.20 发布公告
Apache Flink 1.20.0 已发布,这是迈向 Flink 2.0 的最后一个小版本,后者预计年底发布。此版本包含多项改进和新功能,涉及 13 个 FLIPs 和 300 多个问题解决。亮点包括引入物化表简化 ETL 管道开发,统一检查点文件合并机制减轻文件系统压力,以及 SQL 语法增强如支持 `DISTRIBUTED BY` 语句。此外,还进行了大量的配置项清理工作,为 Flink 2.0 铺平道路。这一版本得益于 142 位贡献者的共同努力,其中包括来自中国多家知名企业的开发者。
723 7
官宣|Apache Flink 1.20 发布公告
|
1月前
|
消息中间件 大数据 Kafka
"Apache Flink:重塑大数据实时处理新纪元,卓越性能与灵活性的实时数据流处理王者"
【8月更文挑战第10天】Apache Flink以卓越性能和高度灵活性在大数据实时处理领域崭露头角。它打破批处理与流处理的传统界限,采用统一模型处理有界和无界数据流,提升了开发效率和系统灵活性。Flink支持毫秒级低延迟处理,通过时间窗口、状态管理和自动并行化等关键技术确保高性能与可靠性。示例代码展示了如何使用Flink从Kafka读取实时数据并进行处理,简明扼要地呈现了Flink的强大能力。随着技术进步,Flink将在更多场景中提供高效可靠的解决方案,持续引领大数据实时处理的发展趋势。
65 7
|
2月前
|
关系型数据库 API Apache
Flink CDC:基于 Apache Flink 的流式数据集成框架
本文整理自阿里云 Flink SQL 团队研发工程师于喜千(yux)在 SECon 全球软件工程技术大会中数据集成专场沙龙的分享。
17687 11
Flink CDC:基于 Apache Flink 的流式数据集成框架

相关产品

  • 实时计算 Flink版
  • 推荐镜像

    更多