天天看點

輕松存儲千億級資料,知乎基于Doris的DMP系統架構實踐

作者:dbaplus社群

作者介紹

侯容,知乎-平台團隊-使用者了解&資料賦能研發 Leader。18 年入職知乎,曾擔任社群、社交等業務進階研發和業務架構師,21 年加入平台團隊擔任使用者了解&資料賦能組研發 Leader。帶領團隊從 0 到 1 從底層到業務層搭建實時資料基建和業務,同時整合資源完成使用者了解工程及 DMP 的建設。目前負責業務包括使用者了解工程、DMP、實時資料基建以及基于使用者内容了解和資料的營運平台等。

一、背景

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 通過設計哪些功能子產品,支援相應的業務流程?

輕松存儲千億級資料,知乎基于Doris的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 的批量、流式特征如何建設并落地到相應的存儲?

輕松存儲千億級資料,知乎基于Doris的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系統架構實踐
輕松存儲千億級資料,知乎基于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 團隊共建,提升寫入效率。

作者丨侯容

來源丨公衆号:ApacheDoris(ID:gh_80d448709a68)

dbaplus社群歡迎廣大技術人員投稿,投稿郵箱:[email protected]

關于我們

dbaplus社群是圍繞Database、BigData、AIOps的企業級專業社群。資深大咖、技術幹貨,每天精品原創文章推送,每周線上技術分享,每月線下技術沙龍,每季度Gdevops&DAMS行業大會。

關注公衆号【dbaplus社群】,擷取更多原創技術文章和精選工具下載下傳

繼續閱讀