Apache Doris 助力網易嚴選打造精細化運營 DMP 標籤系統

語言: CN / TW / HK

導讀:如果說網際網路的上半場是粗狂運營,那麼在下半場,精細化運營將是長久的主題,有資料分析能力才能讓使用者得到更好的體驗。當下比較典型的分析方式是構建使用者標籤系統,本文將由網易嚴選分享 DMP 標籤系統的建設以及 Apache Doris 在其中的應用實踐。

作者劉曉東 網易嚴選資深開發工程師

如果說網際網路的上半場是粗狂運營,因為有流量紅利不需要考慮細節。那麼在下半場,精細化運營將是長久的主題,有資料分析能力才能讓使用者得到更好的體驗。當下比較典型的分析方式是構建使用者標籤系統,從而精準地生成使用者畫像,提升使用者體驗。今天分享的主題是網易嚴選 DMP 標籤系統建設實踐,主要圍繞下面五點展開:

  • 平臺總覽

  • 標籤生產 :標籤圈選&生產鏈路

  • 標籤儲存:儲存方式&儲存架構演進

  • 高效能查詢

  • 未來規劃

平臺總覽

DMP 作為網易嚴選的資料中臺,向下連線資料,向上賦能業務,承擔著非常重要的基石角色。

DMP 的資料來源主要包括三大部分:

  • 自營平臺的 APP、小程式、PC 端等各端的業務日誌

  • 網易集團內部共建的一些基礎資料

  • 京東、淘寶、抖音等第三方渠道店鋪的資料

通過收集、清洗,將以上資料形成資料資產沉澱下來。DMP 在資料資產基礎上形成了一套自己的標籤產出、人群圈選和使用者畫像分析體系,從而為業務提供支撐,包括:智慧化的選品、精準觸達以及使用者洞察等。總的來說,DMP 系統就是構建以資料為核心的標籤體系和畫像體系,從而輔助業務做一系列精細化的運營。

瞭解 DMP 系統,先從以下幾個概念開始。

  • 標籤:對於實體(使用者、裝置、手機號等)特徵的描述,是一種面向業務的資料組織形式,比如使用:年齡段、地址、偏好類目等對使用者實體進行刻畫。

  • 人群圈選:通過條件組合從全體使用者中圈選出一部分使用者,具體就是指定一組使用者標籤和其對應的標籤值,得到符合條件的使用者人群。

  • 畫像分析:對於人群圈選結果,檢視該人群的行為情況、標籤分佈。例如檢視【城市為杭州,且性別為女性】的使用者在嚴選 APP 上的行為路徑、消費模型等。

嚴選標籤系統對外主要提供兩大核心能力:

  1. 標籤查詢:查詢特定實體指定標籤的能力,常用於基本資訊的展示。

  2. 人群圈選:分為實時和離線圈選。圈選結果主要用於:

  • 分組判斷:判讀使用者是否在指定的一個或多個分組,資源投放、觸點營銷等場景使用較多。

  • 結果集拉取:拉取指定的人群資料到業務方系統中,進行定製化開發。

  • 畫像分析:分析特定人群的行為資料,消費模型等,進行更精細的運營。

整體的業務流程如下:

  • 首先定義標籤和人群圈選的規則;

  • 定義出描述業務的 DSL 之後,便可以將任務提交到 Spark 進行計算;

  • 計算完成之後,將計算結果儲存到 Hive 和 Doris

  • 之後業務方便可以根據實際業務需求從 Hive 或 Doris 中查詢使用資料

DMP 平臺整體分為計算儲存層、排程層、服務層、和元資料管理四大模組。

所有的標籤元資訊儲存在源資料表中;排程層對業務的整個流程進行任務排程:資料處理、聚合轉化為基礎標籤,基礎標籤和源表中的資料通過 DSL 規則轉化為可用於資料查詢的 SQL 語義,由排程層將任務排程到計算儲存層的 Spark 進行計算,將計算結果儲存到 Hive 和 Doris 中。服務層由標籤服務、實體分組服務、基礎標籤資料服務、畫像分析服務四部分組成。

