埋點(diǎn):讓你知道你的上帝需要什么

埋點(diǎn)
所謂埋點(diǎn)是數(shù)據(jù)領(lǐng)域的專業(yè)術(shù)語,也是互聯(lián)網(wǎng)應(yīng)用里的一個(gè)俗稱。它的學(xué)名應(yīng)該叫做事件追蹤,對應(yīng)的英文是Event Tracking。它主要是針對特定用戶行為或事件進(jìn)行捕獲、處理和發(fā)送的相關(guān)技術(shù)及其實(shí)施過程。
埋點(diǎn)是為了滿足快捷、高效、豐富的數(shù)據(jù)應(yīng)用而做的用戶行為過程及結(jié)果記錄。數(shù)據(jù)埋點(diǎn)是一種常用的數(shù)據(jù)采集的方法。埋點(diǎn)是數(shù)據(jù)的來源,采集的數(shù)據(jù)可以分析網(wǎng)站/APP的使用情況,用戶行為習(xí)慣等,是建立用戶畫像、用戶行為路徑等數(shù)據(jù)產(chǎn)品的基礎(chǔ)。
埋點(diǎn)的作用
對于產(chǎn)品來說,用戶在你的產(chǎn)品里做了什么、停留了多久、有什么異樣,都是可以通過數(shù)據(jù)埋點(diǎn)來實(shí)現(xiàn)監(jiān)控的。
提高渠道轉(zhuǎn)化:通過用戶的操作序列,找到用戶流失的節(jié)點(diǎn)
改善產(chǎn)品:通過用戶行為分析產(chǎn)品是否有問題,例如用戶有沒有因?yàn)樵O(shè)計(jì)按鈕過多導(dǎo)致用戶行為無效等問題,以此發(fā)現(xiàn)功能設(shè)計(jì)缺陷等。
精準(zhǔn)客戶運(yùn)營:對客戶進(jìn)行分組(例如有的喜歡打折購買,有的喜歡直接購買等),實(shí)現(xiàn)精準(zhǔn)營銷,發(fā)放優(yōu)惠券等
完善客戶畫像:基本屬性(性別、年齡、地區(qū)等),行為屬性(設(shè)備操作習(xí)慣等)
數(shù)據(jù)分析:埋點(diǎn)作為原料放在數(shù)據(jù)倉庫中。提供渠道轉(zhuǎn)化、個(gè)性推薦等
PV、UV埋點(diǎn)
什么是PV、UV?
UV(獨(dú)立訪客):即Unique Visitor,訪問您網(wǎng)站的一臺電腦客戶端為一個(gè)訪客。
PV(page view):即頁面瀏覽量,或點(diǎn)擊量;用戶每1次對網(wǎng)站中的每個(gè)網(wǎng)頁訪問均被記錄1次。用戶對同一頁面的多次訪問,訪問量累計(jì)。
簡單來說:
UV = 一個(gè)人(記錄身份證號)
PV = 人次(只認(rèn)次數(shù),不認(rèn)人)
流程圖

實(shí)現(xiàn)思路
1、首先當(dāng)用戶訪問商城的任何一個(gè)頁面;
2、通過公共頁面的一個(gè)全局方法攔截到該請求,獲取到相關(guān)的參數(shù);
3、通過url地址判斷是否是白名單;
4、如果不在白名單,執(zhí)行默認(rèn)的埋點(diǎn)方法獲取數(shù)據(jù);
5、如果在白名單(通俗地講就是數(shù)據(jù)是從白名單頁面相關(guān)接口中獲取數(shù)據(jù)進(jìn)行組裝,也包括不需要做埋點(diǎn)的頁面),執(zhí)行局部埋點(diǎn)方法獲取數(shù)據(jù)。
6、調(diào)用相關(guān)的后端埋點(diǎn)接口,存入到Redis緩存中。
7、通過定時(shí)器中的任務(wù),定時(shí)撈取相關(guān)的數(shù)據(jù),通過消息隊(duì)列發(fā)送到相關(guān)的統(tǒng)計(jì)服務(wù)中。
8、在統(tǒng)計(jì)服務(wù)中對數(shù)據(jù),按照不同的維度生成相應(yīng)的統(tǒng)計(jì)表數(shù)據(jù)。
業(yè)務(wù)埋點(diǎn)
我們也會根據(jù)訂單、商品、客戶,不同的維度去進(jìn)行統(tǒng)計(jì)分析,這些業(yè)務(wù)方面的統(tǒng)計(jì)分析是上面客戶端統(tǒng)計(jì)無法做到的,所以我們采用了如下方式進(jìn)行統(tǒng)計(jì)。
流程圖

實(shí)現(xiàn)思路
1、通過實(shí)時(shí)ETL方案來進(jìn)行相關(guān)業(yè)務(wù)數(shù)據(jù)的遷移;
2、通過Canal來監(jiān)聽業(yè)務(wù)數(shù)據(jù)庫表的從庫的binlog日志;
3、通過mongoDB 的oplog日志來監(jiān)聽業(yè)務(wù)數(shù)據(jù)庫表的日志;
4、日志通過kafka消費(fèi)到相應(yīng)的統(tǒng)計(jì)庫;
5、將對應(yīng)的日志數(shù)據(jù)解析后存入到統(tǒng)計(jì)庫中不同的表中作為源數(shù)據(jù);
6、根據(jù)不同的統(tǒng)計(jì)維度對數(shù)據(jù)進(jìn)行統(tǒng)計(jì)匯總。
注意
以上介紹了兩個(gè)方面的埋點(diǎn),流量埋點(diǎn)和業(yè)務(wù)埋點(diǎn),雖然對代碼侵入低,但還是埋點(diǎn)做得不夠全面,比如因?yàn)橛嗛啅膸斓娜罩?,無法監(jiān)聽用戶的某些行為,或者是從哪個(gè)端請求等等。有需要的可以在微服務(wù)層面進(jìn)行改造,比如在每個(gè)微服務(wù)進(jìn)行編碼統(tǒng)計(jì)。
寫在最后
好兄弟可以點(diǎn)贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。
