从 ClickHouse、Druid、Kylin 到 Doris:网易云音乐 PB 级实时分析平台降本增效

news2025/6/9 12:03:57

网易云音乐基于 Apache Doris 替换了早期架构中 Kylin、Druid、Clickhouse、Elasticsearch、HBase 等引擎,统一了实时分析架构,并广泛应用于广告实时数仓、日志平台和会员报表分析等典型场景中,带来导入性能提升 3~30 倍,机器成本整体降低 55%、部分场景下高达 85%,每年节省数百万成本,综合效能提升 3~7 倍等显著收益。

截止目前,已有超过 9 个业务场景使用 Apache Doris,合计约 8 个 Doris 集群、100 多台机器,常规使用存储近 3PB、总容量近 8PB。

  • 广告系统:通过使用 Doris 替换 Druid,P99 查询耗时控制在 2 秒内,(原先使用 Druid 查询 7 天内数据耗时尚可,但查询超过 7 天的数据会超时)。离线大表写入耗时也从原先的 11~12 小时降低至 3~4 小时。
  • 日志平台:使用 Doris 替换 ClickHouse,查询效率提升 60%,机器数量减少了 50%,每年节省数百万使用成本。
  • 会员报表分析:使用 Doris 替换 Kylin,大幅降本增效:数据导入耗时从原先的 6-10 小时缩短至于 10 分钟内,存储空间从 220 TB 减少至 13 TB,机器使用成本降低 85%。

基于 Apache Doris 的统一实时分析平台

网易云音乐实时分析诉求多样,早期采用了多引擎并存的架构来满足需求,使用的组件包括 Druid、Kylin、Impala、ClickHouse 、Elasticsearch 和 Hbase。然而,这种架构虽然满足了多样化分析诉求,但是带来了数据和资源冗余严重、运维困难、稳定性差、开发效率低、数据流维护复杂等一系列难题。

1. 基于 Apache Doris 的统一实时分析平台.jpeg

因为 Apache Doris 具有实时、统一、运维简单、社区活跃等特点,网易云音乐引入了 Doris 来解决这些难题。基于 Apache Doris 的新架构如下图。

  • 使用 Doris 替换了 Kylin、Druid、Clickhouse、Elasticsearch、HBase 多个引擎,Doris 统一提供查询及分析服务。
  • 在业务应用上,借助 Doris 的星型和雪花模型,大幅增强了多表关联分析和灵活查询能力。
  • 基于 Doris 湖仓一体的能力,可以将 Doris 中冷数据回写到 Hive 离线数仓,也可以直接基于 Doris 查询加速 Hive 中的数据,实现了湖仓融合架构。

1. 基于 Apache Doris 的统一实时分析平台-2.jpeg

在线广告场景

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

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

Apache Doris vs Apache Druid

apache-doris-vs-druid.png

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

在线广告场景.png

  • 在数据写入上: 引入 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 值或默认值进行未提供列的填充。

日志与可观测性场景

网易云音乐每天都会产生大量用户行为数据、业务数据及日志数据,面对每日万亿级别数据的增量,网易云音乐早期的日志库以 ClickHouse 为核心构建,但存在运维成本高、并发能力不足、写入性能不稳定等问题。为此,使用 Apache Doris 作为日志库新方案,替换了 ClickHouse。目前已经稳定运行 3 个季度,规模达到 50 台服务器,2PB 数据,每天新增日志量超过万亿条,峰值写入吞吐达 6GB/s。

Apache Doris vs ClickHouse

apache-doris-vs-clickhouse.png

基于 Apache Doris 的日志库如下图所示。客户端、服务端日志以及数据平台组件运行日志通过采集、清洗、加工后写入 Doris 日志库中,由日志库进行明细和聚合查询,为异常用户行为、社区热点监控、任务异常分析、任务预警、大盘监控业务场景提供服务。

3. 日志与可观测性场景.png

Doris 的引入在查询响应、并发能力、使用成本等多方面可观的收益:

  • 查询响应提升:整体 P99 查询延迟降低了 30%。特别是通过倒排索引加速,Doris 的全文检索 MATCH 查询性能比 LIKE 查询提升了 3-7 倍(在查询约 6TB 数据时,LIKE 查询耗时 7-9 秒,而 MATCH 查询仅需 1-3 秒)。此外,倒排索引的全文检索具备自动的大小写和单复数归一化能力,能够高效检索出更多相关日志。
  • 查询并发提升:ClickHouse 并发查询数超过 200 时就会经常出现 Too many simultaneous queries 错误,而 Apache Doris 能够支撑 500+ 并发查询。Doris 还可以对单次查询的数据量和并发数进行调整,以灵活应对不同场景下的并发要求。
  • 机器成本节省:得益于冷热数据的分层存储和高效压缩,机器数量减少了 50%,每年节省了数百万的成本。
  • 写入稳定性提升:FE / BE 发生单点故障时,都能自动感知和重试恢复,保证服务高可用。

会员分析场景

