导读:本次分享题目为基于Doris的知乎DMP系统架构与实践,由知乎用户理解&数据赋能研发Leader 侯容老师带来经验分享,主要围绕四个方面展开介绍:

apachedoris架构原理及特性(基于Doris的知乎)(1)


01

背景

DMP本身是个老生常谈的业务领域,在广告系统出现的时候就有了类似DMP平台的系统。业界做得比较好的有腾讯广点通、阿里达摩盘。

知乎搭建DMP的原因可简单概括为:知乎存在大量站内运营的业务需要,搭建DMP平台需要支持同知乎内部系统的对接,搭建DMP存在一定量的知乎定制化需求,需要适配知乎的内部运营流程。

1. DMP业务背景

首先,抛出问题:知乎业务中具体存在哪些问题需要解决?为什么要建立DMP平台来解决这些问题?

下面围绕业务模式业务场景业务需求等三个主要方面,来具体说明建设DMP平台的必要性和功能定位。

apachedoris架构原理及特性(基于Doris的知乎)(2)

(1)业务模式

如何找出核心客户,围绕某个客户应该如何运营、如何适配营销操作、以及广告投放,如何进行人和业务的匹配,都需要完成对人的定向、对人的画像洞察,以及对人的理解和运营操作,这些都是DMP的主要业务定位。

知乎DMP主要包括三种业务模式:

(2)业务场景

针对上述三种业务模式,知乎DMP适配了多种业务场景:

(3)业务需求

基于三种业务模式、六种业务场景的拆解分析,提炼出人群管理的功能需求主要包括:

2. DMP业务流程

基于知乎DMP业务模式提炼、业务场景刻画、业务需求澄清等背景梳理,结合站内系统、站外系统交互协同,形成了一套业务流程。

apachedoris架构原理及特性(基于Doris的知乎)(3)

概括为四大核心功能模块

围绕站内运营自闭环、站内向站外投放闭环、站外向站内广告闭环等人群运营,可以灵活适配活动落地。

3.DMP画像特征

在人群定向模块,存在大量的人群标签筛选、组合标签筛选的应用要求,对DMP平台的画像特征库提出很高的要求。

知乎DMP按照三层结构进行画像特征分类设计

apachedoris架构原理及特性(基于Doris的知乎)(4)

第一层分类:按主题分组,目前主要包括个体信息、消费特征、创作、兴趣、图文等8组。

第二层分类:按属性分组,比如个体信息主题包括基础特征、设备属性、社会属性等,知乎DMP目前有40组属性特征分组。

第三层分类:按标签类分组,比如性别类、手机品牌类、话题类等,目前有120类标签。

基于以上三层特征设计,知乎DMP画像特征库已有标签(标签值)超过250万。

4.DMP功能梳理

按照业务功能和特征管理两大能力进行说明:

详细的功能分布参见下图:

apachedoris架构原理及特性(基于Doris的知乎)(5)

--

02

架构与实现

一套好的架构设计,能够有效降低业务功能实现的复杂度;能够支撑业务功能动态扩展与迭代;对于有外部交互的系统,能够保障系统的兼容性和开放性;能够保持系统运维的便捷性。

1.DMP平台架构

知乎DMP平台的整体架构,不同模块进行差异化设计:

对外模块:

lDMP接口:高稳定性、高并发高吞吐。

lDMP前台:操作简单,低运营使用成本。

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

业务模块:

架构分布详情,如下图示:

apachedoris架构原理及特性(基于Doris的知乎)(6)

2.DMP平台功能盘点

按照业务向、基础向两部分进行特征功能介绍。

(1)业务向功能

核心功能为人群定向、人群洞察两部分,分别支撑业务应用侧和价值运营侧服务。

apachedoris架构原理及特性(基于Doris的知乎)(7)

知乎DMP业务向功能上线运营情况介绍:

(2)基础向功能

主要包括特征建设、ID-Mapping能力、计算任务运维等三部分工作,形成三组专业小组分工协同。

apachedoris架构原理及特性(基于Doris的知乎)(8)

知乎DMP基础向功能运营情况介绍:

3.DMP特征数据链路及存储

数据导入/存储、快速查询/读取,是DMP平台关键的数据技术环节。

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

apachedoris架构原理及特性(基于Doris的知乎)(9)

(1)离线标签链路(Spark批处理计算过程)

(2)实时标签链路(Flink实时计算处理过程)

(3)枚举采集

即250万标签的应用服务能力。

知乎DMP平台现有的125个标签类分组,分别由120个离线业务存储过程和5个实时业务事件过程计算完成,已经生成了各类原子标签。

ES标签搜索存储:在面向标签筛选应用环节,大规模标签录入操作成本太高,所有选择使用Bulk Load自动写入ES,生成标签枚举表tag_group表(存储标签中文信息及搜索,约250万记录),生成连续自增ID;

Doris中核心存储:根据ES中的连续自增ID,可以映射到Doris中用户标签表tag_map表(倒排表,用户和标签组合表,约有1100亿数据),Doris中还存在第三张表即用户行为表,是基于实时数仓够贱的,这里不做扩展介绍。

基于这三张表,给客户洞察、人群定向提供了相应的数据支撑基础。

4.人群定向流程

基于上个环节生成的ES-标签枚举表、Doris-用户标签表、Doris-ID转换映射表,进行人群定向流程解读。

场景一:通过购物车圈选人群标签,生成人群包,进行人群预估、继而完成人群圈选,最后写入Redis的过程。

第一步:标签搜索(相关标签、标签组合等设置,购物车生成)

第二步:人群预估(潜在人群包的动态评估,根据标签组合联动调整购物车配置,完成目标事件的人群匹配)

