首頁(yè) >資訊 >
apachedoris架構(gòu)原理及特性_基于Doris的知乎_全球今亮點(diǎn)
發(fā)布時(shí)間:2023-07-05 08:03:33 文章來(lái)源:互聯(lián)網(wǎng)
hello大家好,我是城鄉(xiāng)經(jīng)濟(jì)網(wǎng)小晟來(lái)為大家解答以上問(wèn)題,apachedoris架

hello大家好,我是城鄉(xiāng)經(jīng)濟(jì)網(wǎng)小晟來(lái)為大家解答以上問(wèn)題,apachedoris架構(gòu)原理及特性(基于Doris的知乎很多人還不知道,現(xiàn)在讓我們一起來(lái)看看吧!


(資料圖)

導(dǎo)讀:本次分享題目為基于Doris的知乎DMP系統(tǒng)架構(gòu)與實(shí)踐,由知乎用戶理解&數(shù)據(jù)賦能研發(fā)Leader 侯容老師帶來(lái)經(jīng)驗(yàn)分享,主要圍繞四個(gè)方面展開介紹:

01

背景

DMP本身是個(gè)老生常談的業(yè)務(wù)領(lǐng)域,在廣告系統(tǒng)出現(xiàn)的時(shí)候就有了類似DMP平臺(tái)的系統(tǒng)。業(yè)界做得比較好的有騰訊廣點(diǎn)通、阿里達(dá)摩盤。

知乎搭建DMP的原因可簡(jiǎn)單概括為:知乎存在大量站內(nèi)運(yùn)營(yíng)的業(yè)務(wù)需要,搭建DMP平臺(tái)需要支持同知乎內(nèi)部系統(tǒng)的對(duì)接,搭建DMP存在一定量的知乎定制化需求,需要適配知乎的內(nèi)部運(yùn)營(yíng)流程。

1. DMP業(yè)務(wù)背景

首先,拋出問(wèn)題:知乎業(yè)務(wù)中具體存在哪些問(wèn)題需要解決?為什么要建立DMP平臺(tái)來(lái)解決這些問(wèn)題?

下面圍繞業(yè)務(wù)模式、業(yè)務(wù)場(chǎng)景、業(yè)務(wù)需求等三個(gè)主要方面,來(lái)具體說(shuō)明建設(shè)DMP平臺(tái)的必要性和功能定位。

(1)業(yè)務(wù)模式

如何找出核心客戶,圍繞某個(gè)客戶應(yīng)該如何運(yùn)營(yíng)、如何適配營(yíng)銷操作、以及廣告投放,如何進(jìn)行人和業(yè)務(wù)的匹配,都需要完成對(duì)人的定向、對(duì)人的畫像洞察,以及對(duì)人的理解和運(yùn)營(yíng)操作,這些都是DMP的主要業(yè)務(wù)定位。

知乎DMP主要包括三種業(yè)務(wù)模式:

(2)業(yè)務(wù)場(chǎng)景

針對(duì)上述三種業(yè)務(wù)模式,知乎DMP適配了多種業(yè)務(wù)場(chǎng)景:

(3)業(yè)務(wù)需求

基于三種業(yè)務(wù)模式、六種業(yè)務(wù)場(chǎng)景的拆解分析,提煉出人群管理的功能需求主要包括:

2. DMP業(yè)務(wù)流程

基于知乎DMP業(yè)務(wù)模式提煉、業(yè)務(wù)場(chǎng)景刻畫、業(yè)務(wù)需求澄清等背景梳理,結(jié)合站內(nèi)系統(tǒng)、站外系統(tǒng)交互協(xié)同,形成了一套業(yè)務(wù)流程。

概括為四大核心功能模塊:

圍繞站內(nèi)運(yùn)營(yíng)自閉環(huán)、站內(nèi)向站外投放閉環(huán)、站外向站內(nèi)廣告閉環(huán)等人群運(yùn)營(yíng),可以靈活適配活動(dòng)落地。

3.DMP畫像特征

在人群定向模塊,存在大量的人群標(biāo)簽篩選、組合標(biāo)簽篩選的應(yīng)用要求,對(duì)DMP平臺(tái)的畫像特征庫(kù)提出很高的要求。

知乎DMP按照三層結(jié)構(gòu)進(jìn)行畫像特征分類設(shè)計(jì):

第一層分類:按主題分組,目前主要包括個(gè)體信息、消費(fèi)特征、創(chuàng)作、興趣、圖文等8組。

第二層分類:按屬性分組,比如個(gè)體信息主題包括基礎(chǔ)特征、設(shè)備屬性、社會(huì)屬性等,知乎DMP目前有40組屬性特征分組。

第三層分類:按標(biāo)簽類分組,比如性別類、手機(jī)品牌類、話題類等,目前有120類標(biāo)簽。

基于以上三層特征設(shè)計(jì),知乎DMP畫像特征庫(kù)已有標(biāo)簽(標(biāo)簽值)超過(guò)250萬(wàn)。

4.DMP功能梳理

按照業(yè)務(wù)功能和特征管理兩大能力進(jìn)行說(shuō)明:

詳細(xì)的功能分布參見(jiàn)下圖:

--

02

架構(gòu)與實(shí)現(xiàn)

一套好的架構(gòu)設(shè)計(jì),能夠有效降低業(yè)務(wù)功能實(shí)現(xiàn)的復(fù)雜度;能夠支撐業(yè)務(wù)功能動(dòng)態(tài)擴(kuò)展與迭代;對(duì)于有外部交互的系統(tǒng),能夠保障系統(tǒng)的兼容性和開放性;能夠保持系統(tǒng)運(yùn)維的便捷性。

1.DMP平臺(tái)架構(gòu)

知乎DMP平臺(tái)的整體架構(gòu),不同模塊進(jìn)行差異化設(shè)計(jì):

對(duì)外模塊:

lDMP接口:高穩(wěn)定性、高并發(fā)高吞吐。

lDMP前臺(tái):操作簡(jiǎn)單,低運(yùn)營(yíng)使用成本。

lDMP后臺(tái):日常開發(fā)工作配置化,降低開發(fā)成本。

業(yè)務(wù)模塊:

架構(gòu)分布詳情,如下圖示:

2.DMP平臺(tái)功能盤點(diǎn)

按照業(yè)務(wù)向、基礎(chǔ)向兩部分進(jìn)行特征功能介紹。

(1)業(yè)務(wù)向功能

核心功能為人群定向、人群洞察兩部分,分別支撐業(yè)務(wù)應(yīng)用側(cè)和價(jià)值運(yùn)營(yíng)側(cè)服務(wù)。

知乎DMP業(yè)務(wù)向功能上線運(yùn)營(yíng)情況介紹:

(2)基礎(chǔ)向功能

主要包括特征建設(shè)、ID-Mapping能力、計(jì)算任務(wù)運(yùn)維等三部分工作,形成三組專業(yè)小組分工協(xié)同。

知乎DMP基礎(chǔ)向功能運(yùn)營(yíng)情況介紹:

3.DMP特征數(shù)據(jù)鏈路及存儲(chǔ)

數(shù)據(jù)導(dǎo)入/存儲(chǔ)、快速查詢/讀取,是DMP平臺(tái)關(guān)鍵的數(shù)據(jù)技術(shù)環(huán)節(jié)。

DMP的批量、流式特征如何建設(shè)并落地到相應(yīng)的存儲(chǔ)?

(1)離線標(biāo)簽鏈路(Spark批處理計(jì)算過(guò)程)

(2)實(shí)時(shí)標(biāo)簽鏈路(Flink實(shí)時(shí)計(jì)算處理過(guò)程)

(3)枚舉采集

即250萬(wàn)標(biāo)簽的應(yīng)用服務(wù)能力。

知乎DMP平臺(tái)現(xiàn)有的125個(gè)標(biāo)簽類分組,分別由120個(gè)離線業(yè)務(wù)存儲(chǔ)過(guò)程和5個(gè)實(shí)時(shí)業(yè)務(wù)事件過(guò)程計(jì)算完成,已經(jīng)生成了各類原子標(biāo)簽。

ES標(biāo)簽搜索存儲(chǔ):在面向標(biāo)簽篩選應(yīng)用環(huán)節(jié),大規(guī)模標(biāo)簽錄入操作成本太高,所有選擇使用Bulk Load自動(dòng)寫入ES,生成標(biāo)簽枚舉表tag_group表(存儲(chǔ)標(biāo)簽中文信息及搜索,約250萬(wàn)記錄),生成連續(xù)自增ID;

Doris中核心存儲(chǔ):根據(jù)ES中的連續(xù)自增ID,可以映射到Doris中用戶標(biāo)簽表tag_map表(倒排表,用戶和標(biāo)簽組合表,約有1100億數(shù)據(jù)),Doris中還存在第三張表即用戶行為表,是基于實(shí)時(shí)數(shù)倉(cāng)夠賤的,這里不做擴(kuò)展介紹。

基于這三張表,給客戶洞察、人群定向提供了相應(yīng)的數(shù)據(jù)支撐基礎(chǔ)。

4.人群定向流程

基于上個(gè)環(huán)節(jié)生成的ES-標(biāo)簽枚舉表、Doris-用戶標(biāo)簽表、Doris-ID轉(zhuǎn)換映射表,進(jìn)行人群定向流程解讀。

場(chǎng)景一:通過(guò)購(gòu)物車圈選人群標(biāo)簽,生成人群包,進(jìn)行人群預(yù)估、繼而完成人群圈選,最后寫入Redis的過(guò)程。

第一步:標(biāo)簽搜索(相關(guān)標(biāo)簽、標(biāo)簽組合等設(shè)置,購(gòu)物車生成)

第二步:人群預(yù)估(潛在人群包的動(dòng)態(tài)評(píng)估,根據(jù)標(biāo)簽組合聯(lián)動(dòng)調(diào)整購(gòu)物車配置,完成目標(biāo)事件的人群匹配)

第三步:生成人群包,關(guān)聯(lián)原數(shù)據(jù)、ID-Mapping 關(guān)聯(lián)轉(zhuǎn)換(站外);將人群包ID和人群ID寫入Redis,支持高并發(fā)查詢使用。若非高并發(fā)場(chǎng)景,可以寫入離線存儲(chǔ)機(jī)制使用。

場(chǎng)景二:種子人群泛化場(chǎng)景,依托AI平臺(tái)完成模型訓(xùn)練和人群推理泛化,通過(guò)置信度去選擇,打上人群標(biāo)簽和人群包,最后寫會(huì)Doris的過(guò)程。

該場(chǎng)景包括歷史效果人群泛化、圈選人群的特征泛化等。

日常業(yè)務(wù)運(yùn)營(yíng)過(guò)程中,對(duì)標(biāo)簽、歷史人群進(jìn)行組合、泛化,再限制條件進(jìn)行圈選、洞察,最后再調(diào)整等靈活組合、交叉應(yīng)用模式。

--

03

難點(diǎn)及解決方案

本部分主要圍繞人群定向方面做進(jìn)行總結(jié)分享。

1.人群定向性能優(yōu)化的痛點(diǎn)

知乎DMP平臺(tái)關(guān)鍵應(yīng)用模塊包括人群定向和客戶洞察,都依賴基礎(chǔ)的畫像特征。基于當(dāng)前250萬(wàn)的標(biāo)簽特征數(shù)據(jù)基礎(chǔ),如何解決以下兩個(gè)場(chǎng)景痛點(diǎn):

人群定向方面關(guān)注痛點(diǎn)問(wèn)題一:人群預(yù)估(秒級(jí)響應(yīng))——針對(duì)投放和營(yíng)銷場(chǎng)景,對(duì)人群數(shù)量期望是一定的,通過(guò)類似購(gòu)物車的模式,動(dòng)態(tài)調(diào)整用戶特征,如何能保障快速看到預(yù)計(jì)匹配的人數(shù)?

人群定向方面關(guān)注痛點(diǎn)問(wèn)題二:人群圈選(分鐘級(jí)響應(yīng))——熱點(diǎn)運(yùn)營(yíng),當(dāng)熱點(diǎn)事件發(fā)生后,快速進(jìn)行人群包圈選搶事件,對(duì)人群包時(shí)間有很高要求。

2.人群定向性能優(yōu)化的思路(第一版)

解決上述性能問(wèn)題的主要思路:

①倒排索引,將數(shù)據(jù)表變?yōu)閎itmap。

