數(shù)據(jù)工程在騰訊CDC的演進(jìn)

2022-8-5    seo達(dá)人

一、問(wèn)題分析

不同人對(duì)數(shù)據(jù)的需求是不一樣的,或者說(shuō),不同同學(xué)對(duì)同一份數(shù)據(jù)的不同指標(biāo)組有不同的價(jià)值認(rèn)可。

1.我們的交互同學(xué)更多地會(huì)參考大盤(pán)的“用戶習(xí)慣”,使用某個(gè)問(wèn)卷題型的比例來(lái)作為設(shè)計(jì)方案的數(shù)據(jù)支撐;

2.開(kāi)發(fā)同學(xué)更多地會(huì)關(guān)注這個(gè)數(shù)據(jù)引發(fā)地一些性能(問(wèn)題),架構(gòu)指標(biāo)等;

3.產(chǎn)品同學(xué)會(huì)非常關(guān)心某個(gè)上線項(xiàng)目的入口流量,轉(zhuǎn)化率相關(guān)指標(biāo);

4.運(yùn)營(yíng)同學(xué)關(guān)注的方面更為通用,除了大家都關(guān)注的北極星和護(hù)欄指標(biāo),他們更會(huì)關(guān)心用戶在使用上的一些點(diǎn)位問(wèn)題,單個(gè)/單批用戶的運(yùn)營(yíng)策略轉(zhuǎn)換問(wèn)題。

雖然上面只提到4個(gè)籠統(tǒng)的數(shù)據(jù)場(chǎng)景,但是其實(shí)我們由此產(chǎn)生的數(shù)據(jù)圖表、SQL模板甚至是需求單已經(jīng)有很多,于是我們從規(guī)范和流程上看到了一些問(wèn)題:

1.我們要如何快速找到我們指標(biāo)對(duì)應(yīng)的底層數(shù)據(jù)?當(dāng)時(shí)一個(gè)關(guān)于「活躍用戶」在團(tuán)隊(duì)版中的表現(xiàn)的下推分析,后面還加上了登錄渠道的多維分析,我們甚至開(kāi)了一場(chǎng)會(huì)去校對(duì)口徑 ;

2.關(guān)于口徑,我們?nèi)绾未_定什么數(shù)據(jù)是對(duì)的呢?不同的數(shù)據(jù)開(kāi)發(fā)同學(xué)開(kāi)發(fā)的報(bào)表相差很大;

3.開(kāi)發(fā)同學(xué)有非常美好的想象力,一句超凡脫俗的SQL不僅在當(dāng)前的架構(gòu)下得不出結(jié)果,甚至?xí)峡迤渌蕾嚨慕M件。

讓用戶簡(jiǎn)單地找到正確的數(shù)據(jù),需要把數(shù)據(jù)按照層級(jí)順序擺放在合適的位置并且登記在冊(cè),在當(dāng)時(shí)的時(shí)間點(diǎn)下,開(kāi)始構(gòu)建數(shù)據(jù)業(yè)務(wù)的數(shù)據(jù)倉(cāng)庫(kù)當(dāng)然是最好的選擇;我們?cè)跀?shù)倉(cāng)開(kāi)始之初時(shí)反思,為什么口徑、數(shù)據(jù)、校對(duì)總是不能被一次敲定呢?后來(lái)我們發(fā)現(xiàn),我們做這個(gè)需求的過(guò)程:從口徑的描述、SQL的開(kāi)發(fā)執(zhí)行到出庫(kù)展示整個(gè)過(guò)程沒(méi)有一個(gè)地方是可以被review的。而對(duì)復(fù)雜數(shù)據(jù)量的支持,其實(shí)就是架構(gòu)該升級(jí)了,單點(diǎn)的ES無(wú)法支持多場(chǎng)景的adhoc。

 

二、數(shù)倉(cāng)基建與維度建模

