Flink使用案例 | 青训营笔记

103 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第6天。

1、电商流批一体实践

image-20220730171514970.png

字节之前的电商业务数据分为离线数仓和实时数仓建设,离线和实时数据源,计算引擎和业务代码没有统一,在开发相同需求的时候经常需要离线和实时对齐口径,同时,由于需要维护两套计算路径,对运维也带来压力。

因此需要将数据源、业务逻辑、计算引擎统一,提高开发运维效率。

image-20220730171603026.png

数据源:将Kafka的数据利用Flink进行预处理,并同步到Hive中,用于批处理。由于流批的数据都是从Kafka到Flink,保证了数据源的一致性。

业务逻辑:不同的调度背景使用同样的SQL代码,UDF相关的代码逻辑都是复用的,只不过批是按小时/天调度,流一直在跑。

计算引擎:都使用Flink引擎,提高开发运维成本。

2、字节Flink OLAP实践

Flink的OLAP在字节内部的场景主要是HTAP场景。TP是事务计算,AP是查询计算,HTAP可以理解为能处理TP、AP混合场景的引擎。

image-20220730171647440.png

在没有HTAP引擎之前,“在线”和“离线”是完全隔离开的,因此可能出现小时/天的延迟。线上数据通过OLAP引擎更新并存储支持事务的存储系统中(比如MySQL),线上数据库再通过离线流程,将数据同步到离线数据源(比如Hive)中,下游再基于Hive的数据进行处理。

有了HTAP之后,AP和TP都可以通过HTAP引擎输送到下游,Flink直接提供数据查询和分析的能力,“在线”和“离线”不再隔离开,延迟可以降到秒级。

个人总结

本文介绍了字节跳动在电商流批一体的实践,将数据源、业务逻辑、计算引擎进行统一。然后介绍了字节跳动在Flink OLAP所做的实践,有了HTAP之后,优化了OLAP的并发性和延迟性。