②查詢條件的與或非轉(zhuǎn)變?yōu)閎itmap的交并差。

③附帶完成連續(xù)數(shù)值轉(zhuǎn)變?yōu)殡x散標(biāo)簽,即發(fā)揮離散計(jì)算的性能優(yōu)勢(shì),又提高了業(yè)務(wù)場(chǎng)景應(yīng)用適配性。

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

ID-Mapping適配,基于倒排序索引優(yōu)化結(jié)果,在導(dǎo)入的過(guò)程中,完成ID-Mapping的生成(支持bitmap),實(shí)現(xiàn)用戶ID的連續(xù)自增。如下圖(右)所示:

結(jié)合倒排序索引存儲(chǔ)方式優(yōu)化調(diào)整,查詢邏輯變化示例如下:

經(jīng)過(guò)上述優(yōu)化,仍存在單一bitmap過(guò)大的問(wèn)題,導(dǎo)致shuffle過(guò)程網(wǎng)絡(luò)IO過(guò)大,交換過(guò)程中數(shù)據(jù)堆積Doris出現(xiàn)brpc傳輸擁堵報(bào)錯(cuò),上百兆的bitmap間進(jìn)行交并差計(jì)算性能低等情況;以及bitmap空間分布分散,導(dǎo)致每次查詢都會(huì)有大量的數(shù)據(jù)交換,網(wǎng)絡(luò)負(fù)載高,速度慢等特點(diǎn)。