在做這個(gè)事之前,我問(wèn)組里的同學(xué):“我們有什么數(shù)據(jù)能夠支持我們做數(shù)據(jù)分析?”,清一色的回答:“ES里的后端Event日志,前端上報(bào)的Pageview和埋點(diǎn),業(yè)務(wù)DB中的表”。確實(shí)我們?cè)缙诰陀斜容^統(tǒng)一的基于事件流的日志格式和較為完備的前端埋點(diǎn)組件,但是我們還是沒(méi)法回答我們擁有的數(shù)據(jù)如何支持我們完成某些需求的問(wèn)題。只有我們把我們擁有的數(shù)據(jù)的具體能力和表現(xiàn)形式放出來(lái),我們才能真正知道我們擁有的是什么,數(shù)據(jù)才能真正地從數(shù)據(jù)存儲(chǔ)變成數(shù)據(jù)資產(chǎn)。

1、明確數(shù)據(jù)表

圖片

上圖顯然就是我們數(shù)倉(cāng)初期ODS到DWD的一層規(guī)劃,這里我們更希望引入產(chǎn)品同學(xué)來(lái)對(duì)齊我們現(xiàn)有的數(shù)據(jù)資產(chǎn),以便在后續(xù)數(shù)據(jù)需求的溝通上能夠明確哪些數(shù)據(jù)能為我們所用,我們有哪些底層數(shù)據(jù)需要再去補(bǔ)齊。明細(xì)表一般存在于流式數(shù)據(jù)中,帶有時(shí)間屬性,一般用于一段時(shí)間內(nèi)的指標(biāo)計(jì)算。

同理,我們把存在業(yè)務(wù)DB中的數(shù)據(jù)平移到數(shù)倉(cāng)中,這些數(shù)據(jù)表本身經(jīng)過(guò)了不錯(cuò)的數(shù)據(jù)建模,我們將我們擁有的表保留退化維度同步到數(shù)倉(cāng),我們就得到了DIM層(塊)。維度表一般不帶有時(shí)間屬性,用于關(guān)聯(lián)做維度分析。

2、業(yè)務(wù)總線矩陣構(gòu)建

把動(dòng)態(tài)的明細(xì)數(shù)據(jù)和靜態(tài)的維度數(shù)據(jù)相互交叉,就得到了我我們數(shù)倉(cāng)的底層應(yīng)用「業(yè)務(wù)總線矩陣」。在這個(gè)笛卡爾坐標(biāo)系里的每一個(gè)點(diǎn)或者一條線都有它的業(yè)務(wù)意義。比如我們通過(guò)交叉「登錄明細(xì)」 和「團(tuán)隊(duì)信息」,我們就能得到「團(tuán)隊(duì)登錄」的明細(xì);通過(guò)交叉「登錄明細(xì)」、「團(tuán)隊(duì)信息」和「用戶登錄渠道」(2維度1明細(xì)),我們可以得到「分渠道的團(tuán)隊(duì)登錄」明細(xì),這是一種維度細(xì)分統(tǒng)計(jì)的構(gòu)建;通過(guò)交叉「登錄明細(xì)」、「團(tuán)隊(duì)信息」和「提交答卷明細(xì)」(1維度2明細(xì)),我們可以得到「團(tuán)隊(duì)版登錄且答題」明細(xì),這是行為組合(細(xì)分)。

至此,我們能夠清楚地認(rèn)知數(shù)據(jù)可能會(huì)在哪個(gè)位置發(fā)揮什么作用,下一步要解決的是我們?cè)撛趺凑业轿覀兊臄?shù)據(jù)這個(gè)問(wèn)題。

3、元數(shù)據(jù)管理

為了解決“我們有什么數(shù)據(jù)”這個(gè)問(wèn)題,我們決定接管數(shù)據(jù)的入口,把開(kāi)發(fā)過(guò)程中生成的數(shù)據(jù)表按照數(shù)據(jù)的生命周期命名打上標(biāo)簽。

