首頁>科技>

馬雲曾在一次演講中提到:“人類正從IT時代走向DT時代”。所謂DT時代,即大資料時代。

大資料時代已經來臨,幾乎所有企業都已經意識到了資料中蘊含的巨大價值,紛紛組建自己的大資料團隊,收集並分析使用者資料,挖掘潛在價值。那麼,大資料的價值到底體現在哪些方面呢?我認為,其價值主要包含以下幾點:

1.輔助決策:分析使用者的各種行為,形成統計分析報表,輔助日常產品運營和調優,管理層可以透過資料報表瞭解公司業務發展狀況,從而制定相應的戰略決策。

2.驅動業務發展:透過資料更加了解使用者訴求和產品反響。利用行為日誌還原使用者操作場景,理解使用者決策模式,發掘產品不足,最佳化產品結構,提升使用者體驗。

3.實現產品智慧和增強變現能力:細分使用者群體,精準化運營。結合使用者畫像體系,針對細分人群,採用不同的運營策略,提升運營效率,節約成本;挖掘使用者喜好,為單個使用者提供個性化的服務,“投其所好”,提供更好的產品體驗,實現產品智慧,有效促成交易,增加營收。

圖1.大資料金字塔模型(轉自極數蝸牛)

大資料的價值演化過程,如上圖1所示。要想從大資料中挖掘出巨大的潛在價值的前提,便是可以儘可能多地收集到需要的資料。本期我們將透過一系列文章介紹使用者行為資料收集系統該如何設計,共分4篇,分別介紹整體架構設計、客戶端SDK設計、資料接收端設計、監控&高可用設計。本文為第一篇,介紹整體的架構設計。

系統目標與核心功能

資料收集系統的核心設計目標,一言以蔽之,以儘可能小的資源成本及時穩定地收集儘可能多的資料。其核心功能和要點如下。

01

收集儘可能多的資料

大資料時代,資料為王。要想讓資料發揮其價值,一方面需要資料量足夠大,這樣才能有足夠多的分析樣本,才具備統計學上的意義。另一方面需要資料維度儘可能全面,資料質量儘可能高。因此,在進行使用者行為埋點時,要儘可能多地圍繞重點業務收集相關資訊,尤其是核心業務資訊,因為收集資料的最終目標是進行業務分析,從而挖掘資料價值,用於最佳化產品和驅動業務發展。例如,對於電商行業,核心的業務資訊便是圍繞交易的各種維度資料,如使用者屬性、商品屬性、消費場景、訂單屬性、支付資訊等,圍繞核心資料的分析,可以幫助有效促成交易,價值不言而喻。

02

節省資源

收集的資料量越大,也就意味著需要更多的網路頻寬來進行傳輸,更多的儲存成本來將資料落盤儲存,更多的計算分析資源來對資料進行挖掘。但是資源總是有限的,因此提升資源的利用率,節省資源,顯得尤為重要。這涉及到資料壓縮、資料合併、合理的檔案格式等問題,在後續文章中會詳細介紹。

03

高可用性

從使用者端收集到的資料是源源不斷的輸送到服務端的,接收服務短時間宕機,就可能會造成幾萬甚至幾百萬的資料丟失,造成資料的不連續,從而導致質量下降。因此服務端的高可用性是穩定收集的重要前提。因此,在進行架構設計時,要充分考慮高可用性的設計,同時對監控和自動化處理,也有一定的要求。

04

可追蹤性

資料的流轉處理需要經歷多個環節,每條資料都要有自己的ID,作為資料的唯一性標識,並且帶有一定的中間處理環節的資訊,這樣才能具備可追溯性。這點非常重要,在資料ETL過程中,對資料進行安全校驗、剔除重複、過濾髒資料都需要依賴這套機制。

05

實時性

大資料的其中一個重要特性就是,資料的時效性。資料越是新鮮,其價值越大,因為距離使用者行為發生的時間點越近,反映使用者的最新情況,可以做的事情也就越多。因此,保證實時性也是系統設計的一個重點,其核心點在於儘可能縮短中間環節的耗時,減少鏈路上的損耗。