在企业精细化运营的背景下,会员数据分析已成为推动业务增长的重要动力。它承担着用户画像构建、消费行为洞察和精准营销策略制定等关键服务,这些服务主要依赖于数仓的多维分析能力。之前采用基于 Kylin 的架构,需要提前构建 Cube,数据膨胀严重、构建成本高昂、查询分析不够灵活。因此,决定引入 Apache Doris 进行优化。

Apache Doris vs Apache Kylin

apache-doris-vs-kylin.png

引入 Apache Doris 后,具体收益如下:

  • 导入效率提升 36 倍,机器使用效率提升 7 倍

    早期使用 Kylin 时,数据导入需要构建大量的 Cube,而构建 Cube 需要耗费大量的时间和资源。而替换为 Doris 后,数据导入耗时从原先的 6-10 小时缩短至于 10 分钟内,导入效率至少提升 36 倍。其次,所需的存储空间也从 220 TB 减少至 13 TB,存储空间降低高达 94%,机器成本也从 35 台降低至 5 台,机器成本降低 85%。

  • 查询性能提升 12 倍

    该场景下,通常要求能够秒级别返回结果。而查询通常涉及多张表先进行 Join 计算、再聚合计算,Kylin 在该过程会消耗大量计算资源,并且难以保证时效性。对此,Doris 依赖其出色的复杂查询能力,并结合物化视图能够很好应对,它不仅支持直接查询,也支持透明改写,优化器会依据改写算法和代价模型,自动选择最优的物化视图来响应请求。在使用 Doris 之后,查询耗时从 4min 降到 20s,显著提升了查询性能。

结束语

网易云音乐使用 Apache Doris 替换了早期架构中 Kylin、Druid、Clickhouse、Elasticsearch、HBase 等引擎,统一了实时分析架构,广泛应用于广告系统、日志平台和会员报表分析等典型场景,在写入、查询、存储性能方面得到全面提升:导入性能提升 3~30 倍,机器成本整体降低 55%、部分场景下高达 85%,每年节省数百万成本,综合效能提升 3~7 倍等显著收益。未来,网易云音乐将进一步挖掘 Doris 能力,扩展其应用范围:

  • 结合大模型 + AI:我们正在探索 Doris 与大模型 AI 能力的结合创新。目前,社区已经推出了 Apache Doris MCP Server,用户可通过自然语言在 Doris 集群上运行 SQL 查询、可利用 LLM 与 BI 进行交互、同时支持将分析结果嵌入到 AI 应用中,为用户提供了一套全面、强大且便捷的数据交互和分析工具。后续 Doris 还会在已有倒排索引全文检索基础上推出向量检索和 HybridSearch,用于 RAG 等场景,我们也将积极尝试在 AI 场景落地。
  • 数据湖:计划使用数据湖、存算分离以及冷热分层策略来提升集群的稳定性。
  • 稳定性建设:未来将构建集群管控平台,增强健康度监测能力。关注连接数、tablet 数量以及每个数据库的存储使用限制,避免因事务超限或存储空间超限而导致的任务失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Facebook接入说明

Facebook 原生 Messenger 聊天消息接入到一洽对话中 1、创建 Facebook 主页 进入 https://www.facebook.com/pages/create 页面根据提示创建主页(如果已经有待用主页,可跳过) 2、授权对话权限 1、向您的一洽负责人获取 Facebook 授权链接 2、…