圖片

問(wèn)卷的業(yè)務(wù)數(shù)據(jù)庫(kù)里有百余張表,其中大約有近4成為維度表,需要拆分成明細(xì)的點(diǎn)位或者日志會(huì)隨著業(yè)務(wù)發(fā)展主鍵膨脹,業(yè)務(wù)總線矩陣也會(huì)主鍵變成一張大網(wǎng),失去可檢索性。事實(shí)上,我們對(duì)數(shù)據(jù)的需求是有描述性的,比如想看“這周問(wèn)卷的新增明細(xì)”,我們并非記住一串冰冷的文字,我們更希望能把「1周」,「問(wèn)卷」轉(zhuǎn)換成描述條件作為我們?cè)獢?shù)據(jù)的檢索入口。 我們支持了Superset從表comment、字段comment中檢索的需求,把想要的關(guān)鍵字按照關(guān)鍵字檢索匹配到正確的數(shù)倉(cāng)入口。

4、數(shù)據(jù)血緣

在我們接管了數(shù)據(jù)產(chǎn)生的入口后,我們把用戶調(diào)用數(shù)據(jù)資產(chǎn)的記錄同樣采集了起來(lái)。基于一套low code配置化調(diào)度任務(wù),我們?cè)跒殚_(kāi)發(fā)同學(xué)提供分區(qū)篩選、數(shù)據(jù)量評(píng)估、sql執(zhí)行、執(zhí)行結(jié)果質(zhì)量校驗(yàn)和下游寫(xiě)入的能力的同時(shí),我們更在配置化的Spark啟動(dòng)入口處植入了血緣上報(bào),當(dāng)一個(gè)任務(wù)被成功執(zhí)行計(jì)算后,我們采集了數(shù)據(jù)的流向和數(shù)據(jù)流動(dòng)比例。

圖片

有了數(shù)據(jù)血緣后,在一份數(shù)據(jù)出現(xiàn)分歧時(shí),他的數(shù)據(jù)量和執(zhí)行計(jì)劃都是可以被review的,從數(shù)據(jù)讀入和寫(xiě)出的量級(jí)波動(dòng)情況可以相對(duì)容易地追溯到原因,但是目前還沒(méi)有做成波動(dòng)歸因。

到這里,我們的數(shù)據(jù)開(kāi)發(fā)鏈路的不確定性只剩下了口徑確認(rèn)和變更。我們通過(guò)將指標(biāo)組(一般是單指標(biāo)多維度)命名,分配給數(shù)據(jù)開(kāi)發(fā)同學(xué),確定產(chǎn)品負(fù)責(zé)人和開(kāi)發(fā)負(fù)責(zé)人。這個(gè)順便解決了我們之前無(wú)法追溯報(bào)表錯(cuò)誤不知道該找哪位同學(xué)來(lái)看的問(wèn)題。開(kāi)發(fā)完成后掛靠在某個(gè)具體的數(shù)倉(cāng)表上,實(shí)現(xiàn)數(shù)據(jù)需求到數(shù)據(jù)開(kāi)發(fā)到底層計(jì)算的全鏈路記錄,當(dāng)數(shù)據(jù)出現(xiàn)問(wèn)題或需要修改時(shí),則整個(gè)鏈條上的負(fù)責(zé)同學(xué)都會(huì)有感知,確保發(fā)起的修改能夠被所有相關(guān)的(特別是下游的)數(shù)據(jù)同學(xué)review到。

圖片

5、數(shù)據(jù)架構(gòu)

規(guī)范的事情暫時(shí)能跑了,在只有我一個(gè)人力的情況下繼續(xù)大力度地做進(jìn)一步數(shù)據(jù)治理可能并不是當(dāng)下最急需的,在場(chǎng)景分析中提到的問(wèn)題,我們還有關(guān)于開(kāi)發(fā)最重要的一個(gè)問(wèn)題——當(dāng)下的數(shù)據(jù)架構(gòu)需要升級(jí)。為了回答這最后一個(gè)問(wèn)題,我們希望把昂貴的ES儲(chǔ)存費(fèi)用轉(zhuǎn)投到能面向更大型分析場(chǎng)景的數(shù)據(jù)架構(gòu)上。

