【数媒在线课堂】在线广告场景:在线课堂

广告系统本质上是一种推荐系统,基于日志数据分析结果来影响下一次广告推荐在线课堂。同时,它也是一个在线交易平台,用户在手机上看到的广告通常是经过激烈竞价的结果。所以数据分析的实时性和高并发是广告数据分析系统中的关键。

网易云音乐之前的广告实时分析系统基于 Apache Druid 构建,随着数据量的增加和分析业务的发展,原有基于 Druid 的广告实时分析系统在实时性与灵活性上尽显疲态:单表 30 亿行离线数据导入耗时长达 12 小时,复杂查询响应时间超过 5 秒,难以支持业务侧低延迟、高并发的要求在线课堂。在对 Druid 和 Doris 做了深入调研和对评测后,网易云音乐决定使用 Doris 替换 Druid ,基于 Doris 构建新一代广告实时数仓,以支持驾驶舱、A/B 测试、自助 BI、内部报表以及面向广告主的高并发分析服务。

Apache Doris vs Apache Druid

引入 Doris 后的架构如下图所示在线课堂。在此架构下,成功解决了数据导入耗时过长和查询性能较差的问题,同时在数据更新和数据模型等方面实现了进一步优化。

在数据写入上: 引入 Doris 之后,广告系统每日可承载最高写入速率达到 307 MB/s,平均写入速率为 135 MB/s;每日写入行数最高可达 186 万 OPS/s,平均为 54.7 万 OPS/s在线课堂。之前使用 Druid 导入 Hive 单表 30 亿行数据时,导入时间通常需要 7-8 小时,甚至 11-12 小时,使用 Doris 已缩短至 3~4 小时,提升 3 倍。

在查询优化上: 采用 Colocate Join 和 Broadcast Join 的关联优化加速了大表与维表的查询性能;合理设置物化视图,以聚合高频查询数据,进一步提升查询速度;Doris 的数据隔离能力确保了不同业务之间的资源独立,有效优化了查询负载在线课堂

在存储模型上: 针对大流量实时数据,首先使用 Apache Flink 进行预聚合,以减少存储压力和提升查询速度在线课堂。聚合后的数据采用 Duplicate Key 模型,而维表则使用 Unique Key 模型,以确保数据的唯一性和准确性。在聚合表中,字段设置为特定类型,并根据使用频率对 key 进行排序,以提高前缀索引的命中率。同时,分区粒度设定为天,采用 log_time_minute 作为分区计算参数,使查询时通过过滤 log_time_minute 就能有效命中分区,而减少文件扫描量。

在数据更新上: 广告系统使用 Unique Key 实现了行级更新,保证维表数据的实时准确性在线课堂。Unique Key 模型默认更新语义为整行 UPSERT,即 UPDATE OR INSERT,若 Key 存在则更新,不存在则插入新数据。在整行 UPSERT 语义下,即使用户 Insert Into 指定部分列进行写入,Doris 也会在 Planner 中使用 NULL 值或默认值进行未提供列的填充。

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://gmstar.cn/post/152.html