3.人群定向性能優(yōu)化的思路(第二版)

基于人群預(yù)估分鐘級(jí)、人群圈選10分鐘級(jí)的優(yōu)化結(jié)果,再優(yōu)化的核心思路是分而治之。

第二版優(yōu)化的解決思路:基于全站ID的交并差等價(jià)于將全站ID分組后的交并差結(jié)果的合并,故分而治之思路可行;考慮利用Doris的colocate group特性,將分組所有tag的bitmap閾值在同一臺(tái)物理機(jī)上,避免網(wǎng)絡(luò)開銷;同時(shí),升級(jí)Doris新版本,利用bitmap_and_not_count等組合函數(shù),性能優(yōu)于多函數(shù)嵌套等特性。

適配第二版優(yōu)化的解決方案:查詢過(guò)程調(diào)整,變更預(yù)估和圈人的查詢邏輯實(shí)現(xiàn);發(fā)揮多線程查詢計(jì)算能力;查詢代碼嵌套條件優(yōu)化;寫入過(guò)程調(diào)整,進(jìn)行百萬(wàn)人群寫入分組,設(shè)置分組key;數(shù)據(jù)表設(shè)置colocate group。

分而治之方案的具體優(yōu)化邏輯,如下圖所示:

優(yōu)化前后的bitmap邏輯計(jì)算復(fù)雜度對(duì)比如下圖所示:

通過(guò)上述兩版本優(yōu)化,實(shí)現(xiàn)人群定向秒級(jí)響應(yīng),人群圈選分鐘級(jí)響應(yīng)效果。知乎DMP平臺(tái)達(dá)到運(yùn)營(yíng)投產(chǎn)目標(biāo)。

--

04

知乎DMP平臺(tái)下一步迭代方向

1.業(yè)務(wù)運(yùn)營(yíng)優(yōu)化

從DMP平臺(tái)的多核心模塊整體運(yùn)營(yíng)協(xié)同考慮,將目前松耦合的目標(biāo)結(jié)果管理模塊,同平臺(tái)進(jìn)行強(qiáng)綁定;將依賴流程綁定的A/B實(shí)驗(yàn)?zāi)芰Γc平臺(tái)進(jìn)行邏輯綁定。

2.技術(shù)迭代優(yōu)化

技術(shù)層面,主要結(jié)合平臺(tái)日常運(yùn)營(yíng)圈選操作特點(diǎn)分析,實(shí)現(xiàn)以下兩方面的提升:

查詢效率提升:自動(dòng)探查SQL復(fù)雜查詢條件,預(yù)先合并成一個(gè)派生特征的bitmap,預(yù)測(cè)和圈選時(shí)對(duì)復(fù)雜條件SQL重寫為派生特征。