在之前,部門(mén)內(nèi)所有的分析都有ES或者ELK套件承擔(dān),從20年開(kāi)始性能和錢(qián)包都陸續(xù)見(jiàn)到了瓶頸。目前部門(mén)數(shù)據(jù)平臺(tái)內(nèi)走的是以流式分發(fā)為主的Lambda架構(gòu),由下游需求決定數(shù)據(jù)是否從實(shí)時(shí)層沉降到離線層。維度數(shù)據(jù)會(huì)存在離線層,事實(shí)明細(xì)數(shù)據(jù)會(huì)廣泛地存在于實(shí)時(shí)層,這是基于下游有時(shí)延要求高,維度要求低的場(chǎng)景,只需要做簡(jiǎn)單的指標(biāo)聚合,附帶退化維度寫(xiě)出即可。

圖片

和Lambda架構(gòu)不同,我們的低時(shí)延分析需求更多地由近實(shí)時(shí)分析層承擔(dān),針對(duì)不同需求,我們嘗試過(guò)很多不同的組件,根據(jù)不同的使用場(chǎng)景,比如全文查找、強(qiáng)聚合、上下文分析等等,我們會(huì)選擇不同的組件?;诓煌慕M件,我們?cè)谏蠈佑腥L試做不同的應(yīng)用實(shí)踐。

 

三、應(yīng)用實(shí)踐

1、機(jī)器學(xué)習(xí)

圖片

在機(jī)器學(xué)習(xí)方面,騰訊問(wèn)卷有基于用戶答題的行為,構(gòu)建用戶答題的時(shí)間序列,得到一個(gè)評(píng)估用戶答題認(rèn)真度/可信度的評(píng)估模型,目前這個(gè)工具已經(jīng)上線到樣本庫(kù)填答的紅包發(fā)放鑒別能力中,提供給投放者對(duì)回答可信度和總體回答質(zhì)量做相應(yīng)參考。

在最早期我們通過(guò)ES去查找單份答卷用戶在答題過(guò)程中的所有用戶行為埋點(diǎn)數(shù)據(jù)來(lái)構(gòu)建序列數(shù)據(jù)進(jìn)行預(yù)測(cè),將預(yù)測(cè)結(jié)果寫(xiě)入DB;在近一年中,我們把查詢數(shù)據(jù)源經(jīng)過(guò)計(jì)算清洗后寫(xiě)入按問(wèn)卷和用戶為索引的ClickHouse數(shù)據(jù)源中,同時(shí)將服務(wù)與線上服務(wù)解耦,使用kafka來(lái)進(jìn)行通信;最后配置了消費(fèi)監(jiān)控和寫(xiě)入監(jiān)控,使這個(gè)服務(wù)成為一個(gè)單獨(dú)維護(hù)的組件。以犧牲少許的實(shí)時(shí)性為代價(jià)大幅提升了預(yù)測(cè)速度和可用性。

2、實(shí)時(shí)風(fēng)控

基于實(shí)時(shí)層的數(shù)據(jù)聚合分發(fā)能力,我們?cè)趩?wèn)卷系統(tǒng)中逐步搭建了一套對(duì)問(wèn)卷維度進(jìn)行風(fēng)控的系統(tǒng)。在最早期的設(shè)計(jì)中,實(shí)時(shí)層基于小時(shí)間段窗口觸發(fā)計(jì)算,從明細(xì)數(shù)據(jù)流讀取計(jì)算到寫(xiě)入下游系統(tǒng)之間的誤差能夠控制在秒級(jí),支持了下游規(guī)則引擎的實(shí)時(shí)特征數(shù)據(jù)檢索。

