展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 系统应用 > 【遇见Doris】基于Doris的有道精品课数据中台建设实践

【遇见Doris】基于Doris的有道精品课数据中台建设实践

李荣谦有道精品课数据中台团队 数据中台实时数仓负责人我们本次想要和大家分享一下有道精品课数据中台的架构演进过程,以及Doris作为一个MPP分析型数据库是如何为不断增长的业务体量提供有效支撑并进行数据赋能的。本文以我们在实时数仓选型的经验为切入点,进一步着重分享使用Doris过程中遇到的问题以及我们

李荣谦有道精品课数据中台团队 数据中台实时数仓负责人

我们本次想要和大家分享一下有道精品课数据中台的架构演进过程,以及Doris作为一个MPP分析型数据库是如何为不断增长的业务体量提供有效支撑并进行数据赋能的。

本文以我们在实时数仓选型的经验为切入点,进一步着重分享使用Doris过程中遇到的问题以及我们针对这些问题所做出的调整和优化。

1 背景

1.1 业务场景

根据业务需求,目前有道精品课的数据层架构上可分为离线和实时两部分。离线系统主要处理埋点相关数据,采用批处理的方式定时计算。

而实时流数据主要来源于各个业务系统实时产生的数据流以及数据库的变更日志,需要考虑数据的准确性、实时性和时序特征,处理过程非常复杂。

有道精品课数据中台团队依托于其实时计算能力在整个数据架构中主要承担了实时数据处理的角色,同时为下游离线数仓提供实时数据同步服务。

数据中台主要服务的用户角色和对应的数据需求如下:

  • 运营/策略/负责人主要查看学生的整体情况,查询数据中台的一些课程维度实时聚合数据
  • 辅导/销售主要关注所服务学生的各种实时明细数据
  • 品控主要查看课程/老师/辅导各维度整体数据,通过T+1的离线报表进行查看
  • 数据分析师对数据中台T+1同步到离线数仓的数据进行交互式分析

1.2 数据中台前期系统架构及业务痛点

如上图所示,在数据中台1.0架构中我们的实时数据存储主要依托于Elasticsearch,遇到了以下几个问题:

  1. 聚合查询效率不高
  2. 数据压缩空间低
  3. 不支持多索引的join,在业务设计上我们只能设置很多大宽表来解决问题
  4. 不支持标准SQL,查询成本较高
2 实时数仓选型

基于上面的业务痛点,我们开始对实时数仓进行调研。当时调研了Doris, ClickHouse, TiDB+TiFlash, Druid, Kylin。

由于起初我们数据中台只有两名开发,而且存储相关的东西需要自行运维,所以我们对运维的成本是比较敏感的,在这一方面我们首先淘汰了Kylin和ClickHouse。

在查询方面,我们的场景大多为明细+聚合多维度的分析,所以Druid也被排除。

最后我们对聚合分析的效率方面进行对比,由于Doris支持Bitmap和RollUp,而TiDB+TiFlash不支持,所以我们最终选择了Doris来作为我们数据中台的主存储。

3 基于Apache Doris的数据中台2.0

3.1 架构升级

在完成了实时数仓的选型后,我们针对Doris做了一些架构上的改变以发挥它最大的作用,主要分为以下几个方面:

Flink双写

将所有Flink Job改写,在写入Elasticsearch的时候旁路输出一份数据到Kafka,并对复杂嵌套数据创建下游任务进行转化发送到Kafka,Doris使用Routine Load导入数据。

Doris on ES

由于之前我们的实时数仓只有ES,所以在使用Doris的初期,我们选择了通过Doris创建ES外表的方式来完善我们的Doris数仓底表。同时也降低了查询成本,业务方可以无感知地使用数仓底表。

具体查询Demo如下所示,我们通过学生的基础信息Join各种练习信息,对学生数据进行补齐。

数据同步

原来我们使用ES的时候,由于很多表没有数据写入时间,数据分析师需要每天扫全表导出全量数据到Hive,这对我们的集群有很大压力,并且也会导致数据延迟上升,我们在引入了Doris后,对所有数仓表都添加 eventStamp, updateStamp, deleted这三个字段。

  • eventStamp:事件发生时间
  • updateStamp:Doris数据更新时间,在Routine Load中生成
  • deleted:数据是否删除,由于我们很多实时数仓需要定时同步到离线数仓,所以数据需要采取软删除的模式

数据对下游同步时可以灵活的选择eventStamp或者updateStamp进行增量同步。

数据同步我们采用了多种方式,通过Hive表名后缀来决定不同同步场景:

  • _f:每天/每小时全量同步,基于Doris Export全量导出
  • _i:每天/每小时增量同步,基于Doris Export按分区导出/网易易数扫表导出
  • _d:每天镜像同步,基于Doris Export全量导出

指标域划分/数据分层

将Elasticsearch中的数据进行整理并结合后续的业务场景,我们划分出了如下四个指标域:

根据上面的指标域,我们基于星型模型开始构建实时数仓,在Doris中构建了20余张数仓底表以及10余张维表,通过网易易数构建了完整的指标系统。

微批生成DWS/ADS层

