一种实时推荐系统数据发布平台的设计与实现*
2015-04-15莫萍燕杭州东信北邮信息技术有限公司北京邮电大学网络与交换技术国家重点实验室硕士研究生
莫萍燕 杭州东信北邮信息技术有限公司,北京邮电大学网络与交换技术国家重点实验室硕士研究生
王玉龙 杭州东信北邮信息技术有限公司,北京邮电大学网络与交换技术国家重点实验室副教授
一种实时推荐系统数据发布平台的设计与实现*
莫萍燕 杭州东信北邮信息技术有限公司,北京邮电大学网络与交换技术国家重点实验室硕士研究生
王玉龙 杭州东信北邮信息技术有限公司,北京邮电大学网络与交换技术国家重点实验室副教授
随着推荐系统的发展,推荐方式的时效性和准确性要求越来越高。面对迅猛发展的用户群,推荐系统的门户网站的点击率增加,本文提出了一种实时推荐系统数据发布平台。通过负载均衡使推荐系统门户网站多模块并发的推荐请求能够得到有效处理并将推荐算法推荐出的信息实时发送到门户前端以减少用户的等待时间。数据发布平台通过使用HBase(Hadoop Database)和Redis作为存储提供推荐系统中的离线推荐计算结果和在线推荐计算结果查询接口。
实时推荐系统 数据发布 高并发
1 引言
传统的个性化推荐系统定期分析数据,更新模型,进而利用新模型进行个性化推荐。由于是定期更新模型,推荐模型无法保持实时性,推荐的结果可能不会非常精准。实时性很大的好处在于:一方面更准确地为用户进行推荐;另一方面是用户可以根据实时性的推荐结果更快进行反馈,进而可以对推荐模型进行尽快更新,使推荐模型更加精确。个性化推荐系统架构的关键问题是,如何以无缝方式实现在线和离线计算过程,将算法的计算步骤合理分配到各个部分,使得到的模型既可以非常准确,又可以快速计算以满足实时性的要求。
本文针对实时个性化推荐系统提出了一种数据发布平台,其特色主要体现在同时提供离线推荐请求和在线推荐请求处理接口、高并发的业务平台前端请求处理、分布式数据缓存存储等方面。并且平台也提供接收来自业务平台前端页面发送的用户实时行为信息,能够有效地快速更新推荐模型,提高推荐结果的准确性。
2 设计目标
(1)实现同时提供离线推荐请求和在线推荐请求处理接口,并且提供接收来自业务平台页面发送的用户实时行为信息的接口,为在线推荐计算提供信息源。
(2)随着个性化推荐系统对实效性要求越来越高,本文设计要求业务平台从发送请求到获取结果中间处理的时间在ms级别。
(3)面对逐渐增加的用户量和访问行为,数据发布平台需要做负载均衡处理高并发的来自业务平台的推荐请求。
(4)系统能够安全可靠地存储和快速提取推荐结果并且能够随着数据增加有效地线性扩容是非常关键的,因此分布式的存储架构是本文的选择。
3 系统设计
3.1 推荐系统设计
推荐系统设计如图1所示。本文的推荐系统根据功能的不同主要划分为3个模块,即收集用户行为信息模块、推荐计算模块(该模块又包括推荐知识计算模块与推荐结果计算模块),还有数据发布平台模块。
运用SPSS 21.0的统计学软件,进行数据统计分析,计数资料用“%”表示,采用x2检验,计量资料患用(±s)来表示,以(P<0.05)作为差异具有统计学意义。
3.1.1 业务平台前端
本文的业务平台前端是中国移动手机阅读界面,包括PC端和手机客户端,业务平台前端负责推荐请求的发送、推荐结果应答的处理和呈现,其中可涉及到多种业务,如“猜你喜欢”、“新书推荐”和“私人定制”等。
3.1.2 数据发布平台
消息传送采用的是HTTP协议(HypertextTransfer Protocol,超文本传输协议),该平台从业务平台前端接收HTTP请求,然后读写实时查询库,完成实时数据的发布。它对每个HTTP请求进行鉴权,对离线推荐数据查询请求返回HBase库的离线推荐结果,对在线实时推荐计算请求将实时请求消息写入到实时查询库中的推荐请求队列,也可查询在线推荐结果队列将数据返回给门户前端。
3.1.3 实时查询库模块
实时查询库完成待查询数据的缓存、请求消息和结果队列的保存,采用HBase、Redis等高性能实时库,实现ms级别的查询和写入响应。
3.1.4 数据仓库模块
数据仓库中与实时推荐相关的数据包括用户行为数据、图书信息数据、推荐知识数据、推荐结果数据等。除了为“推荐计算系统”提供基础数据外,也可将需要实时查询的数据定期同步到实时查询库。实现主要基于成熟的Oracle、Hive等。
3.1.5 推荐计算模块
推荐计算模块从功能上可划分为推荐知识计算子系统和推荐结果计算子系统。其中推荐结果计算子系统从实现上分为在线推荐结果计算、离线推荐结果计算两套计算方式,两种方式下各个子模块的功能虽然相似,但具体实现不用,离线推荐结果计算使用Hadoop任务来实现,在线推荐结果计算使用Storm来完成。
3.1.6 数据采集模块
图1 推荐系统设计图
数据采集模块除现有的较成熟的离线采集方式外,还有在线采集(Kafka)方式。除了将采集到的数据持久化到数据仓库外,也为推荐计算系统提供用户行为的准实时和实时采集方式。
3.2 数据发布平台设计
数据发布平台设计如图2所示。本文的数据发布平台根据功能的不同主要划分为4个模块,即负载均衡模块、鉴权管理模块,在线推荐请求处理模块和图书信息缓存模块。
3.2.1 负载均衡模块
负载均衡(LoadBalance)建立在现有网络结构之上,提供了一种廉价、有效、透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。为了处理每天最高数亿PV的请求,需要使用HTTP负载均衡软件进行应用请求的分发。负载均衡软件使用特定的机制将请求分发到真正的Web服务器上,分发机制可根据应用特点适当选择。
本文将在Nginx的基础上研究数据发布平台的负载均衡模块,使用Nginx作为负载均衡软件,Nginx不单可以作为强大的Web服务器,也可以作为一个反向代理服务器,而且Nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、IP哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。负载均衡具体配置如图3所示。
3.2.2 鉴权管理模块
第三方应用可以向实时数据发布平台发送推荐请求、数据查询请求,鉴权管理模块负责第三方应用的注册、令牌认证等鉴权任务。第三方应用需要在实时数据发布平台网站页面注册申请开发账号,填写信息主要包括第三方应用账号、密码、Token超时时间、应用描述等信息,若账号注册成功,实时数据发布系统生成唯一标识的appKey和appSecret,这两个值将作为参数用于获取Access_Token值。若注册失败,实时数据发布系统提示错误信息,用户进一步修改信息进行注册。在以后的每一次请求中,第三方应用需要带着Access_Token,系统通过此参数进行鉴权认证,若该Access_Token已过期,第三方应用需要重新申请Access_Token。
3.2.3 在线推荐请求处理模块
图2 数据发布平台设计图
图3 负载均衡部署图
本模块将用到Redis数据库存储和查询,Redis是一款高性能的Key-value内存数据库,提供了一些丰富的数据结构,如String(字符串)、Lists(链表)、Set(集合)和Zset(有序集合)。这些数据类型都支持Push/ Pop、Add/Remove、取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。
数据发布平台接到推荐请求后,首先对请求进行鉴权和预处理,然后将请求消息写入到实时查询库的请求队列表中,在等待一段平均处理时间后,开始从Redis的查询应答结果队列表中查询对应的推荐结果数据,若不存在再采取一定的延时策略重复查询,查询到后将数据组装返回给业务平台前端,整个请求处理写入和结果查询的流程如图4所示。
3.2.4 图书信息缓存模块
本模块将用到Hbase数据库存储和查询,HBase能够支持海量数据的分布式实时存储,查询速度较快,并且HBase是面向列的KeyValue数据库,可以存储异构数据并且方便范围查询。
图书缓存模块负责从业务平台获取图书的封装信息(包括图书名、作者信息、分类信息、封面信息等),并缓存到HBase表中。对外提供图书信息查询服务,并具备过期图书自动更新功能,缓存服务作为单独服务对外提供服务,支持负载均衡部署。缓存的图书信息保存在HBase表中,采取查询时更新策略,当从缓存表中查询不到或查询到的图书信息过期时,重新从业务平台前端获取该图书信息,并更新缓存表。缓存模块对外提供的图书信息查询服务通过HTTP请求和应答来实现,该模块采用当前较为流行的数据传输格式——JSON。JSON格式是一种轻量级的数据交换格式,载荷高、易于通过编码进行解析的特点使其非常适合移动互联网领域的数据传输。具体交互图见图5。
图4 在线推荐请求处理流程图
图5 图书信息缓存交互图
4 结束语
本文提供了一种实时推荐系统数据发布平台的设计与实现方案,数据发布平台的接口可分为两类,即在线推荐请求和离线推荐请求接口。消息接口可以实现智能推荐系列应用场景的数据推送。数据发布平台可以根据需求增加相应的接口,不断地完善系统,具有可扩展性。数据发布平台对业务平台的请求,系统的响应时间控制在ms级,具有较高的实时性。本文使用分布式的存储架构,面对越来越多的用户量和访问行为,系统能够安全可靠地存储和分析这些数据,HBase可以依靠横向扩展,通过不断增加服务器,来增加计算和存储能力。另外,为了满足最高每天数亿PV的请求,运用Ngnix的负载均衡特性同样可以通过不断地增加Web服务器,来提高系统处理大量用户访问的能力。
1 Hypertext Transfer Protocol HTTP/1.1.http://www.ietf.org/ rfc/rfc2616.txt
2 林丽丽.使用高性能Web服务器Nginx实现开源负载均衡.大众科技.2010,7
3 曾超宇,李金香.Redis在高速缓存系统中的应用.微型机与应用.2013
4 Introducing JSON.http://www.json.org/
5 项亮.推荐系统实践.人民邮电出版社.2012
Design and Implementation of a Real-time Recommendation System Data Publishing Platform
With the development of recommendation system,the timeliness and accuracy of the recommended way has increasingly high demand,in the face of the rapid development of the user base,increasing portal hits of recommendation system,this paper proposes a real-time recommendation system data publishing platform with multi-module concurrent requests can be effectively treated by using by load balancing and the real-time information recommended by recommendation algorithm is sent to the front door to reduce the waiting time for users.By using Redis and HBase(Hadoop Database)as storage,the system offers offline and online recommendation calculation results query interface.
real-time recommendation system,data publishing,high concurrency
2015-08-24)
国家“973”计划项目(2013CB329102),国家自然科学基金资助项目(61471063、61372120、61271019、61101119、61121001),长江学者和创新团队发展计划(IRT1049),教育部科学技术研究重点(重大)项目(MCM20130310),北京高等学校青年英才计划项目(YETP0473)资助