在进行开发之前,我们做了这些调研。
1.离线数据分析平台能否满足这些需求,结论是不能满足。离线数据分析平台不行的原因如下:
- C侧数据上报过来,需要经过Spark的多层离线计算,最终结果出库到Mysql或者ES提供给离线分析平台查询。这个过程的延时最少3-6个小时,目前比较常见的都是提供隔天的查询,所以很多实时性要求高的业务场景都是不能满足的;
- 另一个问题是,腾讯看点的数据量太大,带来的不稳定性也比较大,经常会有预料不到的延迟。所以,离线分析平台是无法满足很多需求的。
2.实时数据分析平台的话,事业群内部提供了准实时数据查询的功能,底层技术用的是Kudu+Impala,Impala虽然是MPP架构的大数据计算引擎,并且访问以列式存储数据的Kudu。但是对于实时数据分析场景来说,查询响应的速度和数据的延迟都还是比较高,查询一次实时DAU,返回结果耗时至少几分钟,无法提供良好的交互式用户体验。
所以(Kudu+Impala)这种通用大数据处理框架的速度优势更多的是相比(Spark+Hdfs)这种离线分析框架来说的,对于我们这个实时性要求更高的场景,是无法满足的。
作者发文的内容被内容中心引入,经过内容审核链路,启用或者下架。启用的内容给到推荐系统和运营系统,然后推荐系统和运营系统将内容进行C侧分发。内容分发给C侧用户之后,用户会产生各种行为,曝光、点击、举报等,通过埋点上报实时接入到消息队列中。
接下来我们做了两部分工作,就是图中有颜色的这两部分。
第一部分构建了一个腾讯看点的实时数据仓库;第二部分就是基于OLAP存储引擎,开发了多维实时数据分析系统。
我们为什么要构建实时数仓,因为原始的上报数据量非常大,一天上报峰值就有上万亿条。而且上报格式混乱。缺乏内容维度信息、用户画像信息,下游没办法直接使用。而我们提供的实时数仓,是根据腾讯看点信息流的业务场景,进行了内容维度的关联,用户画像的关联,各种粒度的聚合,下游可以非常方便的使用实时数据。