由于我们多数场景都是明细+聚合数据的分析,所以我们基于Doris insert into select的导入方式,实现了一套定时根据DWD层数据生成DWS/ADS层数据的逻辑,延迟最低可以支持到分钟级,整体的多层数仓表计算流程如下图:

对于明细数据在TiDB或者ES的,我们选择了在Flink中进行窗口聚合写入到下游Doris或者ES中。而对于明细数据只在Doris单独存在的数据,由于我们大部分使用了异步写入的方式,所以数据无法立即可读,我们在外围构建了支持模版化配置的定时执行引擎,支持分钟/小时级别的扫描明细表变更写入下游聚合表,具体模版配置如下图:

源表以及变更字段的监听配置必不可少,在interval时间窗口内,对多个源表进行扫描,扫描结果经merge后生成参数,再依据threshold进行拆分,传入多个insert sql中,最后每天凌晨进行T+1的全量聚合,以修复微批计算的错误数据。

具体的计算触发逻辑如下图:

数据血缘

我们基于拉取Routine Load和Flink数据以及服务上报的方式实现了数据中台完善的数据血缘,供数据开发/数据分析师进行查询。

由于我们的Flink开发模式为提交jar的形式,为了获取到任务的血缘,我们对每个算子的命名进行了格式化封装,血缘服务定时的拉取/v1/jobs/overview数据进行解析,我们将不同算子的格式命名封装为以下几种:

  • Source:sourceTypeName [address] [attr]
  • Sink:sinkTypeName [address] [attr]

具体的血缘服务逻辑如下图所示:

通过血缘服务内部的解析后,批量地将血缘数据拆分成了Node与Edge存储到了NebulaGraph中,前台服务进行查询即可获得如下图所示的一条完整血缘:

3.2 数据中台2.0架构

基于围绕Doris的系统架构调整,我们完成了数据中台2.0架构

  • 使用网易易数数据运河替换Canal,拥有了更完善的数据订阅监控
  • Flink 计算层引入 Redis/Tidb 来做临时/持久化缓存
  • 复杂业务逻辑拆分至 Grpc 服务,减轻 Flink 中的业务逻辑
  • 数据适配层新增 Restful 服务,实现一些 case by case 的复杂指标获取需求
  • 通过网易易数离线调度跑通了实时到离线的数据同步
  • 新增了数据报表/自助分析系统两个数据出口

4 Doris带来的收益

1. 数据导入方式简单,我们针对不同业务场景使用了三种导入方式

  • Routine Load:实时异步数据导入

  • Broker Load:定时同步离线数仓数据,用于查询加速

  • Insert into:定时通过DWD层数仓表生成DWS/ADS层数仓表

2. 数据占用空间降低,由原来Es中的1T左右降低到了200G左右

3. 数仓使用成本降低

  • Doris支持MySQL协议,数据分析师可以直接进行自助取数,一些临时分析需求不需要再将Elasticsearch数据同步到Hive供分析师进行查询。

  • 一些在ES中的明细表我们通过Doris外表的方式暴露查询,大大降低了业务方的查询成本。

  • 同时因为Doris支持Join,原来一些需要查询多个Index再从内存中计算的逻辑可以直接下推到Doris中,提升了查询服务的稳定性,加快了响应时间。

  • 聚合计算速度通过物化视图和列存优势获得了较大提升。

5 上线表现

目前已经上线了几十个实时数据报表,在线集群的P99稳定在1s左右。同时也上线了一些长耗时分析型查询,离线集群的P99稳定在1min左右。

同时我们基于Doris完成了标准化数仓的构建,在数据开发上跑通了一套完整的流程,使我们数据需求的日常迭代更加迅速。

6 总结和规划

Doris的引入推进了有道精品课数据分层的构建,加速了实时数仓的规范化进程。

数据中台团队在此基础上一方面向全平台各业务线提供统一的数据接口,并依托于Doris生产实时数据看板,另一方面定时将实时数仓数据同步至下游离线数仓供分析师进行自助分析,为实时和离线场景提供数据支撑。

对于后续工作的开展,我们做了如下规划:

  1. 基于Doris明细表生成更多的上层聚合表,降低Doris计算压力,提高查询服务的整体响应时间
  2. 基于Flink实现Doris Connector,实现Flink对Doris的读写功能
  3. 开发Doris on ES支持嵌套数据的查询

最后感谢百度Palo(Doris)团队的鼎力支持,为我们提供了很多技术上的帮助,在问题的解决上也十分迅速,为我们数据中台的飞速发展提供了可靠的支持。

关于 Apache Doris(Incubating)

Apache Doris(Incubating) 一款基于大规模并行处理技术的交互式SQL分析数据库,由百度于2018年贡献给 Apache 基金会,目前在 Apache 基金会孵化器中。

Doris官方网站:http://doris.incubator.apache.org/master/zh-CN/
Doris Github:https://github.com/apache/incubator-doris
Doris Gitee镜像:https://gitee.com/baidu/apache-doris
Doris开发者邮件组:如何订阅
Doris微信公众号:

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
系统应用
相关文章 更多
精品专题 更多
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

Mac软件 更多
photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。