微信号:we21cto

介绍:21CTO(21CTO.com)是中国项级技术专家的学习与服务平台.我们为CTO、技术总监、架构师等技术专家提供高质量的资讯、问答、活动等产品,同时与企业连接,提供技术咨询、研发、运维、技术支持、培训及人才招聘等服...

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

2016-11-06 22:36 21CTO

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

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


我们以 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)小批量处理。每隔分钟级,秒级的的单条处理。


(未完待续)



 
21CTO 更多文章 程序猿怎么跳出技术的“鄙视链” 1024,程序员节节日快乐 微信小程序畅想曲 600亿估值、5.5亿用户背后,今日头条是如何在4年间实现爆发式增长的? 会“混”才能成功:管理者之互联网+企业生存指南
猜您喜欢 手机浏览器是鸡肋吗? DevOps2.0工具集黑宝书-读书笔记之14-群集和服务扩展 谷歌I/O大会在即,Pichai 率机器学习大将引爆AI未来(日程) 歪果设计师真会玩!13款设计师标配的实用APP OWIN产生的背景以及简单介绍