软件架构|基于Flink和ClickHouse打造轻量级点击流实时数仓

【软件架构|基于Flink和ClickHouse打造轻量级点击流实时数仓】Flink和ClickHouse分别是实时计算和(近实时)OLAP领域的翘楚 , 也是近些年非常火爆的开源框架 , 很多大厂都在将两者结合使用来构建各种用途的实时平台 , 效果很好 。
点击流数仓分层设计
点击流实时数仓的分层设计仍然可以借鉴传统数仓的方案 , 以扁平为上策 , 尽量减少数据传输中途的延迟 。 简图如下 。
软件架构|基于Flink和ClickHouse打造轻量级点击流实时数仓
文章图片
*DIM层:维度层 , MySQL镜像库 , 存储所有维度数据 。
*ODS层:贴源层 , 原始数据由Flume直接进入Kafka的对应topic 。
*DWD层:明细层 , 通过Flink将Kafka中数据进行必要的ETL与实时维度join操作 , 形成规范的明细数据 , 并写回Kafka以便下游与其他业务使用 。 再通过Flink将明细数据分别写入ClickHouse和Hive打成大宽表 , 前者作为查询与分析的核心 , 后者作为备份和数据质量保证(对数、补数等) 。
*DWS层:服务层 , 部分指标通过Flink实时汇总至Redis , 供大屏类业务使用 。 更多的指标则通过ClickHouse物化视图等机制周期性汇总 , 形成报表与页面热力图 。 特别地 , 部分明细数据也在此层开放 , 方便高级BI人员进行漏斗、留存、用户路径等灵活的ad-hoc查询 , 这些也是ClickHouse远超过其他OLAP引擎的强大之处 。