实时用户标签生成系统设计

用户标签系统的用途

互联网公司在有一定用户积累之后,需要告别早期粗放式、高成本的营销方式。走上根据用户特征和价值精准化营销的道路。
在无法实现大数据用户画像的条件下,为用户打上价值标签以实现用户分类,简单而有效。

标签的定义

我司常用的标签有:新用户、老用户、流失用户、活跃用户等。此外,还可以根据用户以往行为,如投诉、订单取消、查看报价等,为用户打上相应的标签。标签系统提供了从多维度进行用户分类的方法 。在用户分类的基础上,实现差异化营销、差异化优惠,则可以节约营销成本。

标签的时效性

标签如新用户、流失用户等 ,会随用户在系统中下单而失效。而活跃用户会随着用户在系统中长期不下单而变成流失用户。通常,用户半年以前的行为参考性较低。用户标签需要根据用户近期行为生成。因此,标签必须与用户的实际状态同步,从而不误导营销决策。

标签的使用需求

使用标签的需求有2种。

  • 第一种是给定一个用户,问用户是否具有某标签。在给用户发放代金券时,用户标签可用于决定券的金额、券种。此种情况下,用户标签必须是实时的。
  • 第二种是给定一些标签,问具有这些标签的用户有哪些。在节假日、重大营销节点时,可通过为指定特征的用户集中推送优惠信息,实现促销。在这种情况下,用户标签为准实时即可。

实时计算用户标签

为用户打上标签本质上是为识别用户的某种历史行为特征并标记出来。由于标签的时效性要求,需要分析用户近期的行为。因此,我们将用户的行为作为基本的记录、分析单位。
一条记录的例子如下:

用户id 发生时间 行为类型 订单id 其它
123 2016-10-20 12:10:32 取消订单 orderId 。。。

每当用户进行某个行为,则为用户添加一条记录。为方便实现更多的查询、搜索拓展,我们把用户行为数据实时导入到Elasticsearch中。

当计算给定用户标签时,从elasticsearch/数据库中查询到指定时间段内用户行为,实时为用户计算标签返回。

由于用户行为是实时导入的,而用户标签是根据用户最新行为记录生成的,因此生成的标签具有实效性。由于每个用户在一段时间内的订单相关行为数据量不大,因此计算开销可以忽略。

以上设计的好处在于,我们可以随时调我们生成标签所关心的时间段。可以关心最近3个月,或者突然改到半年。而标签的定义也可以随时更改。底层是最原始的用户行为数据,不需要任何改变。

准实时标签查询用户

根据标签查询用户则要困难一些。我们必须提前为每个用户计算好标签。才可以根据标签建立索引,最后实现查询。在数据量较大的情况下,计算一次可能需要1-2天。如果只在少量时间节点使用此功能,这样的时间开销可以接受。

我们考虑如果需要经常使用此功能,如何实现?

由于我们已经有了实时计算给定用户标签的能力。因此,每当用户有新的行为时,我们可以重新为此用户计算标签,并入库。系统运行一段时间之后,在系统中有行为的用户在数据库中都有了记录。行为越频繁的用户,其标签状态越实时。

为了保证用户标签不过时,我们记录用户标签的更新时间。通过逐条扫库的方式,更新数据库中更新时间较为久远的数据,重新计算标签。

由于用户最新的行为会导致标签更新,因此扫库的方式只是为了保证标签不会因为时间的推移而过时。这方面的时效性要求在一周,一天以内都可以接受的。

用户行为的监听

一种监听用户行为的方法是通过异步消息。用户的行为会在不同的服务器中发生。当服务器检测到相关的事件时,通过消息系统发出消息通知,从而告知标签系统。然而采用消息系统实现有以下2个问题:

  • 需要其它系统配合发出消息
  • 如果消息丢失、消息重复则标签计算不准确
    消息重复的问题可以通过去重来解决,而其它问题则无法解决了。
    因此我们想到采用canal,通过监听数据库的变化,来得知订单状态变更的事件。这样,不需要其它系统的配合,需要完成事件的可靠监听。

总结

我们阐述了一种实现实时标签系统的方法。通过存储用户的历史行为,我们的底层系统具有了以不变应万变的能力。通过实时计算标签,用户标签的定义就可以随时修改了。通过将用户行为放入elasticsearch中,加快了用户行为查询的速度。

另一方面,通过实时重新计算用户标签,我们保证了用户标签根据用户行为实时调整。而对于标签的随时间推移过时问题,我们通过扫库的方式来逐渐更新。从而做到了用实时更新应对快速变化,用后台任务应对慢速化。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容