数据作为互联网时代的基础生产资料,在各大公司企业拥有举足轻重的地位。数据的价值在互联网公司的体现,大致而言可以分成三类:
(1)发掘数据中的信息来指导决策,如产品运营、用户增长相关的BI报表
(2)依托数据优化用户体验和变现效率,如信息分发场景下的个性化推荐、效果广告等
(3)基于数据统计的业务监控,如监控大盘、安全风控等
在这些体现大数据价值的业务场景上,存在一个普遍的规律,即数据产生的价值,随着时间的推移而衰减。因此,随着公司业务的发展,传统的T+1式(隔日)的离线大数据模式越来越无法满足新兴业务的发展需求。开展实时化的大数据业务,是企业深入挖掘数据价值的一条必经之路。
爱奇艺大数据团队自2014年开始引入Kafka、Storm、Spark Streaming等实时化技术,2017年引入Apache Flink实时计算框架,逐步建设了一套打通数据采集、加工、分发、分析、应用等完整数据流程的实时大数据体系。这套实时大数据体系支持了峰值超过3000万QPS的实时数据处理,支持了如春晚直播、青春有你、尖叫之夜等大型活动的实时计算需求。本文将介绍爱奇艺实时大数据体系的主要架构、平台功能以及发展过程中的一些思考。
01
传统实时ETL模式的问题
在实时技术发展初期,大团队为各业务提供的是单纯的日志数据的实时解析服务。通过Flink ETL程序,将用户端上报日志、后台服务器日志、数据库binlog日志,解析成 key-value组装的json形态的结构化数据,发送到Kafka中供各业务使用。其中,ETL逻辑可以由外部配置平台注入,方便在解析逻辑修改时可以动态加载,减少Flink任务的重启频率。这个实时ETL的体系如下图所述:
随着实时大数据业务的发展,它的弊端不断出现:
(1)实时数据大量重复生产,各业务烟囱式开发,数据难以复用
(2)数据治理水平低下,数据生产者不知道数据在被谁消费
(3)稳定性差,不能抵御Flink和Kafka故障
为了解决这些问题,爱奇艺大数据团队开始建设实时大数据体系,推出管理Kafka的流数据服务平台、基于Flink的实时数据生产平台、基于Kafka的实时数仓等组件,打通实时数据流程。
02
实时数仓与传统数仓的区别
在传统的BI体系中,基于离线大数据构建数据仓库的过程,大部分是T+1的隔日离线计算。即每天凌晨开始从原始日志数据构建数仓,将多层级的离线计算任务,通过工作流系统进行串联。数仓构建任务失败后可以有由工作流系统触发任务重跑。一般来说,离线数仓构建任务的失败重跑,只影响数据生产出来的时间,不影响数据的完整性、正确性。
在设计离线数仓模型和对应的