標籤的生命週期包含5個階段:

  • 標籤需求:在此階段,運營提出標籤的需求和價值預期,產品評估需求合理性以及緊迫性。

  • 排期生產:此階段需要資料開發梳理資料,從 ods 到 dwd 到 dm 層整個鏈路,根據資料建立模型,同時資料開發需要做好質量監控。

  • 人群圈選:標籤生產出來之後進行應用,圈選出標籤對應的人群。

  • 精準營銷:對圈選出來的人群進行精準化營銷。

  • 效果評估:最後產品、資料開發和運營對標籤使用率、使用效果進行效果評估來決定後續對標籤進行改進或降級。

總的來說,就是以業務增長為目標,圍繞標籤的生命週期,投入合理的資源,最大化運營效果。

標籤生產

接下來介紹標籤生產的整個過程。

標籤的資料分層:

  • 最下層是 ods 層,包括使用者登入日誌、埋點記錄日誌、交易資料以及各種資料庫的 Binlog 資料。

  • 對 ods 層處理後的資料到達 dwd 明細層,包括使用者登入表、使用者活動表、訂單資訊表等。

  • dwd 層資料聚合後到 dm 層,標籤全部基於 dm 層資料實現。

目前我們從原始資料庫到 ods 層資料產出已經完全自動化,從 ods 層到 dwd 層實現了部分自動化,從 dwd 到 dm 層有一部分自動化操作,但自動化程度還不高,這部分的自動化操作是我們接下來的工作重點。

標籤根據時效性分為:離線標籤、近實時標籤和實時標籤。

根據聚合粒度分為:聚合標籤和明細標籤。

通過類別維度可將標籤分為:賬號屬性標籤、消費行為標籤、活躍行為標籤、使用者偏好標籤、資產資訊標籤等。

直接將 dm 層的資料不太方便拿來用,原因在於:

基礎資料比較原始,抽象層次有所欠缺、使用相對繁瑣。通過對基礎資料進行與、或、非的組合,形成業務標籤供業務方使用,可以降低運營的理解成本,降低使用難度。

標籤組合之後需要對標籤進行具體業務場景應用,如人群圈選。配置如上圖左側所示,支援離線人群包和實時行為(需要分開配置)。

配置完後,生成上圖右側所示的 DSL 規則,以 Json 格式表達,對前端比較友好,也可以轉成儲存引擎的查詢語句。

標籤有一部分實現了自動化。在人群圈選部分自動化程度比較高。比如分組重新整理,每天定時重新整理;高階計算,如分組與分組間的交/並/差集;資料清理,及時清理過期失效的實體集。

標籤儲存

下面介紹一下我們在標籤儲存方面的實踐。

嚴選 DMP 標籤系統需要承載比較大的 C端流量,對實時性要求也比較高。

我們對儲存的要求包括:

  • 支援高效能查詢,以應對大規模 C端流量

  • 支援 SQL,便於應對資料分析場景

  • 支援資料更新機制

  • 可儲存大資料量

  • 支援擴充套件函式,以便處理自定義資料結構

  • 和大資料生態結合緊密

目前還沒有一款儲存能夠完全滿足要求。

我們第一版的儲存架構如下圖所示:

離線資料大部分儲存在 Hive 中,小部分儲存在 Hbase(主要用於基礎標籤的查詢)。實時資料一部分儲存在 Hbase 中用於基礎標籤的查詢,部分雙寫到 KUDU 和 ES 中,用於實時分組圈選和資料查詢。離線圈選的資料通過 impala 計算出來快取在 Redis 中。

這一版本的缺點包括:

  • 儲存引擎過多。

  • 雙寫有資料質量隱患,可能一方成功一方失敗,導致資料不一致。

  • 專案複雜,可維護性較差。

為了減少引擎和儲存的使用量,提高專案可維護性,在版本一的基礎上改進實現了版本二。

我們第二版的儲存架構如下圖所示:

