根據(jù)產(chǎn)品的類型 又有可以分為:
·瀏覽器頁面 的日志采集
·客戶端 的日志采集
瀏覽器頁面采集: 主要是收集頁面的 瀏覽日志(PV/UV等) 和 交互操作日志(操作事件)。
這些日志的采集,一般是在頁面上植入標(biāo)準(zhǔn)的統(tǒng)計JS代碼來進執(zhí)行。但這個植入代碼的過程,可以在頁面功能開發(fā)階段由開發(fā)同學(xué)手動寫入,也可以在項目運行的時候,由服務(wù)器在相應(yīng)頁面請求的時候動態(tài)的植入。
事實上,統(tǒng)計JS在采集到數(shù)據(jù)之后,可以立即發(fā)送到數(shù)據(jù)中心,也可以進行適當(dāng)?shù)膮R聚之后,延遲發(fā)送到數(shù)據(jù)中心,這個策略取決于不同場景的需求來定。
頁面日志在收集上來之后,需要在服務(wù)端進行一定的清晰和預(yù)處理。 比如 清洗假流量數(shù)據(jù)、識別攻擊、數(shù)據(jù)的正常補全、無效數(shù)據(jù)的剔除、數(shù)據(jù)格式化、數(shù)據(jù)隔離等。
客戶端日志采集: 一般會開發(fā)專用統(tǒng)計SDK用于APP客戶端的數(shù)據(jù)采集。
客戶端數(shù)據(jù)的采集,因為具有高度的業(yè)務(wù)特征,自定義要求比較高,因此除應(yīng)用環(huán)境的一些基本數(shù)據(jù)以外,更多的是從 “按事件”的角度來采集數(shù)據(jù),比如 點擊事件、登陸事件、業(yè)務(wù)操作事件 等等。
基礎(chǔ)數(shù)據(jù)可由SDK默認(rèn)采集即可,其它事件由業(yè)務(wù)側(cè)來定義后,按照規(guī)范調(diào)用SDK接口。
因為現(xiàn)在越來越多APP采用Hybrid方案,即 H5 與 Native相結(jié)合的方式,因此對于日志采集來說,既涉及到H5頁面的日志,也涉及到Native客戶端上的日志。在這種情況下,可以分開采集分開發(fā)送,也可以將數(shù)據(jù)合并到一起之后再發(fā)送。
常規(guī)情況下是推薦將 H5上的數(shù)據(jù)往Native上合并,然后通過SDK統(tǒng)一的發(fā)送。這樣的好處是 既可以保證采集到的用戶行為數(shù)據(jù)在行為鏈上是完整的,也可以通過SDK采取一些壓縮處理方案來減少日志量,提高效率。
APP上的數(shù)據(jù)采集,還有一點比較重要的就是唯一ID了,所有的數(shù)據(jù)都必須跟唯一ID相關(guān)聯(lián),才能起到更好的分析作用,至于移動設(shè)備唯一ID我在上一篇文章中有詳細(xì)講到。
日志收集,還有很重要的一條原則就是 “標(biāo)準(zhǔn)化”、“規(guī)范化”,只有采集的方式標(biāo)準(zhǔn)化、規(guī)范化,才能最大限度的減少收集成本,提高日志收集效率、更高效的實現(xiàn)接下來的統(tǒng)計計算。
數(shù)據(jù)源數(shù)據(jù)同步
根據(jù)同步的方式 可以分為:
·直接數(shù)據(jù)源同步
·生成數(shù)據(jù)文件同步
·數(shù)據(jù)庫日志同步
直接數(shù)據(jù)源同步: 是指直接的連接業(yè)務(wù)數(shù)據(jù)庫,通過規(guī)范的接口(如JDBC)去讀取目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)。這種方式比較容易實現(xiàn),但是如果業(yè)務(wù)量比較大的數(shù)據(jù)源,可能會對性能有所影響。
生成數(shù)據(jù)文件同步: 是指從數(shù)據(jù)源系統(tǒng)現(xiàn)生成數(shù)據(jù)文件,然后通過文件系統(tǒng)同步到目標(biāo)數(shù)據(jù)庫里。 這種方式適合數(shù)據(jù)源比較分散的場景,在數(shù)據(jù)文件傳輸前后必須做校驗,同時還需要適當(dāng)進行文件的壓縮和加密,以提高效率、保障安全。
數(shù)據(jù)庫日志同步: 是指基于源數(shù)據(jù)庫的日志文件進行同步?,F(xiàn)在大多數(shù)數(shù)據(jù)庫都支持生成數(shù)據(jù)日志文件,并且支持用數(shù)據(jù)日志文件來恢復(fù)數(shù)據(jù)。因此可以使用這個數(shù)據(jù)日志文件來進行增量同步。 這種方式對系統(tǒng)性能影響較小,同步效率也較高。
數(shù)據(jù)采集本身不是目的,只有采集到的數(shù)據(jù)是可用、能用,且能服務(wù)于最終應(yīng)用分析的數(shù)據(jù)采集才是根本。