blog
整理一個系統(tǒng)設(shè)計.該系統(tǒng)通過收集用戶的基本信息與行為信息構(gòu)建出一個完整的用戶畫像,然后根據(jù)用戶的基本屬性或者行為進(jìn)行實時或定時的營銷行為(向用戶發(fā)消息,發(fā)郵件,發(fā)短信,推薦內(nèi)容等等).
數(shù)據(jù)采集
這是一個基于實時數(shù)據(jù)的實時系統(tǒng),因此數(shù)據(jù)的采集也大部分是實時的.數(shù)據(jù)的來源分為兩部分.一種是從數(shù)據(jù)庫來的基本屬性,這些通過canal實時采集.另一種是從kafka來的行為信息,這些大部分是從業(yè)務(wù)里打出來的日志.
基本屬性采集
canal是阿里開源出來的一個mysql數(shù)據(jù)庫binlog增量訂閱消費的組件.且不管阿里造它的目的,于我們來說它有個珍貴的特性就是可以讓數(shù)據(jù)庫中靜態(tài)的數(shù)據(jù)流動起來,它會把數(shù)據(jù)表的每一行改動作為事件,然后把改動前和改動后> 的數(shù)據(jù)發(fā)送出來.github地址.我們通過canal的客戶端把數(shù)據(jù)打到kafka,然后消費kakfa解析每一個數(shù)據(jù)表的內(nèi)容merge后存入elastic search索引,拿用戶信息來說,我們現(xiàn)在就有了一份
實時更新的包含多個數(shù)據(jù)庫數(shù)據(jù)的索引.
行為信息采集
行為信息(比如用戶的登錄,更新信息,瀏覽,交易等)大都是通過接收業(yè)務(wù)方kafka然后把信息統(tǒng)一整理保存在elastic search之中.行為信息保存了每一種行為第一次發(fā)生時間,最后一次發(fā)生時間,發(fā)生總次數(shù),最近兩周內(nèi)每> 一天的發(fā)生次數(shù)以及與具體行為有關(guān)的一些額外數(shù)據(jù).
這樣我們就有了一個擁有基本信息與行為信息的一個近實時的索引.
數(shù)據(jù)模型
數(shù)據(jù)模型就是指的上面保存好的elastic search索引,包含了用戶的基本信息和行為信息.
任務(wù)調(diào)度
任務(wù)指的是根據(jù)用戶的基本信息和行為信息配置一系列針對的動作,包括發(fā)送站內(nèi)消息,郵件,短信.任務(wù)分兩種,事件任務(wù)和計劃任務(wù).事件任務(wù)指的是可以實時對正在發(fā)生的用戶時間作出處理,比如用戶的登錄等,這部分主要
靠kafka消息結(jié)合用戶信息索引的檢索實現(xiàn).計劃任務(wù)指的是設(shè)置定時任務(wù)定時檢索索引實現(xiàn),這部分用quartz實現(xiàn),比如任務(wù)可以配置為每十分鐘向兩天前注冊而沒有發(fā)生交易行為的用戶發(fā)送一封站內(nèi)信.
效果跟蹤
這部分實現(xiàn)了統(tǒng)計每個任務(wù)每日發(fā)送的人數(shù)
待完成
統(tǒng)計站內(nèi)信,郵件的展現(xiàn)量和點擊量
介紹的很籠統(tǒng),待完善...