儲存架構版本二引入了 Apache Doris,離線資料主要儲存在 Hive 中,同時將基礎標籤匯入到 Doris,實時資料也儲存在 Doris,基於 Spark 做 Hive 加 Doris 的聯合查詢,並將計算出來的結果儲存在 Redis 中。經過此版改進後,實時離線引擎儲存得到了統一,效能損失在可容忍範圍內(Hbase 的查詢效能比 Doris 好一些,能控制在 10ms 以內,Doris 目前是 1.0 版本,p99,查詢效能能控制在 20ms 以內,p999,能控制在 50ms 以內);專案簡化,降低了運維成本。

在大資料領域,各種儲存計算引擎有各自的適用場景,如下表所示:

高效能查詢

分組存在性判斷:判斷使用者是否在指定的一個分組或者多個分組。包括兩大部分:

  • 第一部分為靜態人群包,提前進行預計算,存入 Redis 中(Key 為實體的 ID,Value 為結果集 ID),採用 Lua 指令碼進行批量判斷,提升效能;

  • 第二部分為實時行為人群,需要從上下文、API 和 Apache Doris 中提取資料進行規則判斷。效能提升方案包括,非同步化查詢、快速短路、查詢語句優化、控制 Join表數量等。

還有一個場景是人群分析:人群分析需要將人群包資料同多個表進行聯合查詢,分析行為路徑。目前 Doris 還不支援路徑分析函式,因此我們開發了 DorisUDF 來支援此業務。Doris 的計算模型對自定義函式的開發還是很友好的,能夠比較好地滿足我們的效能需要。

Apache Doris 在網易嚴選中已應用於點查、批量查詢、路徑分析、人群圈選等場景。在實踐中具備以下優勢:

  • 在點查和少量表的聯合查詢效能 QPS 超過萬級,RT99<50MS。

  • 水平擴充套件能力很強,運維成本相對比較低。

  • 離線資料和實時資料相統一,降低標籤模型複雜度。

不足之處在於大量小資料量的匯入任務資源佔用較多,不過此問題已經在 Doris 1.1 版本中進行了優化,**Doris 在 1.1 中大幅增強了資料 Compaction 能力,對於新增資料能夠快速完成聚合,避免分片資料中的版本過多導致的 -235 錯誤以及帶來的查詢效率問題。**待 Doris 1.1.2 版本正式釋出後我們也會及時同步升級。

具體可以參考:Apache Doris 1.1 特性揭祕:Flink 實時寫入如何兼顧高吞吐和低延時

未來規劃

提升儲存&計算效能:Hive 和 Spark 逐漸全部轉向 Apache Doris。

優化標籤體系:

  • 建立豐富準確的標籤評價體系

  • 提升標籤質量和產出速度

  • 提升標籤覆蓋率

更精準的運營

  • 建立豐富的使用者分析模型

  • 從使用頻次和使用者價值兩個方面提升使用者洞察模型評價體系

  • 建立通用化畫像分析能力,輔助運營智慧化決策

資料下載

關注公眾號「SelectDB」,後臺回覆【網易嚴選】獲取本次演講 PPT 資料

如果你對 Apache Doris 感興趣,請點選「 **閱讀原文 」瞭解並加入 Doris!我們也發起了徵文活動****,**邀你講講與Doris相遇 相知 相識的故事,不僅有精美禮品相送,還可獲得 SelectDB 全渠道曝光加持!

最後,歡迎更多的開源技術愛好者加入 Apache Doris 社群,攜手成長,共建社群生態。

SelectDB 是一家開源技術公司,致力於為 Apache Doris 社群提供一個由全職工程師、產品經理和支援工程師組成的團隊,繁榮開源社群生態,打造實時分析型資料庫領域的國際工業界標準。基於 Apache Doris 研發的新一代雲原生實時數倉 SelectDB,運行於多家雲上,為使用者和客戶提供開箱即用的能力。

相關連結:

SelectDB 官方網站:

https://selectdb.com

Apache Doris 官方網站:

http://doris.apache.org

Apache Doris Github:

https://github.com/apache/doris

Apache Doris 開發者郵件組:

[email protected]

「其他文章」