hello大家好,我是城鄉(xiāng)經(jīng)濟網(wǎng)小晟來為大家解答以上問題,apachedoris架構(gòu)原理及特性(基于Doris的知乎很多人還不知道,現(xiàn)在讓我們一起來看看吧!
(資料圖)
導讀:本次分享題目為基于Doris的知乎DMP系統(tǒng)架構(gòu)與實踐,由知乎用戶理解&數(shù)據(jù)賦能研發(fā)Leader 侯容老師帶來經(jīng)驗分享,主要圍繞四個方面展開介紹:
01
背景
DMP本身是個老生常談的業(yè)務領域,在廣告系統(tǒng)出現(xiàn)的時候就有了類似DMP平臺的系統(tǒng)。業(yè)界做得比較好的有騰訊廣點通、阿里達摩盤。
知乎搭建DMP的原因可簡單概括為:知乎存在大量站內(nèi)運營的業(yè)務需要,搭建DMP平臺需要支持同知乎內(nèi)部系統(tǒng)的對接,搭建DMP存在一定量的知乎定制化需求,需要適配知乎的內(nèi)部運營流程。
1. DMP業(yè)務背景
首先,拋出問題:知乎業(yè)務中具體存在哪些問題需要解決?為什么要建立DMP平臺來解決這些問題?
下面圍繞業(yè)務模式、業(yè)務場景、業(yè)務需求等三個主要方面,來具體說明建設DMP平臺的必要性和功能定位。
(1)業(yè)務模式
如何找出核心客戶,圍繞某個客戶應該如何運營、如何適配營銷操作、以及廣告投放,如何進行人和業(yè)務的匹配,都需要完成對人的定向、對人的畫像洞察,以及對人的理解和運營操作,這些都是DMP的主要業(yè)務定位。
知乎DMP主要包括三種業(yè)務模式:
(2)業(yè)務場景
針對上述三種業(yè)務模式,知乎DMP適配了多種業(yè)務場景:
(3)業(yè)務需求
基于三種業(yè)務模式、六種業(yè)務場景的拆解分析,提煉出人群管理的功能需求主要包括:
2. DMP業(yè)務流程
基于知乎DMP業(yè)務模式提煉、業(yè)務場景刻畫、業(yè)務需求澄清等背景梳理,結(jié)合站內(nèi)系統(tǒng)、站外系統(tǒng)交互協(xié)同,形成了一套業(yè)務流程。
概括為四大核心功能模塊:
圍繞站內(nèi)運營自閉環(huán)、站內(nèi)向站外投放閉環(huán)、站外向站內(nèi)廣告閉環(huán)等人群運營,可以靈活適配活動落地。
3.DMP畫像特征
在人群定向模塊,存在大量的人群標簽篩選、組合標簽篩選的應用要求,對DMP平臺的畫像特征庫提出很高的要求。
知乎DMP按照三層結(jié)構(gòu)進行畫像特征分類設計:
第一層分類:按主題分組,目前主要包括個體信息、消費特征、創(chuàng)作、興趣、圖文等8組。
第二層分類:按屬性分組,比如個體信息主題包括基礎特征、設備屬性、社會屬性等,知乎DMP目前有40組屬性特征分組。
第三層分類:按標簽類分組,比如性別類、手機品牌類、話題類等,目前有120類標簽。
基于以上三層特征設計,知乎DMP畫像特征庫已有標簽(標簽值)超過250萬。
4.DMP功能梳理
按照業(yè)務功能和特征管理兩大能力進行說明:
詳細的功能分布參見下圖:
--
02
架構(gòu)與實現(xiàn)
一套好的架構(gòu)設計,能夠有效降低業(yè)務功能實現(xiàn)的復雜度;能夠支撐業(yè)務功能動態(tài)擴展與迭代;對于有外部交互的系統(tǒng),能夠保障系統(tǒng)的兼容性和開放性;能夠保持系統(tǒng)運維的便捷性。
1.DMP平臺架構(gòu)
知乎DMP平臺的整體架構(gòu),不同模塊進行差異化設計:
對外模塊:
lDMP接口:高穩(wěn)定性、高并發(fā)高吞吐。
lDMP前臺:操作簡單,低運營使用成本。
lDMP后臺:日常開發(fā)工作配置化,降低開發(fā)成本。
業(yè)務模塊:
架構(gòu)分布詳情,如下圖示:
2.DMP平臺功能盤點
按照業(yè)務向、基礎向兩部分進行特征功能介紹。
(1)業(yè)務向功能
核心功能為人群定向、人群洞察兩部分,分別支撐業(yè)務應用側(cè)和價值運營側(cè)服務。
知乎DMP業(yè)務向功能上線運營情況介紹:
(2)基礎向功能
主要包括特征建設、ID-Mapping能力、計算任務運維等三部分工作,形成三組專業(yè)小組分工協(xié)同。
知乎DMP基礎向功能運營情況介紹:
3.DMP特征數(shù)據(jù)鏈路及存儲
數(shù)據(jù)導入/存儲、快速查詢/讀取,是DMP平臺關(guān)鍵的數(shù)據(jù)技術(shù)環(huán)節(jié)。
DMP的批量、流式特征如何建設并落地到相應的存儲?
(1)離線標簽鏈路(Spark批處理計算過程)
(2)實時標簽鏈路(Flink實時計算處理過程)
(3)枚舉采集
即250萬標簽的應用服務能力。
知乎DMP平臺現(xiàn)有的125個標簽類分組,分別由120個離線業(yè)務存儲過程和5個實時業(yè)務事件過程計算完成,已經(jīng)生成了各類原子標簽。
ES標簽搜索存儲:在面向標簽篩選應用環(huán)節(jié),大規(guī)模標簽錄入操作成本太高,所有選擇使用Bulk Load自動寫入ES,生成標簽枚舉表tag_group表(存儲標簽中文信息及搜索,約250萬記錄),生成連續(xù)自增ID;
Doris中核心存儲:根據(jù)ES中的連續(xù)自增ID,可以映射到Doris中用戶標簽表tag_map表(倒排表,用戶和標簽組合表,約有1100億數(shù)據(jù)),Doris中還存在第三張表即用戶行為表,是基于實時數(shù)倉夠賤的,這里不做擴展介紹。
基于這三張表,給客戶洞察、人群定向提供了相應的數(shù)據(jù)支撐基礎。
4.人群定向流程
基于上個環(huán)節(jié)生成的ES-標簽枚舉表、Doris-用戶標簽表、Doris-ID轉(zhuǎn)換映射表,進行人群定向流程解讀。
場景一:通過購物車圈選人群標簽,生成人群包,進行人群預估、繼而完成人群圈選,最后寫入Redis的過程。
第一步:標簽搜索(相關(guān)標簽、標簽組合等設置,購物車生成)
第二步:人群預估(潛在人群包的動態(tài)評估,根據(jù)標簽組合聯(lián)動調(diào)整購物車配置,完成目標事件的人群匹配)
第三步:生成人群包,關(guān)聯(lián)原數(shù)據(jù)、ID-Mapping 關(guān)聯(lián)轉(zhuǎn)換(站外);將人群包ID和人群ID寫入Redis,支持高并發(fā)查詢使用。若非高并發(fā)場景,可以寫入離線存儲機制使用。
場景二:種子人群泛化場景,依托AI平臺完成模型訓練和人群推理泛化,通過置信度去選擇,打上人群標簽和人群包,最后寫會Doris的過程。
該場景包括歷史效果人群泛化、圈選人群的特征泛化等。
日常業(yè)務運營過程中,對標簽、歷史人群進行組合、泛化,再限制條件進行圈選、洞察,最后再調(diào)整等靈活組合、交叉應用模式。
--
03
難點及解決方案
本部分主要圍繞人群定向方面做進行總結(jié)分享。
1.人群定向性能優(yōu)化的痛點
知乎DMP平臺關(guān)鍵應用模塊包括人群定向和客戶洞察,都依賴基礎的畫像特征?;诋斍?50萬的標簽特征數(shù)據(jù)基礎,如何解決以下兩個場景痛點:
人群定向方面關(guān)注痛點問題一:人群預估(秒級響應)——針對投放和營銷場景,對人群數(shù)量期望是一定的,通過類似購物車的模式,動態(tài)調(diào)整用戶特征,如何能保障快速看到預計匹配的人數(shù)?
人群定向方面關(guān)注痛點問題二:人群圈選(分鐘級響應)——熱點運營,當熱點事件發(fā)生后,快速進行人群包圈選搶事件,對人群包時間有很高要求。
2.人群定向性能優(yōu)化的思路(第一版)
解決上述性能問題的主要思路:
①倒排索引,將數(shù)據(jù)表變?yōu)閎itmap。
②查詢條件的與或非轉(zhuǎn)變?yōu)閎itmap的交并差。
③附帶完成連續(xù)數(shù)值轉(zhuǎn)變?yōu)殡x散標簽,即發(fā)揮離散計算的性能優(yōu)勢,又提高了業(yè)務場景應用適配性。
倒排序索引,示例如下圖(左)所示:
ID-Mapping適配,基于倒排序索引優(yōu)化結(jié)果,在導入的過程中,完成ID-Mapping的生成(支持bitmap),實現(xiàn)用戶ID的連續(xù)自增。如下圖(右)所示:
結(jié)合倒排序索引存儲方式優(yōu)化調(diào)整,查詢邏輯變化示例如下:
經(jīng)過上述優(yōu)化,仍存在單一bitmap過大的問題,導致shuffle過程網(wǎng)絡IO過大,交換過程中數(shù)據(jù)堆積Doris出現(xiàn)brpc傳輸擁堵報錯,上百兆的bitmap間進行交并差計算性能低等情況;以及bitmap空間分布分散,導致每次查詢都會有大量的數(shù)據(jù)交換,網(wǎng)絡負載高,速度慢等特點。
3.人群定向性能優(yōu)化的思路(第二版)
基于人群預估分鐘級、人群圈選10分鐘級的優(yōu)化結(jié)果,再優(yōu)化的核心思路是分而治之。
第二版優(yōu)化的解決思路:基于全站ID的交并差等價于將全站ID分組后的交并差結(jié)果的合并,故分而治之思路可行;考慮利用Doris的colocate group特性,將分組所有tag的bitmap閾值在同一臺物理機上,避免網(wǎng)絡開銷;同時,升級Doris新版本,利用bitmap_and_not_count等組合函數(shù),性能優(yōu)于多函數(shù)嵌套等特性。
適配第二版優(yōu)化的解決方案:查詢過程調(diào)整,變更預估和圈人的查詢邏輯實現(xiàn);發(fā)揮多線程查詢計算能力;查詢代碼嵌套條件優(yōu)化;寫入過程調(diào)整,進行百萬人群寫入分組,設置分組key;數(shù)據(jù)表設置colocate group。
分而治之方案的具體優(yōu)化邏輯,如下圖所示:
優(yōu)化前后的bitmap邏輯計算復雜度對比如下圖所示:
通過上述兩版本優(yōu)化,實現(xiàn)人群定向秒級響應,人群圈選分鐘級響應效果。知乎DMP平臺達到運營投產(chǎn)目標。
--
04
知乎DMP平臺下一步迭代方向
1.業(yè)務運營優(yōu)化
從DMP平臺的多核心模塊整體運營協(xié)同考慮,將目前松耦合的目標結(jié)果管理模塊,同平臺進行強綁定;將依賴流程綁定的A/B實驗能力,與平臺進行邏輯綁定。
2.技術(shù)迭代優(yōu)化
技術(shù)層面,主要結(jié)合平臺日常運營圈選操作特點分析,實現(xiàn)以下兩方面的提升:
查詢效率提升:自動探查SQL復雜查詢條件,預先合并成一個派生特征的bitmap,預測和圈選時對復雜條件SQL重寫為派生特征。
導入效率提升:將每天2TB的數(shù)據(jù)導入,每15天大約會存11TB的數(shù)據(jù),導入過程中加速策略——結(jié)合業(yè)界的Spark寫OLTP引擎,考慮能否通過Spark直接寫Doris Tablet文件,并掛載到FE。
今天的分享就到這里,謝謝大家。
分享嘉賓:侯容 知乎
編輯整理:李挺 上海琢學
出品平臺:DataFunTalk
01/分享嘉賓
侯容|知乎 用戶理解&數(shù)據(jù)賦能研發(fā) Leader
畢業(yè)于北京化工大學,2018 年初入職知乎,在社區(qū)業(yè)務線完成多方向的業(yè)務流程建設和架構(gòu)的搭建,2021 年開始負責知乎用戶理解&數(shù)據(jù)賦能方向的研發(fā)團隊管理,主要涵蓋用戶理解和實時數(shù)據(jù)的工程和業(yè)務研發(fā)。2021 年在知乎帶領團隊完成了實時數(shù)據(jù)系統(tǒng)從基建到業(yè)務層從 0 到 1 的建設及重寫升級用戶理解應用,形成「數(shù)據(jù)來源于業(yè)務,數(shù)據(jù)賦能于業(yè)務」的閉環(huán),建設了相應的基建,提升了用戶理解和實時數(shù)據(jù)的業(yè)務迭代效率,最終賦能業(yè)務拿到了不錯的業(yè)務效果。
02/關(guān)于我們
DataFun:專注于大數(shù)據(jù)、人工智能技術(shù)應用的分享與交流。發(fā)起于2017年,在北京、上海、深圳、杭州等城市舉辦超過100 線下和100 線上沙龍、論壇及峰會,已邀請超過2000位專家和學者參與分享。其公眾號 DataFunTalk 累計生產(chǎn)原創(chuàng)文章800 ,百萬 閱讀,14萬 精準粉絲。
本文就為大家講解到這里,希望對大家有所幫助。
標簽: