湖仓一体电商项目(十五):实时统计商品及一级种类、二级种类访问排行业务需求和分层设计及流程图
实时统计商品及一级种类、二级种类访问排行业务需求和分层设计及流程图
一、业务需求
用户登录系统后会浏览商品,浏览日志通过日志采集接口采集到 Kafka “KAFKA-USER-LOG-DATA”topic 中,每个用户浏览商品的日志信息中都有浏览的商品编号以及当前商品所属的二级分类信息,我们需要根据用户在网站上浏览的日志信息实时统计出商品浏览排行、商品一级种类、二级种类访问排行,并在大屏展示,展示效果如下:
二、业务分层设计及流程图
本业务涉及到的数据有两类,一类是来自于 MySQL 业务库商品分类表“pc_product_category”、商品基本信息表“pc_product”,我们会将以上业务表数据采集到大数据平台中构建数仓分层,同样,我们采用数据湖技术 Iceberg 构建湖仓一体结构进行数据仓库分层,在数仓中以上两张表是维度数据。在设计湖仓分层时,我们将维度数据存储在 HBase 中,将事实数据存储在 Iceberg 数仓分层中,在第一个业务中我们已经写好了通用的处理维度数据代码“DimDataToHBase.scala”,只需要在 MySQL 配置表“lakehousedb.dim_tbl_config_info”表中配置好对应的维度表即可,这样通过 maxwell 增量或者全量将 MySQL 中维度数据分流导入到 Kafka 存储维度的 topic “KAFKA-DIM-TOPIC”中,进而通过处理维度通用代码将维度数据写入到 HBase 中。
另一类数据是来自于用户浏览商品日志数据,此类数据在 1.5 章节中已经通过日志采集接口将数据采集到 Kafka topic “KAFKA-USER-LOG-DATA”中,针对此 topic 中数据我们需要通过 Flink 代码进行处理,Flink 代码会将所有业务库中的数据保留一份完整数据到 Iceberg ODS 层中,针对维度数据会将数据进行过滤存储在 Kafka 中,方便后续维度数据处理,另外为了使代码重启后消费数据位置信息得到保证,这里我们将所有事实数据也存储在 Kafka 中,后续各层也是按照此逻辑执行。
本实时业务湖仓分层设计如下图所示:
版权声明: 本文为 InfoQ 作者【Lansonli】的原创文章。
原文链接:【http://xie.infoq.cn/article/cf51eba19e724a29f15d21848】。文章转载请联系作者。
评论