网易云音乐基于 Apache Doris 替换了早期架构中 Kylin、Druid、Clickhouse、Elasticsearch、HBase 等引擎,统一了实时分析架构,并广泛应用于广告实时数仓、日志平台和会员报表分析等典型场景中,带来导入性能提升 3~30 倍,机器成本整体降低 55%、部分场景下高达 85%,每年节省数百万成本,综合效能提升 3~7 倍等显著收益。
截止目前,已有超过 9 个业务场景使用 Apache Doris,合计约 8 个 Doris 集群、100 多台机器,常规使用存储近 3PB、总容量近 8PB。
网易云音乐实时分析诉求多样,早期采用了多引擎并存的架构来满足需求,使用的组件包括 Druid、Kylin、Impala、ClickHouse 、Elasticsearch 和 Hbase。然而,这种架构虽然满足了多样化分析诉求,但是带来了数据和资源冗余严重、运维困难、稳定性差、开发效率低、数据流维护复杂等一系列难题。
因为 Apache Doris 具有实时、统一、运维简单、社区活跃等特点,网易云音乐引入了 Doris 来解决这些难题。基于 Apache Doris 的新架构如下图。
广告系统本质上是一种推荐系统,基于日志数据分析结果来影响下一次广告推荐。同时,它也是一个在线交易平台,用户在手机上看到的广告通常是经过激烈竞价的结果。所以数据分析的实时性和高并发是广告数据分析系统中的关键。
网易云音乐之前的广告实时分析系统基于 Apache Druid 构建,随着数据量的增加和分析业务的发展,原有基于 Druid 的广告实时分析系统在实时性与灵活性上尽显疲态:单表 30 亿行离线数据导入耗时长达 12 小时,复杂查询响应时间超过 5 秒,难以支持业务侧低延迟、高并发的要求。在对 Druid 和 Doris 做了深入调研和对评测后,网易云音乐决定使用 Doris 替换 Druid ,基于 Doris 构建新一代广告实时数仓,以支持驾驶舱、A/B 测试、自助 BI、内部报表以及面向广告主的高并发分析服务。
Apache Doris vs Apache Druid
引入 Doris 后的架构如下图所示。在此架构下,成功解决了数据导入耗时过长和查询性能较差的问题,同时在数据更新和数据模型等方面实现了进一步优化。
log_time_minute
作为分区计算参数,使查询时通过过滤 log_time_minute
就能有效命中分区,而减少文件扫描量。UPSERT
,即 UPDATE OR INSERT,若 Key 存在则更新,不存在则插入新数据。在整行 UPSERT
语义下,即使用户 Insert Into 指定部分列进行写入,Doris 也会在 Planner 中使用 NULL 值或默认值进行未提供列的填充。网易云音乐每天都会产生大量用户行为数据、业务数据及日志数据,面对每日万亿级别数据的增量,网易云音乐早期的日志库以 ClickHouse 为核心构建,但存在运维成本高、并发能力不足、写入性能不稳定等问题。为此,使用 Apache Doris 作为日志库新方案,替换了 ClickHouse。目前已经稳定运行 3 个季度,规模达到 50 台服务器,2PB 数据,每天新增日志量超过万亿条,峰值写入吞吐达 6GB/s。
Apache Doris vs ClickHouse
基于 Apache Doris 的日志库如下图所示。客户端、服务端日志以及数据平台组件运行日志通过采集、清洗、加工后写入 Doris 日志库中,由日志库进行明细和聚合查询,为异常用户行为、社区热点监控、任务异常分析、任务预警、大盘监控业务场景提供服务。
Doris 的引入在查询响应、并发能力、使用成本等多方面可观的收益:
Too many simultaneous queries
错误,而 Apache Doris 能够支撑 500+ 并发查询。Doris 还可以对单次查询的数据量和并发数进行调整,以灵活应对不同场景下的并发要求。在企业精细化运营的背景下,会员数据分析已成为推动业务增长的重要动力。它承担着用户画像构建、消费行为洞察和精准营销策略制定等关键服务,这些服务主要依赖于数仓的多维分析能力。之前采用基于 Kylin 的架构,需要提前构建 Cube,数据膨胀严重、构建成本高昂、查询分析不够灵活。因此,决定引入 Apache Doris 进行优化。
Apache Doris vs Apache Kylin
引入 Apache Doris 后,具体收益如下:
早期使用 Kylin 时,数据导入需要构建大量的 Cube,而构建 Cube 需要耗费大量的时间和资源。而替换为 Doris 后,数据导入耗时从原先的 6-10 小时缩短至于 10 分钟内,导入效率至少提升 36 倍。其次,所需的存储空间也从 220 TB 减少至 13 TB,存储空间降低高达 94%,机器成本也从 35 台降低至 5 台,机器成本降低 85%。
该场景下,通常要求能够秒级别返回结果。而查询通常涉及多张表先进行 Join 计算、再聚合计算,Kylin 在该过程会消耗大量计算资源,并且难以保证时效性。对此,Doris 依赖其出色的复杂查询能力,并结合物化视图能够很好应对,它不仅支持直接查询,也支持透明改写,优化器会依据改写算法和代价模型,自动选择最优的物化视图来响应请求。在使用 Doris 之后,查询耗时从 4min 降到 20s,显著提升了查询性能。
网易云音乐使用 Apache Doris 替换了早期架构中 Kylin、Druid、Clickhouse、Elasticsearch、HBase 等引擎,统一了实时分析架构,广泛应用于广告系统、日志平台和会员报表分析等典型场景,在写入、查询、存储性能方面得到全面提升:导入性能提升 3~30 倍,机器成本整体降低 55%、部分场景下高达 85%,每年节省数百万成本,综合效能提升 3~7 倍等显著收益。未来,网易云音乐将进一步挖掘 Doris 能力,扩展其应用范围:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。