資料的流轉過程與模組組成

資料收集的大致過程為:使用者行為產生資料,由客戶端SDK進行一系列的處理後,透過網路上報,中間需要經過DNS解析和負載均衡機制,到達資料接收端,再由接收端進行簡單處理後,落盤儲存或進入其他系統。如圖2所示:

圖2.資料流轉過程

由上圖也可以看出,資料收集過程,主要分為3個模組:客戶端SDK、DNS&負載均衡、資料接收端。3個模組的具體設計會在後續的文章中詳細介紹。本文將從整體上介紹他們是如何配合的。首先,資料是由使用者產生的,因此需要將埋點程式碼與使用者的業務行為進行繫結,在特定的業務時機收集相關資訊。之後,需要將這些資料統一傳送給客戶端SDK,由SDK對資料進行規整處理、加密、生成校驗資訊、重複合併等處理,再透過網路進行上報。由於上報的客戶端數量龐大,因此上報時首先便是由DNS進行一輪負載均衡,同一個域名透過多個IP進行分流,其次是有專門的負載均衡服務,在接收到資料後分配給資料接收叢集來處理,叢集內每個處理器的角色都是對等的,方便後續進行水平擴充套件,收到資料後需要做簡單處理,打上追溯碼和進行資料合法性校驗等,然後進行儲存或流入其他系統。

系統設計時的矛盾點

01

效率與實時

為了追求資料的實時性,必然要求產生資料後,立即上報,但是這樣會產生大量的網路請求,傳輸效率自然會下降,同時在高峰時期會對服務端造成巨大的併發壓力。因此,合理的策略是對日誌進行分級處理,不同級別的日誌採用不同的上傳策略,只有少數實時價值巨大、時效性強的行為日誌採用立即上傳策略,其他則選擇現在客戶端先做聚合,然後再一起上報給服務端。例如,在影片服務應用內,播放行為、廣告曝光點選屬於實時價值大,時效性強的資料,需要立即上傳到服務端,但是如升級行為、頁面瀏覽點選、登入註冊、評論等時效性不強,可以現在客戶端聚合,然後再多條一起上報到服務端。

02

收集更多資料與節省資源

大資料時代,資料是一切的基礎,儘可能多的收集資料,才能讓這個基礎更豐滿。《大資料時代》的作者維克托·邁爾-舍恩伯格的觀點是,要儘可能多地收集資料,儘管你還不知道它的價值是什麼。但是更多的資料,也就意味著需要消耗更多的資源。這顯然也是一個很現實的問題。我們採取的策略是,面向分析收集資料,如果沒有人力或者計算能力分析,收集到的資料也只是一堆資料而已,而且隨著時間推移,其價值會逐漸下降。有些資料,比如版本功能評估的資料,我們會在版本剛上線的時候收集,但是過一段時間版本穩定且評估結束後,關閉其收集開關,從而節省相關的資源。

03

高可用性與系統複雜度

資料收集系統要足夠穩定,因為任何一次故障,損失的資料量可能都是巨大的,況且錯誤的資料有可能會引發錯誤的決策。因此,在系統設計時會考慮高可用的方案,但是這又可能會增大了系統的複雜程度,使系統變得難以維護。我們的策略是,不是讓系統本身來實現高可用,而是由監控系統承擔一部分的高可用性工作。當發生問題時,監控系統會第一時間發現,並自動處理故障,從而實現高可用性。

上文介紹了整體架構設計時要考慮的關鍵點和注意事項,相信大家對如何設計使用者行為資料收集系統有了一個大致的概念。後續的文章,我會詳細介紹下各個模組的具體設計。下一篇會詳細介紹客戶端SDK的設計方案。

11
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 新零售娛樂化、商業社交化網際網路巨頭搶奪使用者時間之戰已經打響