第三步:生成人群包,关联原数据、ID-Mapping 关联转换(站外);将人群包ID和人群ID写入Redis,支持高并发查询使用。若非高并发场景,可以写入离线存储机制使用。

场景二:种子人群泛化场景,依托AI平台完成模型训练和人群推理泛化,通过置信度去选择,打上人群标签和人群包,最后写会Doris的过程。

该场景包括历史效果人群泛化、圈选人群的特征泛化等。

apachedoris架构原理及特性(基于Doris的知乎)(10)

日常业务运营过程中,对标签、历史人群进行组合、泛化,再限制条件进行圈选、洞察,最后再调整等灵活组合、交叉应用模式。

--

03

难点及解决方案

本部分主要围绕人群定向方面做进行总结分享。

1.人群定向性能优化的痛点

知乎DMP平台关键应用模块包括人群定向和客户洞察,都依赖基础的画像特征。基于当前250万的标签特征数据基础,如何解决以下两个场景痛点:

人群定向方面关注痛点问题一:人群预估(秒级响应)——针对投放和营销场景,对人群数量期望是一定的,通过类似购物车的模式,动态调整用户特征,如何能保障快速看到预计匹配的人数?

人群定向方面关注痛点问题二:人群圈选(分钟级响应)——热点运营,当热点事件发生后,快速进行人群包圈选抢事件,对人群包时间有很高要求。

apachedoris架构原理及特性(基于Doris的知乎)(11)

2.人群定向性能优化的思路(第一版)

解决上述性能问题的主要思路:

①倒排索引,将数据表变为bitmap。

②查询条件的与或非转变为bitmap的交并差。

③附带完成连续数值转变为离散标签,即发挥离散计算的性能优势,又提高了业务场景应用适配性。

apachedoris架构原理及特性(基于Doris的知乎)(12)

倒排序索引,示例如下图(左)所示:

ID-Mapping适配,基于倒排序索引优化结果,在导入的过程中,完成ID-Mapping的生成(支持bitmap),实现用户ID的连续自增。如下图(右)所示:

apachedoris架构原理及特性(基于Doris的知乎)(13)

结合倒排序索引存储方式优化调整,查询逻辑变化示例如下:

apachedoris架构原理及特性(基于Doris的知乎)(14)

经过上述优化,仍存在单一bitmap过大的问题,导致shuffle过程网络IO过大,交换过程中数据堆积Doris出现brpc传输拥堵报错,上百兆的bitmap间进行交并差计算性能低等情况;以及bitmap空间分布分散,导致每次查询都会有大量的数据交换,网络负载高,速度慢等特点。

3.人群定向性能优化的思路(第二版)

基于人群预估分钟级、人群圈选10分钟级的优化结果,再优化的核心思路是分而治之。

apachedoris架构原理及特性(基于Doris的知乎)(15)

第二版优化的解决思路:基于全站ID的交并差等价于将全站ID分组后的交并差结果的合并,故分而治之思路可行;考虑利用Doris的colocate group特性,将分组所有tag的bitmap阈值在同一台物理机上,避免网络开销;同时,升级Doris新版本,利用bitmap_and_not_count等组合函数,性能优于多函数嵌套等特性。

适配第二版优化的解决方案:查询过程调整,变更预估和圈人的查询逻辑实现;发挥多线程查询计算能力;查询代码嵌套条件优化;写入过程调整,进行百万人群写入分组,设置分组key;数据表设置colocate group。

分而治之方案的具体优化逻辑,如下图所示:

apachedoris架构原理及特性(基于Doris的知乎)(16)

优化前后的bitmap逻辑计算复杂度对比如下图所示:

apachedoris架构原理及特性(基于Doris的知乎)(17)

通过上述两版本优化,实现人群定向秒级响应,人群圈选分钟级响应效果。知乎DMP平台达到运营投产目标。

--

04

知乎DMP平台下一步迭代方向

1.业务运营优化

从DMP平台的多核心模块整体运营协同考虑,将目前松耦合的目标结果管理模块,同平台进行强绑定;将依赖流程绑定的A/B实验能力,与平台进行逻辑绑定。

apachedoris架构原理及特性(基于Doris的知乎)(18)

2.技术迭代优化

技术层面,主要结合平台日常运营圈选操作特点分析,实现以下两方面的提升:

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

导入效率提升:将每天2TB的数据导入,每15天大约会存11TB的数据,导入过程中加速策略——结合业界的Spark写OLTP引擎,考虑能否通过Spark直接写Doris Tablet文件,并挂载到FE。

apachedoris架构原理及特性(基于Doris的知乎)(19)

今天的分享就到这里,谢谢大家。


分享嘉宾:侯容 知乎

编辑整理:李挺 上海琢学

出品平台:DataFunTalk


01/分享嘉宾

apachedoris架构原理及特性(基于Doris的知乎)(20)

侯容|知乎 用户理解&数据赋能研发 Leader

毕业于北京化工大学,2018 年初入职知乎,在社区业务线完成多方向的业务流程建设和架构的搭建,2021 年开始负责知乎用户理解&数据赋能方向的研发团队管理,主要涵盖用户理解和实时数据的工程和业务研发。2021 年在知乎带领团队完成了实时数据系统从基建到业务层从 0 到 1 的建设及重写升级用户理解应用,形成「数据来源于业务,数据赋能于业务」的闭环,建设了相应的基建,提升了用户理解和实时数据的业务迭代效率,最终赋能业务拿到了不错的业务效果。


02/关于我们

DataFun:专注于大数据、人工智能技术应用的分享与交流。发起于2017年,在北京、上海、深圳、杭州等城市举办超过100 线下和100 线上沙龙、论坛及峰会,已邀请超过2000位专家和学者参与分享。其公众号 DataFunTalk 累计生产原创文章800 ,百万 阅读,14万 精准粉丝。

,