作者介紹
侯容,知乎-平台團隊-使用者了解&資料賦能研發 Leader。18 年入職知乎,曾擔任社群、社交等業務進階研發和業務架構師,21 年加入平台團隊擔任使用者了解&資料賦能組研發 Leader。帶領團隊從 0 到 1 從底層到業務層搭建實時資料基建和業務,同時整合資源完成使用者了解工程及 DMP 的建設。目前負責業務包括使用者了解工程、DMP、實時資料基建以及基于使用者内容了解和資料的營運平台等。
一、背景
1、DMP 業務
知乎業務中存在哪些問題需要解決?
為什麼要建立 DMP 平台來解決這些問題?
2、DMP 業務流程
目前這些業務的營運流程是怎樣的?
DMP 如何與業務結合并賦能?
其中營運模式包含如下 3 類:
1)站内營運自閉環
- 内容營運。拿内容找使用者,定向消費使用者,站内投放,分析效果和人群成分等。
- 活動營運。拿活動找使用者,定向消費使用者,站内投放,分析效果和人群成分等。
- 使用者營運。洞察使用者,分析。
2)站内向站外投放閉環
- 增長投放。定向合适的人群,并在站外投放廣告,資料回收,效果分析。
3)站外向站内廣告閉環
- 廣告投放。站外使用者導入,定向投放。或基于對目标群體的了解圈標明向投放。
3、DMP 畫像特征
目前有哪些畫像特征?
這些特征是如何分層分類的?
量級如何?
3 層級特征分類:
一級分類 (8 組)
二級分類 (40 組)
标簽組(120 個)
性别、手機品牌、話題興趣…
标簽(250 萬)
男|女、 HUAWEI|Apple、對影視内容感興趣程度高…
二、架構與實作
1、DMP 功能梳理
DMP 通過設計哪些功能子產品,支援相應的業務流程?
2、DMP 架構
DMP 通過設計哪些功能子產品,支援相應的業務流程?
架構設計重點是解決業務功能的實作複雜度,同時架構設計也是明确子產品重心和設計目标的一種重要手段。拆分後,不同子產品都有不同的設計重心:
1)對外子產品。針對使用方定制設計。
- DMP 接口:高穩定性、高并發高吞吐
- DMP 前台:操作簡單,低營運使用成本
- DMP 背景:日常開發工作配置化,降低開發成本
2)業務子產品。以可擴充為第一要務。
- 人群圈選:可擴充。新增特征 0 成本,新增規則低成本。
- 人群洞察:可擴充。新增特征 0 成本,新增洞察方式低成本。
- 人群泛化:可擴充。新增泛化方式低成本。
3)業務支援子產品。線性水準擴充及屏蔽内部邏輯。
- 特征生産:擴充成本低。原子特征低成本生産,派生特征通過背景可配置
- ID Mapping:屏蔽 ID 打通邏輯
- 計算任務運維:屏蔽機器資源和任務依賴的邏輯
- 存儲:可擴充可持續,不因業務成長而導緻成本大幅增加
3、DMP 平台功能盤點
DMP 上線至今支援了:
- 5+ 萬人群定向
- 400+ 次人群洞察
- 60+ 次人群泛化
資料量級:
- 120 個标簽組
- 250 萬個标簽
- 1100 億條使用者 x 标簽的資料
資料量級:
- 每日 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、人群定向流程
人群定向分哪幾個過程?怎麼做的?
子流程:标簽搜尋、标簽選擇、人群預估、人群圈選
子流程:種子人群上傳、人群泛化
流程圖中主要介紹了:标簽搜尋、标簽選擇、人群預估、人群圈選、種子人群上傳、人群泛化幾個子流程的執行過程。具體在業務上執行的人群定向流程很多,以下說幾種典型的:
- 标簽加購物車 -> 圈選。
- 傳種子人群 -> 泛化。
- 曆史效果人群 -> 泛化 -> 疊加本次營運特點 -> 圈選。
- 曆史效果人群 -> 洞察 -> 重新生成标簽關系 -> 圈選 -> 疊加曆史正向人群 -> 泛化 -> 限制分發條件 -> 圈選。
- 對标簽、曆史人群進行組合、泛化、再限制條件再圈選、洞察,最後再調整等等。
三、難題及解決方案
在 DMP 業務中,我們主要遇到了人群定向方面的難題,難題的原因主要有:1、人群特征數量大(1200 億);2、時間要求低(人群預估 1 秒,圈選 1 分鐘)。
1、優化第一版
倒排、id mapping 以及查詢邏輯優化
2、優化第二版
分而治之
- 将連續一塊的使用者 id 的不同 tag 的資料,都增加統一的 group 字段進行分組。
- 在 group 内完成交并差後,最後進行資料彙總。
- 同時開啟多線程模式,提升每組的計算效率。
四、未來及展望
1、業務向
2、技術向
1)提升查詢效率
- 自動探測 SQL 複雜查詢條件預先合并成一個派生特征的 bitmap,預測和圈人時對複雜條件 SQL 重寫為派生特征。
2)提升導入速度
- Spark 直接寫 Doris Tablet 檔案,并挂載到 FE。
- 針對大導入場景與 Doris 團隊共建,提升寫入效率。
作者丨侯容
來源丨公衆号:ApacheDoris(ID:gh_80d448709a68)
dbaplus社群歡迎廣大技術人員投稿,投稿郵箱:[email protected]
關于我們
dbaplus社群是圍繞Database、BigData、AIOps的企業級專業社群。資深大咖、技術幹貨,每天精品原創文章推送,每周線上技術分享,每月線下技術沙龍,每季度Gdevops&DAMS行業大會。
關注公衆号【dbaplus社群】,擷取更多原創技術文章和精選工具下載下傳