Java架构师的推荐系统架构详解,程序员必学!
对于推荐系统,大家应该不陌生。可以说现在已经随处可以看到它的身影。比如你浏览网页时,如在京东上购物,对应页面会根据你的浏览内容给你推荐诸多类似功能的商品。页面上的看了又看以及猜你喜欢,这2个功能背后都是大数据的推荐系统做支持。以及你看今日头条时,你会发现,系统不断动态展现你喜欢的内容,这也是根据大数据而做的推荐内容。尤其现在倡导千人千面的app应用中,每个人浏览的内容都是根据个人的兴趣爱好系统自动推荐,其背后都是整个推荐系统的作用。当然,在推荐系统里面会涉及到算法等等内容,这里不对算法进行介绍,只对推荐系统中涉及到的方方面面内容的架构进行说明。
如下介绍会涉及到诸多知识点,这里不做扩展,后续会主键更新相关内容的文章。
整个推荐系统可以用如下图内容展示:
如图所示:
推荐系统中主要分为2大块内容:
根据操作日志进行筛选过滤提取相关有用信息得到符合既定模型的内容,这部分称之为离线数据分析。因为都是操作日志,是以往历史操作,离线数据的缺点之一就是缺乏失效性,对应得出的内容都是以前历史得到的,这造成的问题很可能是推荐系统展示内容不符合人的兴趣关注点。这就引出了第二个类内容:系统会采集实时的流数据进行实时的分析筛选,这部分叫做实时流处理。
综上:离线数据分析以及实时流处理是推荐系统的2个核心模块。当然,其背后,涉及算法,机器学习等等内容。到页面展现前,还可以根据需求在推荐内容上插入指定需要展现的内容。
【1】离线数据分析
这部分系统主要采集服务器上的日志内容,因需配合实施流的处理,这里需要先放在kafka中,然后,这些日志统一被hdfs收集,然后通过mapreduce进行关键字过滤,其一:这些内容存储HIVE仓库中,在通过ETL对数据内容进行抽取编辑,其二,这些内容也可以交给机器学习等,推荐相关内容。然后,在导出到db中,如MySQL中,然后通过推荐引擎编写应用逻辑,在db中数据进行对应需求操作,从而展现在页面上。
【2】实时流处理
通过kafka中采集数据,系统可以统计出当前最新的动态,将这些动态也插入DB中。
综上,大概是推荐系统通用的架构说明。
专注于Java架构师技术分享,撩我免费送Java全套架构师晋级资料
(Java架构师交流企*-**-*鹅*-*裙*-*:445*-**-*820*-**-*908)
���6�.��
网友评论