導(dǎo)入效率提升:將每天2TB的數(shù)據(jù)導(dǎo)入,每15天大約會(huì)存11TB的數(shù)據(jù),導(dǎo)入過(guò)程中加速策略——結(jié)合業(yè)界的Spark寫OLTP引擎,考慮能否通過(guò)Spark直接寫Doris Tablet文件,并掛載到FE。

今天的分享就到這里,謝謝大家。

分享嘉賓:侯容 知乎

編輯整理:李挺 上海琢學(xué)

出品平臺(tái):DataFunTalk

01/分享嘉賓

侯容|知乎 用戶理解&數(shù)據(jù)賦能研發(fā) Leader

畢業(yè)于北京化工大學(xué),2018 年初入職知乎,在社區(qū)業(yè)務(wù)線完成多方向的業(yè)務(wù)流程建設(shè)和架構(gòu)的搭建,2021 年開始負(fù)責(zé)知乎用戶理解&數(shù)據(jù)賦能方向的研發(fā)團(tuán)隊(duì)管理,主要涵蓋用戶理解和實(shí)時(shí)數(shù)據(jù)的工程和業(yè)務(wù)研發(fā)。2021 年在知乎帶領(lǐng)團(tuán)隊(duì)完成了實(shí)時(shí)數(shù)據(jù)系統(tǒng)從基建到業(yè)務(wù)層從 0 到 1 的建設(shè)及重寫升級(jí)用戶理解應(yīng)用,形成「數(shù)據(jù)來(lái)源于業(yè)務(wù),數(shù)據(jù)賦能于業(yè)務(wù)」的閉環(huán),建設(shè)了相應(yīng)的基建,提升了用戶理解和實(shí)時(shí)數(shù)據(jù)的業(yè)務(wù)迭代效率,最終賦能業(yè)務(wù)拿到了不錯(cuò)的業(yè)務(wù)效果。

02/關(guān)于我們

DataFun:專注于大數(shù)據(jù)、人工智能技術(shù)應(yīng)用的分享與交流。發(fā)起于2017年,在北京、上海、深圳、杭州等城市舉辦超過(guò)100 線下和100 線上沙龍、論壇及峰會(huì),已邀請(qǐng)超過(guò)2000位專家和學(xué)者參與分享。其公眾號(hào) DataFunTalk 累計(jì)生產(chǎn)原創(chuàng)文章800 ,百萬(wàn) 閱讀,14萬(wàn) 精準(zhǔn)粉絲。

本文就為大家講解到這里,希望對(duì)大家有所幫助。

標(biāo)簽:

精彩文檔: