轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

这篇具有很好参考价值的文章主要介绍了轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

一、背景

 文章来源地址https://www.toymoban.com/news/detail-427114.html

1、DMP 业务

 

知乎业务中存在哪些问题需要解决?

 

为什么要建立 DMP 平台来解决这些问题?

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

2、DMP 业务流程

 

当前这些业务的运营流程是怎样的?

 

DMP 如何与业务结合并赋能?

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

其中运营模式包含如下 3 类:

 

1)站内运营自闭环

 

  • 内容运营。拿内容找用户,定向消费用户,站内投放,分析效果和人群成分等。

     

  • 活动运营。拿活动找用户,定向消费用户,站内投放,分析效果和人群成分等。

     

  • 用户运营。洞察用户,分析。

 

2)站内向站外投放闭环

 

  • 增长投放。定向合适的人群,并在站外投放广告,数据回收,效果分析。

 

3)站外向站内广告闭环

 

  • 广告投放。站外用户导入,定向投放。或基于对目标群体的理解圈选定向投放。

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

3、DMP 画像特征

 

当前有哪些画像特征?

 

这些特征是如何分层分类的?

 

量级如何?

 

3 层级特征分类:

 

一级分类 (8 组) 

        二级分类 (40 组)

               标签组(120 个) 

                       性别、手机品牌、话题兴趣…

               标签(250 万) 

                       男|女、 HUAWEI|Apple、对影视内容感兴趣程度高…

 

二、架构与实现

 

1、DMP 功能梳理

 

DMP 通过设计哪些功能模块,支持相应的业务流程?

 

 

2、DMP 架构

 

DMP 通过设计哪些功能模块,支持相应的业务流程?

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

架构设计重点是解决业务功能的实现复杂度,同时架构设计也是明确模块重心和设计目标的一种重要手段。拆分后,不同模块都有不同的设计重心:

 

1)对外模块。针对使用方定制设计。

 

  • DMP 接口:高稳定性、高并发高吞吐

     

  • DMP 前台:操作简单,低运营使用成本

     

  • DMP 后台:日常开发工作配置化,降低开发成本

 

2)业务模块。以可扩展为第一要务。

 

  • 人群圈选:可扩展。新增特征 0 成本,新增规则低成本。

     

  • 人群洞察:可扩展。新增特征 0 成本,新增洞察方式低成本。

     

  • 人群泛化:可扩展。新增泛化方式低成本。

 

3)业务支持模块。线性水平扩展及屏蔽内部逻辑。

 

  • 特征生产:扩展成本低。原子特征低成本生产,派生特征通过后台可配置

     

  • ID Mapping:屏蔽 ID 打通逻辑

     

  • 计算任务运维:屏蔽机器资源和任务依赖的逻辑

     

  • 存储:可扩展可持续,不因业务成长而导致成本大幅增加

 

3、DMP 平台功能盘点

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

DMP 上线至今支持了:

 

  • 5+ 万人群定向

  • 400+ 次人群洞察

  • 60+ 次人群泛化

 

数据量级:

 

  • 120 个标签组

  • 250 万个标签

  • 1100 亿条用户 x 标签的数据

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

数据量级:

 

  • 每日 2.x TB 共 5 日 11 TB(离线、实时)特征(Doris)

 

  • 120 个离线生产任务和 5 个实时生产任务

 

  • 每日 6100 次人群预估,300 个人群圈选,1-2 个人群洞察,1 个人群泛化任务

 

4、特征数据链路及存储

 

DMP 的批量、流式特征如何建设并落地到相应的存储?

 

 

数据量级:

 

1)特征链路

 

  • 离线 Spark:Hive -> 特征抽取 -> 离线标签 -> mapping -> Doris / ES / HDFS

 

  • 实时 Flink:Kafka -> 特征抽取 -> 实时标签 -> mapping -> Doris / ES / HDFS

 

2)存储

 

① Doris

 

  • 用户 x 标签:用户有哪些标签(1100 亿)

 

  • id mapping:id 转化宽表(8.5 亿)

 

② ElasticSearch

 

  • 标签枚举表:标签中文信息及搜索(250 万)

 

5、人群定向流程

 

人群定向分哪几个过程?怎么做的?

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

子流程:标签搜索、标签选择、人群预估、人群圈选

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

子流程:种子人群上传、人群泛化

 

流程图中主要介绍了:标签搜索、标签选择、人群预估、人群圈选、种子人群上传、人群泛化几个子流程的执行过程。具体在业务上执行的人群定向流程很多,以下说几种典型的:

 

  • 标签加购物车 -> 圈选。

 

  • 传种子人群 -> 泛化。

 

  • 历史效果人群 -> 泛化 -> 叠加本次运营特点 -> 圈选。

 

  • 历史效果人群 -> 洞察 -> 重新生成标签关系 -> 圈选 -> 叠加历史正向人群 -> 泛化 -> 限制分发条件 -> 圈选。

 

  • 对标签、历史人群进行组合、泛化、再限制条件再圈选、洞察,最后再调整等等。

 

三、难题及解决方案

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

在 DMP 业务中,我们主要遇到了人群定向方面的难题,难题的原因主要有:1、人群特征数量大(1200 亿);2、时间要求低(人群预估 1 秒,圈选 1 分钟)。

 

