本文主要分享个人经历中关于推荐系统的应用理解,包括整体推荐系统架构设计、推荐后台服务设计。
推荐系统架构设计 1.0
推荐系统根据数据使用划分为在线和离线两部分。APP服务日志通过flume采集,然后传给离线和在线业务使用。离线数据主要用来离线训练模型,如gbdt、lr、xgboost等,在线数据特征用来让模型进行在线预测。如下图所示:
- 在线部分
实时数据从kafka获取到后直接进入spark streaming(这里也可以用其他实时计算技术,如storm,flink)进行处理,计算出实时特征存入redis,供线上模型预测服务使用。
- 离线部分
离线部分数据主要分为两部分,一部分是mysql定时拉取过去,另一部分是从flume实时拉数据到hive数据仓库。mysql主要存储用户相关变动频率小的属性特征,flume采集计算的主要是帖子(feed)相关变化频率大的特征。
推荐系统后台设计 1.0
推荐主要方法分为召回和排序过程,召回过程是粗步选取数据,排序过程是对筛选后的数据精确排序,结果返回给用户。