Grafana 地图本土化方案:使用高德地图API平替GeoMap地图指南

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 📢 大家好,我是 WeiyiGeek,一名深耕安全运维开发(SecOpsDev)领域的技术从业者,致力于探索DevOps与安全的融合(De…

3 个优质的终端 GitHub 开源工具

1、Oh My Zsh Oh My Zsh 是一个帮助你管理和美化 zsh 终端的开源工具。它让你的终端更炫酷、更高效。安装后,你可以快速使用各种插件和主题,比如常见的 git 命令简化、支持多种编程语言工具等,每次打开终端都会有惊喜。无论你是开发者还是普…

亚马逊AWS云服务器高效使用指南:最大限度降低成本的实战策略

对于初次接触云计算的企业或个人开发者而言,亚马逊云服务器(Amazon EC2)的配置与成本控制往往面临双重挑战:既要理解数百种实例规格的技术参数,又要避免因配置不当导致的资源浪费。本文将深入剖析AWS EC2的核心使用场景…

Android设备推送traceroute命令进行网络诊断

文章目录 工作原理下载traceroute for android推送到安卓设备执行traceroutetraceroute www.baidu.com Traceroute(追踪路由) 是一个用于网络诊断的工具,主要用于追踪数据包从源主机到目标主机所经过的路由路径,以及每一跳&#x…

github开源协议选择

文章目录 怎么选协议宽松型协议 Permissive Licenses传染型协议 怎么选协议 希望代码被广泛使用,允许闭源 MIT、Apache 2.0、BSD需要专利保护 Apache 2.0强制开源衍生作品 GPL、AGPL开发库,允许闭源调用 LGPL云服务项目,防止白嫖 AGPL企业级…

详解Jenkins Pipeline 中git 命令的使用方法

在 Jenkins Pipeline 中,git 命令是用于从版本控制系统(如 Git)拉取代码的核心步骤。其用法灵活,支持多种配置参数,但需要遵循 Jenkins 流水线语法规范。 一、基础语法 1. 声明式流水线(Declarative Pipe…

【Mini-F5265-OB开发板试用测评】显示RTC日历时钟

一、前言 本章节承接上期的【Mini-F5265-OB开发板试用测评】硬件SPI方式驱动LCD屏帖子上。灵动微官方提供的“LibSamples_MM32F5260_V0.10.2”SDK中包含一个RTC日历的参考例程,因此将该功能移植到上期工程中,即可达成在LCD屏上显示RTC日历时钟。 官方提…

Github 2025-06-05 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2025-06-05统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1Go编程语言:构建简单、可靠和高效的软件 创建周期:3474 天开发语言:Go协议类型:BSD 3-Clause “New” or “Revise…

C++进阶--C++11--智能指针(重点)

文章目录 C进阶--智能指针(重点)智能指针使用的场景RAII和智能指针的设计思路C标准库智能指针的使用定制删除器智能指针的原理shared_ptr和weak_ptr循环引用(容易考)weak_ptr 其他知识扩展(类型转换)总结个人学习心得结语 很高兴和…

企业私有化部署DeepSeek实战指南:从硬件选型到安全运维——基于国产大模型的安全可控落地实践

一、部署前的战略评估与规划 私有化部署不仅是技术工程,更是企业数据战略的核心环节。需重点评估三方面: 1、业务场景适配性​ 适用场景:金融风控(需实时数据处理)、医疗诊断(敏感病历保护)、政…

【西门子杯工业嵌入式-5-串口实现数据收发】

西门子杯工业嵌入式-5-串口实现数据收发 一、通信基础1.1 什么是通信1.2 嵌入式系统中的通信 二、串行通信原理2.1 串行通信简介2.2 通信参数约定 三、GD32F470 串口资源与性能3.1 串口硬件资源 四、串口通信的实现4.1 串口初始化流程4.2 串口发送函数编写4.3 使用 printf 实现…

深度学习登上Nature子刊!特征选择创新思路

2025深度学习发论文&模型涨点之——特征选择 特征选择作为机器学习与数据挖掘领域的核心预处理步骤,其重要性在当今高维数据时代日益凸显。 通过识别最具判别性的特征子集,特征选择算法能够有效缓解"维度灾难"、提升模型泛化能力&#x…

javaSE复习(7)

1.KMP算法 使用KMP算法在主串 "abaabaabcabaabc" 中搜索模式串 "abaabc",到匹配成功时为止,请问在匹配过程中进行的单个字符间的比较次数是()。 10次 用于互斥时 初值为1 在一个并发编程环境中&#xff0c…

WireShark相关技巧

文章目录 1 Wireshark如何设置解析SIP 1 Wireshark如何设置解析SIP 编辑->首选项->protocols->sip 选中sip 2 点击“编辑”->“首选项”->“protocol”->ESP ,按照如下红框显示,进行勾选,点击应用

DAY 45 Tensorboard使用介绍

知识点回顾: tensorboard的发展历史和原理tensorboard的常见操作tensorboard在cifar上的实战:MLP和CNN模型 作业:对resnet18在cifar10上采用微调策略下,用tensorboard监控训练过程。 PS: tensorboard和torch版本存在一定的不兼容…

台式机电脑CPU天梯图2025年6月份更新:CPU选购指南及推荐

组装电脑选硬件的过程中,CPU的选择无疑是最关键的,因为它是最核心的硬件,关乎着一台电脑的性能好坏。对于小白来说,CPU天梯图方便直接判断两款CPU性能高低,准确的说,是多核性能。下面给大家分享一下台式机电脑CPU天梯图2025年6月版,来看看吧。 桌面CPU性能排行榜2025 台…

将单体架构项目拆分成微服务时的两种工程结构

一.独立Project 1.示意图 此时我们创建一个文件夹,在这个文件夹中,创建N个Project,每一个Project对应一个微服务,组成我们的最终的项目。 2.特点 适合那种超大型项目,比如淘宝,但管理负担比较重。 二.Mave…

Unity3D 开发中的创新技术:解锁 3D 开发的新境界

在 3D 开发的广袤天地里,Unity3D 一直是众多开发者的得力伙伴。可如今,普通的开发方式似乎难以满足日益增长的创意与效率需求。你是否好奇,凭什么别家团队能用 Unity3D 打造出令人拍案叫绝的 3D 作品,自己却总感觉差了那么一点火候…

UOS 20 Pro为国际版WPS设置中文菜单

UOS 20 Pro为国际版WPS设置中文菜单 查看UOS操作系统系统安装国际版wps并汉化方法1:下载zh_CN.tar.gz语言包方法2:手动从国内版wps12的包中提取中文菜单解压国内版wps的包 复制中文语言包到wps国际版目录下安装Windows字体 安装开源office 查看UOS操作系统系统 # 查…