滴滴在流量鏈路檢測架構設計及實踐

**桔妹導讀:**流量數據作爲整個數據體系構建的基石之一,爲公司的用戶增長、產品優化、智能運營及科學決策等方面,提供了可靠的業務分析及決策依據。業務層面對於流量數據也有較高的要求,比如全面性、準確性、及時性。經過幾年時間的打磨,我們沉澱了一套覆蓋全鏈路的檢測體系,能夠有效輔助鏈路同學看清數據現狀、定位數據問題。本文分享了流量鏈路檢測在滴滴多業務線場景下的實踐。 

**1. **

背景

Omega 是公司內部提供移動端用戶行爲採集、加工、存儲、呈現和應用的全流程數據服務平臺。整個平臺以前端數據採集爲源頭,通過實時或者離線 ETL 加工出具有業務需求的指標結果,爲滴滴的用戶增長、產品優化、智能運營及科學決策等提供可靠的流量數據支持。目前支持了公司內外部近 1500 + 應用,覆蓋公司大部分業務線。

業務層面對埋點提出了全面、準確、及時的高要求,而這也是整個數據體系構建的基石。經過過往幾年的持續打磨,我們沉澱了一套覆蓋全鏈路的檢測體系,能夠有效的輔助鏈路同學看清數據現狀,定位數據問題。下面我將與大家分享技術側的架構設計。

**2. **

數據鏈路

首先,先簡單介紹一下整個數據鏈路的架構,一共包含如下六個核心模塊。

整個鏈路相對較長,涉及各個大數據組件,鏈路的穩定性保障存在着難點,主要體現在以下幾點:

如何有效的評估並提供給下游一份可用的數據?這就是貫穿全流程的鏈路檢測服務需要解決的問題,數據鏈路檢測模塊主要承擔鏈路的接收率、重複率、丟包率的度量及預警等職責。 

**3. **

數據鏈路檢測

**********▍******3.1 ****設計思路

對採集數據實現完整性度量:採集的數據質量我們從兩個方面進行度量:1)採集的精確度 2)採集的準確度。

精確是指每一次獨立測量和真實值之間的差距(與理論值相符合的程度);

準確則是要求實驗有高度再現(多次實驗或計算的結果一致),一個完整的度量必須符合精確和準確兩個條件,才能算是精準,減少誤判。

我們在度量的精準和準確兩個方面進行了如下方面的努力。採集完整性度量方案不同於公司實時採集系統 dquality 採用的三方校驗,Omega 採用基於離線的小時級 pv、uv 聯合校驗保證度量採集完整性的精確度和準確度。

在採集精確度方面:

在採集準確度方面

檢測需要的數據源以小時級離線表 ods 形式產出,在離線數據的基礎上構建檢測指標,保證數據源多次重新計算結果一致。

**********▍******3.2 ****方案設計

對於全鏈路的六大模塊,我們進行了環環相比的檢測方案,通過數據前後流動兩個節點 pv 比率 (uv 比率輔助校驗是否存在重複消費情況) 判斷每個節點生產消費是否正常,簡化後的鏈路如下圖五個節點:

鏈路檢測有兩個核心指標:丟失率和入庫率,分別用來度量端上 sdk、內部通道的採集質量。

丟失率是邏輯上度量端上 sdk 採集質量,丟失率分子爲實際在接入層收集到請求數,丟失率的分母是通過計數器實現預期的請求數,丟失率通過對埋點請求接收情況量化進而度量端上 sdk 的採集質量。

入庫率是用來度量內部通道的採集質量,通過埋點數據流動過的 4 個節點的請求 pv 及埋點 pv【一個請求包含多條埋點數據】比率實現,入庫率通過對埋點請求 pv 及埋點 pv 實際流入到下游情況量化進而度量內部通道的採集情況。

基於上面思考和設計,實現了小時級及天級的鏈路檢測服務,具體如下:

現平臺 native 埋點的丟失率控制在 0.5%,web 埋點的丟失率控制在 2%,業內對於 web 埋點上報丟失率一般在 5% 左右。

**4. **

方案應用

**********▍**************4.1 ****完整性判定

離線數倉 ODS 層完整性 tag 利用 flink Checkpoint 編號嚴格單調遞增實現。採用 Flink 以 SequenceFile 格式進行 HDFS 寫入,Checkpoint 失敗時 PartFile 永遠處於 in-progress 或 pendiing 狀態,可以不被下游離線 ETL 任務讀取。

基於離線數據實現鏈路全局角度檢測採集包、及包內部埋點的丟失,重複情況

**********▍**************4.2 ****應用檢測

即檢測一個具體端的指標、丟失率、重複率等數據,以及關鍵埋點和屬性的上報、填充情況。

**********▍**************4.3 ****未註冊大盤

針對已經在端上進行上報,但是未在埋點管理平臺註冊的埋點,或者已註冊埋點但未註冊屬性的情況,提供查看及註冊使用,方便流量鏈路相關同學進行埋點治理。

**********▍**************4.4 ****埋點監控

除了業務自定義信息外,埋點也會包含較多通用屬性,如 uid、城市 id、渠道等信息,平臺會提供系統屬性填充率、Android/IOS 比值、枚舉值等監控能力,用戶也可以在平臺進行自定義配置。

之後可以在平臺上查看埋點的質量數據,並且可以以推送的方式告知用戶。

**5. **

方案應用

Omega 採集鏈路起源滴滴對流量採集的訴求,並且跟隨對流量數據使用的不斷迭代升級,逐漸演進,和業務共同成長。隨着 “0188 戰略落地”,業務增長方面持續發力,對實時數據訴求日漸增多,提升數據時效性和實時化服務也是 Omega 後續採集方案演進的重點,致力於進一步提升更好的數據埋點採集、實時服務、基礎數倉等服務。

內容編輯 | Teeo

聯繫我們 | DiDiTech@didiglobal.com

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/D_bClw_WnIFglyx1Yv6GBw