从ClickHouse到Apache Doris:网易云音乐日志数据平台的华丽转身
2025-02-25 09:33:49

在当今数据驱动的时代,日志数据已成为企业洞察系统状态、监控网络安全及分析业务动态的宝贵资源。网易云音乐,作为国内领先的音乐平台,每日产生海量用户行为数据、业务数据及日志数据。这些数据在异常行为跟踪、客诉问题定位、运行状态监控、性能优化等方面发挥着举足轻重的作用。然而,面对每日万亿级别数据的增量,如何高效、稳定地存储、查询及分析这些数据,成为了网易云音乐面临的一大挑战。

一、ClickHouse的局限与Doris的崛起

早期,网易云音乐采用ClickHouse作为日志库方案。然而,随着业务的发展,ClickHouse的运维复杂度高、不支持倒排索引等问题逐渐显现,无法满足日益增长的业务需求。为此,网易云音乐开始寻找更优质的解决方案。经过深入调研与对比,Apache Doris凭借其简单易用、运维难度低、高吞吐、低延迟日志写入以及开放、易用的上下游生态等优势,成功吸引了网易云音乐的目光。最终,网易云音乐决定引入Doris作为日志库新方案,替换ClickHouse。

二、架构升级与存储设计

由于ClickHouse和Doris均采用关系数据库模型及SQL,因此架构变化很小,迁移也比较简单。在新架构中,网易云音乐使用Doris替代ClickHouse作为日志存储和分析引擎。只需调整上游Flink写入程序,将日志写入Doris,并更新下游日志查询的SQL语句即可。在迁移过程中,网易云音乐进行了为期两周的双跑测试,确保数据的一致性。

在存储设计方面,网易云音乐对表结构进行了精心设计。采用基于dt字段按天分区,并使用Dynamic Partition功能自动创建和删除分区。同时,采用RANDOM随机分桶,既保证了各分桶的数据均衡,也能大幅提升写入性能。在排序键的设计上,网易云音乐根据查询需求,选择了application_id、log_type、container_id、logs_timestamp、log_level、host_name作为排序键,以快速定位所需数据。此外,还对需要全文检索的日志文本字段创建了倒排索引,加速了关键词检索。

三、写入性能优化与稳定性提升

在写入流程中,网易云音乐遇到了诸多问题,如默认batch size太小导致吞吐量低、写入tablet太多影响性能、BE间负载不均衡等。针对这些问题,网易云音乐进行了多项优化。通过直接写入压缩流、开启单tablet导入功能、随机选择BE节点写入数据等方式,大幅提升了写入性能。同时,调整failover策略、优化重试逻辑、增加监控指标等,也提高了系统的稳定性和容错能力。

四、查询性能提升与全文检索加速

在查询方面,Doris也展现出了强大的性能。通过优化查询语句、利用倒排索引等技术手段,Doris的整体P99查询延迟降低了30%。特别是全文检索性能,通过倒排索引加速,Doris的MATCH查询性能比LIKE查询提升了3-7倍。这不仅提高了查询效率,还降低了查询成本。

五、未来展望与持续创新

未来,网易云音乐将继续深化Doris的应用,利用Doris的冷热分层存储等能力,在提高查询性能的同时进一步降低成本。同时,使用Doris Workload Group能力进行资源隔离,提升集群稳定性,按优先级保障业务使用。此外,网易云音乐还将探索更多应用场景,如在线查询等,充分发挥Doris出色的并发查询能力。Doris的数据湖扩展能力也是网易云音乐非常看重的能力,这将为规划中的One-SQL数据架构奠定坚实基础。