大数据实时推荐系统产品研发阶段性报告—2015年第一期(201508~201511)1樊后礼北大方正信产集团研究院/基础软件中心需求回顾2需求回顾实现一个推荐系统容器,该容器能容纳各种推荐方法实时推荐大数据场景推荐方法可插拔式3需求分解及任务完成情况4系统架构介绍5技术路线6兆级访问极速响应弹性部署实时推荐永不宕机对用户的访问,能在毫秒级别反应根据用户访问量及数据量,可在线添加、裁减机器。50millionrequest/seconasinglemachine.及时收集用户行为,及时计算全网的行为特征,及时返回用户感兴趣的产品。任务执行的反复失败,不会引起服务进程的崩溃,服务一直在线。Fast,轻量级HttpServerspray分布式K-V数据库HBase分布式可编辑cacheTachyon、Redis分布式内存计算模型Spark分布式高吞吐量消息处理kafka简单的协同akka系统输入数据定义7用户行为数据网站产品属性数据其他数据根据模型可选角色架构8user推荐系统的使用者。每个使用者都有一个唯一的不可更改的UserID标识,UserID可以对应多个可更改的别名。item用户操作的网站内容。如新闻类网站里的一条新闻,电商网站里的产品,视频、MP3等。每个item都有一个唯一的不可更改的ItemID标识。角色架构9event用户的每一个行为都将产生某种事件,事件是用户行为的描述。用户行为如:登录、浏览、搜索、收藏、消费、评价、分享等事件由下列字段来定义eventType//事件类型userID//用户IdtimeStamp//事件发生时的时间戳Map[(String,String)]//事件相关的其他属性,Key-value型,在同一个推荐系//统里不同类型的事件//有不同的K-V组,但同类型事件的Key相同角色架构10task需要定时运行的代码段。可以是复杂的模型、简单的算法或事务型操作。modelTask的一个实例,主要用于表示数据挖掘、机器学习等算法及算法运行之后的结果,如用户聚类模型、用户识别模型、产品聚类模型…algorithm主要用于表示除数据挖掘、机器学习之外的比较简单的算法,如计算同类用户中流行产品的top等,同model相比,它没有训练、预测这些过程,输入参数也没有Model复杂。它可以是Task的一个实例,也可以不是。角色架构11GTOTask的一个实例,一般事务型操作,如对表记录的定期删除、缓存的定时清理等…TaskManagerTask的管理者,负责Task的定时启动、清除等事务角色架构12method具体的某个推荐方法。一个推荐方法一般包括一或多个model、一或多个algorithm。根据Algorithm运行的时长,能定义algorithm是否task化。角色架构13recommendResultMethod的运行结果。不管什么method,其返回结果的结构都一样。其结构定义如下:recommendResultitemID:String//item标识符Degree:float//推荐度指标,数值越大表示用户可能越感兴趣//(在同一个推荐方法内对比)attris:Option[Map[(String,String)]]=None//item属性,Key-value型,一般为空主要角色间关系14methodmodelalgorithmeventuseritemTaskmanagerGTO产品架构图15ResourceVirtualizationStorageProcessingEngineAccessandInterfacesMesosHadoopYarnHDFSHbaseTachyonRecommender-CoreRedisEventEngineRecommendEngineTaskSchedulerEngineControlCentandManagenrToolFounderInDevelopment3rdPartyMySQL产品架构图16本版本没有实现Tool层RecommendEngine17根据客户端具体推荐请求返回相应推荐结果从分布式缓存中获取model、algorithm结果从分布式缓存中获取用户最近事件运行简单的algorithm可动态裁剪、添加methodEventEngine18根据客户端具体事件请求返回用户相应事件接受客户端发送过来的用户事件将用户事件存储到分布式缓存中的环形列表中将用户事件通过kafka异步发送到事件存储引擎TaskSchedulerEngine19可多进程运行,分布式部署按计划定时运行所管理的Task,如model、algorithm、eventStorager、memoryCleaner等调用StorageLay提供的接口存取key-map型、event型、recommendResult型数据TaskSchedulerEngine20提供接口存取数据读写方式包括:追加、覆盖、读存取方式包括:分布式批处理、单记录方式存取介质包括:分布式数据库、分布式缓存存取数据类型包括:key-map、event、recommendResult下一阶段需求(任务)讨论21ThankYou!22