架構師手記17 如何設計一個實時大數據用戶行為分析系統 (一)
1. 前言
1.1. 文檔說明
此文檔是番茄版的實時大數據分析系統設計文檔。
此文檔將會是架構師手記—架構實戰中的第二個系列。為什麼說將會呢?因為我不一定能把這個系列寫完。在我寫第一個系列的時候,我說了這句話。果然,隔了一年多我才開始寫第二個系列,這說明哥一向說話靠譜。
好吧,我自己慚愧一下。
有一天,有人告訴我說為了下載我的架構師手記,給百度文庫充了一百元錢。
我很感動,實時大數據用戶行為分析系統設計,噹噹當,出場了。
1.2. 目標讀者
架構師、程序員、測試人員、熱愛妹子的猥瑣大叔、看金魚的怪叔叔、不可救藥的腐女、屌絲、宅基、各種非人類、外星生命體等愛好架構設計的賣萌的優秀青年。
1.3. 特別聲明
由於哥名下掛著一個商用的實時大數據用戶行為分析軟體的研發管理,在本文裡面不會暴露任何設計細節,你們也不要問我,我不能回答。我在這裡能說的,都是一些公開的內容。
本文只是給你們做參考,你們如果足夠強大的話,是可以憑自己弄出整個系統的。
2. 需求簡要說明
市面上可以比較容易的接觸到的實時大數據用戶行為分析系統有很多,比如國外有著名的Mixpanel、Localytics、Google,國內有TalkingData。
這些公司都提供基於雲的大數據分析系統,可以採集移動端、PC端的用戶行為數據進行分析。
下面是MixPanel的系統界面。
下面是TalkingData的AppAnalytics界面。
大家如果感興趣的話,可以去它們的網站上註冊賬戶,體驗一下它們的系統功能。這些系統的原理為提供Mobile App、Mobile H5、PC Web的SDK,讓開發人員植入到應用程序,用於採集用戶的行為數據,比如用戶瀏覽了某個頁面、點擊了某個按鈕、收藏了某個商品等等行為,都可以被SDK採集到,上傳到雲端的伺服器上,雲端伺服器會實時計算指標,呈現給系統的使用者(通常是企業的運營人員)。
下圖就是MixPanel的JS SDK代碼示例,開發人員需要把這段代碼嵌在頁面里,然後JS SDK可以自動抓取用戶瀏覽的頁面。
但是如果用戶做了某個動作,比如用戶註冊了,就需要用在頁面嵌入下面代碼來抓取用戶的這個動作。
當用戶進行註冊時,SDK把數據採集上傳到雲端,企業的運營人員就可報表界面上看到用戶註冊「signup」的統計數據。
部分公司提供了全自動的用戶數據採集,無需如同上面一樣編寫代碼,比如TalkingData的靈動分析產品。下圖是TalkingData靈動分析的產品界面。
這裡對SDK數據採集不展開說明了,還是那句話,有興趣,可以自己去這些公司的網站上研究。
簡單看一下這些雲系統,它們都是支持多租戶的。比如TalkingData系統的租戶包括墨跡天氣、聚美、網易。下圖是從TalkingData官網的截圖。
每個租戶名下可以有多個產品(或者叫做應用),一般遊戲公司名下會多一些,某些遊戲公司名下甚至會有好幾十款遊戲APP。
下圖是TalkingData官網演示環境的租戶的管理界面。
每款應用的用戶行為都可以單獨跟蹤和分析。
下圖是MixPanel的租戶的管理界面,每個租戶下可以有多個Project。「Project」等同於TalkingData的「應用」。
在這裡,做一下簡單的系統角色分析,你可以看到,這種基於雲的大數據分析系統涉及的主要角色有:
- 平台提供商,即MixPanel或TalkingData
- 租戶,即墨跡天氣、聚美
- 租戶的運營人員,比如張三、李四,他們會使用這些雲系統來分析用戶
- 用戶,這裡的用戶是指租戶應用的用戶,比如墨跡天氣的用戶、聚美的用戶,這些用戶不會使用這些系統,他們是系統的數據提供方,每個用戶的設備(手機、PC)都是一個小小的數據源,提供該用戶的行為數據
TalkingData有N個租戶(未披露),應用超過10萬款,每天收取的用戶行為數據超過30T。這是該公司之前公布的數據。
每個應用提供的用戶行為數據量有也有天與地的差別。比如墨跡天氣公開的用戶數量超過4億,日活用戶數量超過X萬(未找到可靠數據),而一些冷門應用的用戶數少於1千,日活用戶的數據量小於10。
每個應用的用戶行為數據量與三個數據相關:
- 總用戶數
- 日活用戶數
- 每日用戶使用頻率和時長
有些應用的總用戶數雖然很多,但是用戶使用的頻率很低,所以產生的用戶行為數據其實比較少,而有些應用,比如某些遊戲,用戶數量相對少,但是用戶使用頻率和時長都很高,產生的用戶行為數據會比較多。
類似於MixPanel和TalkingData的雲系統,當租戶多、應用多、應用的用戶多的時候,系統面臨的挑戰主要是數據的處理能力要快、系統還要穩定。當用戶在Mobile App上發生了一個行為,租戶的運營人員可以立刻在報表界面上看到數據發生了變化。這對系統的要求非常高。
租戶怎麼利用這些系統來分析用戶的行為數據呢?
本質上講,是從兩個核心方面:
- 用戶的忠誠度
- 用戶的價值
忠誠度是指用戶對於應用的喜愛程度,體現在:用戶多久使用一次應用以及每次使用的時長。忠誠度可以體現應用對用戶的粘度,優秀的應用會牢牢抓住用戶,讓用戶離不開,比如微信、QQ、天貓。
當然,還有一些指標也是租戶關心的:
- 應用的每日新增用戶數量
- 應用的每日活躍用戶數量
這些指標還可以細分,比如按渠道、地區、訪問方式等。但為什麼說忠誠度是核心呢,因為只有忠誠度高,應用才好,其餘指標都不一定。
用戶的價值是對於租戶而言是十分重要的,這裡的價值是指租戶在這個用戶身上賺的錢。租戶即企業,它是需要掙錢的,它需要儘可能從每個用戶身上掙到儘可能多的錢。用戶價值能夠讓租戶區分出哪些是它的優質用戶,哪些是普通用戶,哪些是劣質用戶。
舉個劣質用戶的例子,「羊毛黨」聽說過吧,不了解的可以百度一下。
這裡再多說一句:用戶行為分析並不是一個新東西,對於用戶的研究已經存在很久了。所謂實時大數據用戶行為分析,採用了實時大數據技術,並沒有對用戶行為分析本身提供任何新的方向。有太多的企業,對用戶的運營不重視,而期望上一套大數據用戶行為分析系統來提高業績。說實話,僅僅靠購買一套系統是不能提高績效的。
請再購買諮詢服務!
好了,該說說我們要乾的事情的需求了,需求就只有一句話:
我要一個類似上述系統的實時大數據用戶行為分析系統。
夠直接粗暴吧。
3. 難點分析
做上述的系統,難點是什麼?
嗯,你們可以閉上眼睛想一想,是不是很容易啊?
這裡是填空題,你自己填吧,填完了看看哥的下一篇,是不是和你想的一樣
推薦閱讀:
※Android開發轉型公司技術負責人是一種怎樣的體驗
※理解卷積神經網路的利器:9篇重要的深度學習論文(下)
※React應用架構設計
※厲害了,螞蟻金服!創造了中國自己的資料庫OceanBase(上)
TAG:架構 |