在架構(gòu)上,風(fēng)控模型走的是全實(shí)時(shí)數(shù)倉(cāng)鏈路,從Kafka明細(xì)中讀出前端上報(bào)信息和后端收集答卷的日志,在Flink中做實(shí)時(shí)的多窗口聚合寫(xiě)入到下游的數(shù)據(jù)組件。在前期選型中,業(yè)務(wù)側(cè)希望能夠具有實(shí)時(shí)調(diào)用和短時(shí)間指標(biāo)回溯的能力,同時(shí)希望系統(tǒng)組件能夠相對(duì)輕,能從云上購(gòu)買(mǎi),最后我們選定了Kafka作為業(yè)務(wù)側(cè)實(shí)時(shí)接收窗口聚合結(jié)果的組件,PostgreSQL作為小時(shí)間段的回溯組件來(lái)構(gòu)建線上的風(fēng)控分析。

3、AB實(shí)驗(yàn)

目前,我們已經(jīng)在SaaS平臺(tái)內(nèi)對(duì)文案顯示、用戶邏輯等多方面做了很多次AB測(cè)試,通過(guò)pv上報(bào)的曝光和event埋點(diǎn)的轉(zhuǎn)化分析,能夠?qū)崟r(shí)構(gòu)建單個(gè)用戶的轉(zhuǎn)化行為;相同地,我們會(huì)對(duì)實(shí)驗(yàn)時(shí)間范圍內(nèi)的數(shù)據(jù)使用ClickHouse構(gòu)建用戶RBM,分析不同用戶在不同實(shí)驗(yàn)命中的表現(xiàn)情況。

圖片

 

總結(jié)

通過(guò)補(bǔ)齊一些基本的數(shù)據(jù)架構(gòu)和數(shù)據(jù)規(guī)范,目前我們?cè)跀?shù)據(jù)驅(qū)動(dòng)的實(shí)踐上已經(jīng)走出了一條自己的路。隨著用戶調(diào)研類組件的發(fā)展、用戶分析需求的增加,其分析能力也會(huì)隨之增強(qiáng),越來(lái)越多的數(shù)據(jù)能力正在沉淀成底層功能加入到SaaS服務(wù)側(cè)。

 

原文地址:騰訊CDC體驗(yàn)設(shè)計(jì)

作者: 騰訊CDC-erien

轉(zhuǎn)載請(qǐng)注明:學(xué)UI網(wǎng)》數(shù)據(jù)工程在騰訊CDC的演進(jìn)

藍(lán)藍(lán)設(shè)計(jì)建立了UI設(shè)計(jì)分享群,每天會(huì)分享國(guó)內(nèi)外的一些優(yōu)秀設(shè)計(jì),如果有興趣的話,可以進(jìn)入一起成長(zhǎng)學(xué)習(xí),請(qǐng)加藍(lán)小助,微信號(hào):ben_lanlan,報(bào)下信息,藍(lán)小助會(huì)請(qǐng)您入群。歡迎您加入噢~~希望得到建議咨詢、商務(wù)合作,也請(qǐng)與我們聯(lián)系01063334945。


分享此文一切功德,皆悉回向給文章原作者及眾讀者.
免責(zé)聲明:藍(lán)藍(lán)設(shè)計(jì)尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問(wèn)題,請(qǐng)及時(shí)與我們?nèi)〉寐?lián)系,我們立即更正或刪除。

藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)、

UI設(shè)計(jì)公司、界面設(shè)計(jì)公司、UI設(shè)計(jì)服務(wù)公司、數(shù)據(jù)可視化設(shè)計(jì)公司、UI交互設(shè)計(jì)公司、高端網(wǎng)站設(shè)計(jì)公司、UI咨詢、用戶體驗(yàn)公司、軟件界面設(shè)計(jì)公司



分享本文至:

日歷

鏈接

個(gè)人資料

存檔