个性化推荐系统架构设计(一)

优采云 发布时间: 2022-05-24 05:50

  个性化推荐系统架构设计(一)

  

  互联网在不断发展,技术在不断演变。作为架构师,工程管理者需要与时俱进。

  个性化推荐是一个由数据挖掘和机器学习的综合学科,它基于用户兴趣和喜好,提供相关服务精准的推荐,而且这种口味和喜欢的收集,是在用户无过多参与之情况。

  我们以 Service-oriented 架构 — SOA为核心,以 Full Stack 技术为特点,结合当前炙手可热的机器学习在实际软件工程中的运用。我会介绍如何实现文本采集,关键字查询与推荐引擎技术。

  推荐系统目标是构建一个高扩展和高可用产品。所用技术栈如下:

  Node.js ,RPC / REST, RabbitMQ/Kafka, Crawler, MongoDB, TensorFlow

  系统分为如下四部分:

  1、Web前端:采用Node.js实现一个动态网站让用户访问,根据当前用户画像返回其感兴趣的内容,包括搜索结果。

  说明:前端不处理任何业务逻辑,全部通过 RPC 调用后端服务 API。

  2、后端服务层:使用 Python 实现 REST API ,接受前端请求,读写数据库或消息队列,调用推荐引擎,返回当前用户画像的内容,比如 TensorFlow Serving。

  3、文章采集器:用来实时采集资讯数据,连续运行(不同的时间规则)的网络爬虫,不断抓取其它网站信息,然后进行过滤&归类&标签,用户画像集合&定义,更新数据库。

  用户画像建模

  用户行为收集

  个性化推荐系统收集的用户行为信息,主要来自以下两类数据:

  1)访问日志

  一般为Web服务器的日志,如Nginx。其内容包括来源IP,客户端,HTTP响应码,来源,UserAgent代理版本等。

  网站访问日志一般不会有遗漏,无论是什么场景的产品,对于开发者都是个宝贵财富,是数据统计、挖掘与分析的基础和重要来源。

  2)客户端

  一些用户操作行为,在日志里不能完全体现,外部环境如硬件,操作系统,软件,内部如分享,收藏,转发以及用户社交帐号(比如微博)、Cookie、浏览深度和时间长度。一般采用Ajax异步处理。

  这些埋点用事先准备好完备的REST接口,加载相应服务。为提高效率,一般服务器采用异步处理,使用MQ(Rabbit或Kafka)队列来统一收集数据 。

  服务器端可启动多个服务进程实时*敏*感*词*这些MQ数据,然后做相应处理。

  数据解析

  接下来我们需要对类数据进行解析。我们可定时大批量处理,小批量处理以及单条逐一处理。

  1)定时大量处理。使用Scribe/Scribe,或Python/Java若干小时或每天处理。一般为处理用户画像;

  2)逐条处理。主要针对埋点的用户数据 处理,借助MQ,加上Storm进行处理。

  3)小批量处理。每隔分钟级,秒级的的单条处理。

  (未完待续)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线