推薦系統-埋點

 

        現在幾乎所有的電商平臺都或多或少的上了推薦系統,常用的推薦系統有。熱門推薦、最近瀏覽、猜你喜歡、看了還看、買了還買、綁定銷售,等等,這麼多NB的系統都依賴一點,就是用戶行爲數據,這些用戶行爲數據都從那來的呢,那就是埋點系統了,埋點系統是一切推薦系統的生命源。

        所謂埋點系統,按本人理解就是埋點引擎+存儲系統,埋點引擎位於前端系統與後端存儲系統之間,主要是接收前端的埋點數據,經協議轉換以後存儲到後端存儲系統。

整個系統的架構如下所示:

       

        1,用戶行爲搜索存儲格式選擇

       數據存儲格式一定要考慮到足夠的可伸縮性,因爲業務方的需要總是千奇百怪,一個NB的存儲設計可以減少後續很多工作量,下面是我設計埋點系統存儲的數據項,歡迎討論。

 Name

Des&R

msg_id

消息ID

realuserid

用戶ID,登錄後存在,

sysname

來源系統的名稱

servicetype

     具休來源頁面

oper_type

行爲類型

appid

移動應用會有APPID

location

移動應用會有APPID位置信息

accesstime

訪問時間

ip

PC端IP地址

itemid

商品ID

anomoususerid

用戶ID,沒有登錄存匿名,登錄以後存實際用戶ID

descinfo

描述信息,日誌類型是評分時,此處寫評分

sessioninfo

會話IDs,隨機生成的10位數字,每位單獨生成

     2,存儲系統選擇

      當時選擇HBASE主要是考慮到兩點因素,一是它的可伸縮性,一是它較高的實時性,當然也有很多其它的選擇,比如mongodb 也不行,只是我沒有用過,不熟。

     3,埋點引擎

      埋點引擎是本系統的核心所在,主要負責解析前端發來的http消息,解析以後通過thrift協議丟給thriftserverthriftserver再放到HBASE

這個設計上來講還是比較簡單,主要是要考慮到高併發,短連接的情況,下面是單機的一個設計。

 

 

       採用了比較典型的多線程設計模型。

       Monitor是主線程,負責接收前端的埋點消息,通過某種調度算法放到對應的隊列,給客戶端應答埋點成功消息。

      Scheduler:調度模塊,Monitor調用,不是單獨線程。

       QX:消息隊列,採用無鎖隊列設計,可以理解爲一個先進先出的緩存機制,Monitor負責生產消息,Worker負責消費消息。

       Worker:負責消息的校驗,合法性檢查,解析,打包,發送任務。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章