blog
整理一个系统设计.该系统通过收集用户的基本信息与行为信息构建出一个完整的用户画像,然后根据用户的基本属性或者行为进行实时或定时的营销行为(向用户发消息,发邮件,发短信,推荐内容等等).
数据采集
这是一个基于实时数据的实时系统,因此数据的采集也大部分是实时的.数据的来源分为两部分.一种是从数据库来的基本属性,这些通过canal实时采集.另一种是从kafka来的行为信息,这些大部分是从业务里打出来的日志.
基本属性采集
canal是阿里开源出来的一个mysql数据库binlog增量订阅消费的组件.且不管阿里造它的目的,于我们来说它有个珍贵的特性就是可以让数据库中静态的数据流动起来,它会把数据表的每一行改动作为事件,然后把改动前和改动后> 的数据发送出来.github地址.我们通过canal的客户端把数据打到kafka,然后消费kakfa解析每一个数据表的内容merge后存入elastic search索引,拿用户信息来说,我们现在就有了一份
实时更新的包含多个数据库数据的索引.
行为信息采集
行为信息(比如用户的登录,更新信息,浏览,交易等)大都是通过接收业务方kafka然后把信息统一整理保存在elastic search之中.行为信息保存了每一种行为第一次发生时间,最后一次发生时间,发生总次数,最近两周内每> 一天的发生次数以及与具体行为有关的一些额外数据.
这样我们就有了一个拥有基本信息与行为信息的一个近实时的索引.
数据模型
数据模型就是指的上面保存好的elastic search索引,包含了用户的基本信息和行为信息.
任务调度
任务指的是根据用户的基本信息和行为信息配置一系列针对的动作,包括发送站内消息,邮件,短信.任务分两种,事件任务和计划任务.事件任务指的是可以实时对正在发生的用户时间作出处理,比如用户的登录等,这部分主要
靠kafka消息结合用户信息索引的检索实现.计划任务指的是设置定时任务定时检索索引实现,这部分用quartz实现,比如任务可以配置为每十分钟向两天前注册而没有发生交易行为的用户发送一封站内信.
效果跟踪
这部分实现了统计每个任务每日发送的人数
待完成
统计站内信,邮件的展现量和点击量
介绍的很笼统,待完善...
网友评论