用戶標簽系統(tǒng)的用途
互聯(lián)網(wǎng)公司在有一定用戶積累之后境钟,需要告別早期粗放式粟按、高成本的營銷方式。走上根據(jù)用戶特征和價值精準化營銷的道路鸯匹。
在無法實現(xiàn)大數(shù)據(jù)用戶畫像的條件下,為用戶打上價值標簽以實現(xiàn)用戶分類泄伪,簡單而有效殴蓬。
標簽的定義
我司常用的標簽有:新用戶、老用戶蟋滴、流失用戶染厅、活躍用戶等。此外津函,還可以根據(jù)用戶以往行為肖粮,如投訴、訂單取消尔苦、查看報價等涩馆,為用戶打上相應的標簽。標簽系統(tǒng)提供了從多維度進行用戶分類的方法 允坚。在用戶分類的基礎(chǔ)上魂那,實現(xiàn)差異化營銷、差異化優(yōu)惠稠项,則可以節(jié)約營銷成本涯雅。
標簽的時效性
標簽如新用戶、流失用戶等 皿渗,會隨用戶在系統(tǒng)中下單而失效斩芭。而活躍用戶會隨著用戶在系統(tǒng)中長期不下單而變成流失用戶。通常乐疆,用戶半年以前的行為參考性較低划乖。用戶標簽需要根據(jù)用戶近期行為生成。因此挤土,標簽必須與用戶的實際狀態(tài)同步琴庵,從而不誤導營銷決策。
標簽的使用需求
使用標簽的需求有2種仰美。
- 第一種是給定一個用戶迷殿,問用戶是否具有某標簽。在給用戶發(fā)放代金券時咖杂,用戶標簽可用于決定券的金額庆寺、券種。此種情況下诉字,用戶標簽必須是實時的懦尝。
- 第二種是給定一些標簽知纷,問具有這些標簽的用戶有哪些。在節(jié)假日陵霉、重大營銷節(jié)點時琅轧,可通過為指定特征的用戶集中推送優(yōu)惠信息,實現(xiàn)促銷踊挠。在這種情況下乍桂,用戶標簽為準實時即可。
實時計算用戶標簽
為用戶打上標簽本質(zhì)上是為識別用戶的某種歷史行為特征并標記出來效床。由于標簽的時效性要求睹酌,需要分析用戶近期的行為。因此剩檀,我們將用戶的行為作為基本的記錄忍疾、分析單位。
一條記錄的例子如下:
用戶id | 發(fā)生時間 | 行為類型 | 訂單id | 其它 |
---|---|---|---|---|
123 | 2016-10-20 12:10:32 | 取消訂單 | orderId | 谨朝。。甥绿。 |
每當用戶進行某個行為字币,則為用戶添加一條記錄。為方便實現(xiàn)更多的查詢共缕、搜索拓展洗出,我們把用戶行為數(shù)據(jù)實時導入到Elasticsearch中。
當計算給定用戶標簽時图谷,從elasticsearch/數(shù)據(jù)庫中查詢到指定時間段內(nèi)用戶行為翩活,實時為用戶計算標簽返回。
由于用戶行為是實時導入的便贵,而用戶標簽是根據(jù)用戶最新行為記錄生成的菠镇,因此生成的標簽具有實效性。由于每個用戶在一段時間內(nèi)的訂單相關(guān)行為數(shù)據(jù)量不大承璃,因此計算開銷可以忽略利耍。
以上設(shè)計的好處在于,我們可以隨時調(diào)我們生成標簽所關(guān)心的時間段盔粹“妫可以關(guān)心最近3個月,或者突然改到半年舷嗡。而標簽的定義也可以隨時更改轴猎。底層是最原始的用戶行為數(shù)據(jù),不需要任何改變进萄。
準實時標簽查詢用戶
根據(jù)標簽查詢用戶則要困難一些捻脖。我們必須提前為每個用戶計算好標簽锐峭。才可以根據(jù)標簽建立索引,最后實現(xiàn)查詢郎仆。在數(shù)據(jù)量較大的情況下只祠,計算一次可能需要1-2天。如果只在少量時間節(jié)點使用此功能扰肌,這樣的時間開銷可以接受抛寝。
我們考慮如果需要經(jīng)常使用此功能,如何實現(xiàn)曙旭?
由于我們已經(jīng)有了實時計算給定用戶標簽的能力盗舰。因此,每當用戶有新的行為時桂躏,我們可以重新為此用戶計算標簽钻趋,并入庫。系統(tǒng)運行一段時間之后剂习,在系統(tǒng)中有行為的用戶在數(shù)據(jù)庫中都有了記錄蛮位。行為越頻繁的用戶,其標簽狀態(tài)越實時鳞绕。
為了保證用戶標簽不過時失仁,我們記錄用戶標簽的更新時間。通過逐條掃庫的方式们何,更新數(shù)據(jù)庫中更新時間較為久遠的數(shù)據(jù)萄焦,重新計算標簽。
由于用戶最新的行為會導致標簽更新冤竹,因此掃庫的方式只是為了保證標簽不會因為時間的推移而過時拂封。這方面的時效性要求在一周,一天以內(nèi)都可以接受的鹦蠕。
用戶行為的監(jiān)聽
一種監(jiān)聽用戶行為的方法是通過異步消息冒签。用戶的行為會在不同的服務器中發(fā)生。當服務器檢測到相關(guān)的事件時片部,通過消息系統(tǒng)發(fā)出消息通知镣衡,從而告知標簽系統(tǒng)。然而采用消息系統(tǒng)實現(xiàn)有以下2個問題:
- 需要其它系統(tǒng)配合發(fā)出消息
- 如果消息丟失档悠、消息重復則標簽計算不準確
消息重復的問題可以通過去重來解決廊鸥,而其它問題則無法解決了。
因此我們想到采用canal辖所,通過監(jiān)聽數(shù)據(jù)庫的變化惰说,來得知訂單狀態(tài)變更的事件。這樣缘回,不需要其它系統(tǒng)的配合吆视,需要完成事件的可靠監(jiān)聽典挑。
總結(jié)
我們闡述了一種實現(xiàn)實時標簽系統(tǒng)的方法。通過存儲用戶的歷史行為啦吧,我們的底層系統(tǒng)具有了以不變應萬變的能力您觉。通過實時計算標簽,用戶標簽的定義就可以隨時修改了授滓。通過將用戶行為放入elasticsearch中琳水,加快了用戶行為查詢的速度。
另一方面般堆,通過實時重新計算用戶標簽在孝,我們保證了用戶標簽根據(jù)用戶行為實時調(diào)整。而對于標簽的隨時間推移過時問題淮摔,我們通過掃庫的方式來逐漸更新私沮。從而做到了用實時更新應對快速變化,用后臺任務應對慢速化和橙。