1、优化第一版

 

倒排、id mapping 以及查询逻辑优化

 

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

2、优化第二版

 

分而治之

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

 

  • 将连续一块的用户 id 的不同 tag 的数据,都增加统一的 group 字段进行分组。

 

  • 在 group 内完成交并差后,最后进行数据汇总。

 

  • 同时开启多线程模式,提升每组的计算效率。

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

四、未来及展望

 

1、业务向

 

轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践

 

2、技术向

 

1)提升查询效率

 

  • 自动探测 SQL 复杂查询条件预先合并成一个派生特征的 bitmap,预测和圈人时对复杂条件 SQL 重写为派生特征。

 

2)提升导入速度

 

  • Spark 直接写 Doris Tablet 文件,并挂载到 FE。

 

  • 针对大导入场景与 Doris 团队共建,提升写入效率。

 

作者丨侯容

到了这里,关于轻松存储千亿级数据,知乎基于Doris的DMP系统架构实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android DataStore:安全存储和轻松管理数据

    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 我们继续总结学习 Java基础知识 ,温故知新。 DataStore 是一种用于 Android 应用程序数据存储的新的推荐方式。 它

    2024年02月12日
    浏览(24)
  • Flutter必备技能:轻松掌握本地存储与数据库优化技巧!

    正因为有网络,App拥有与外界进行信息交换的通道,也因此具备了更新数据的能力。不过,经过交换后的数据通常都保存在内存中,而应用一旦运行结束,内存就会被释放,这些数据也就随之消失了。 因此,我们需要把这些更新后的数据以一定的形式,通过一定的载体保存起

    2024年02月09日
    浏览(49)
  • 基于Doris构建亿级数据实时数据分析系统

    转载至我的博客 https://www.infrastack.cn ,公众号:架构成长指南 随着公司业务快速发展,对业务数据进行增长分析的需求越来越迫切,与此同时我们的业务数据量也在快速激增、每天的数据新增量大概在30w 左右,一年就会产生1 个亿的数据,显然基于传统MySQL数据库已经无法支

    2024年02月19日
    浏览(36)
  • 03 - 字符串性能优化不容小觑,百M内存轻松存储几十G数据

    String 对象是我们使用最频繁的一个对象类型,但它的性能问题却是最容易被忽略的。String 对象作为 Java 语言中重要的数据类型,是内存中占据空间最大的一个对象。高效地使用字符串,可以提升系统的整体性能。 接下来我们就从 String 对象的实现、特性以及实际使用中的优

    2024年02月12日
    浏览(30)
  • 【大数据】Doris:基于 MPP 架构的高性能实时分析型数据库

    Apache Doris 是一个基于 MPP ( Massively Parallel Processing , 大规模并行处理 )架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于

    2024年02月11日
    浏览(43)
  • 查询速度提升15倍!银联商务基于 Apache Doris 的数据平台升级实践

    本文导读: 在长期服务广大规模商户的过程中,银联商务已沉淀了庞大、真实、优质的数据资产数据,这些数据不仅是银联商务开启新增长曲线的基础,更是进一步服务好商户的关键支撑。为更好提供数据服务,银联商务实现了从 Hadoop 到 Apache Doris 的架构升级,使数据 导入

    2024年02月02日
    浏览(42)
  • 代立冬:基于Apache Doris+SeaTunnel 实现多源实时数据仓库解决方案探索实践

    大家好,我是白鲸开源的联合创始人代立冬,同时担任 Apache DolphinScheduler 的 PMC chair 和 SeaTunnel 的 PMC。作为 Apache Foundation 的成员和孵化器导师,我积极参与推动多个开源项目的发展,帮助它们通过孵化器成长为 Apache 的顶级项目。 今天的分享的主题其实还是从开源到商业,

    2024年02月04日
    浏览(47)
  • Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库

    Apache Doris是一个基于MPP架构的易于使用,高性能和实时的分析数据库,以其极高的速度和易用性而闻名。海量数据下返回查询结果仅需亚秒级响应时间,不仅可以支持高并发点查询场景,还可以支持高通量复杂分析场景。 这些都使得 Apache Doris 成为报表分析、即席查询、统一

    2024年02月03日
    浏览(41)
  • 阿里CCO:基于 Hologres 的亿级明细 BI 探索分析实践

    CCO是Chief Customer Officer的缩写,也是阿里巴巴集团客户体验事业部的简称。随着业务的多元化发展以及行业竞争的深入,用户体验问题越来越受到关注。CCO体验业务运营小二日常会大量投入在体验洞察分析中,旨在通过用户的声音数据结合交易、物流、退款等业务数据,洞察发

    2024年02月04日
    浏览(26)
  • dmp文件导入数据库服务器

    一、什么是dmp文件 二、dmp文件导入 创建用户 登录到linux服务器 切换oracle用户 登录到oracle数据库 切换到数据库存储端(pdb) 创建数据库用户 用户授权 创建dmp文件存储目录并赋权 切换root用户,赋予读写权限 导入dmp文件 将dmp文件上传到/oradata目录下 切换到oracle用户 执行导入

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包