实时推荐系统项目设计与实现

通过前面的学习的话,我们基本上将flink里面所涉及到的知识点和内容全部都讲解完毕。包括像data stream API table以及circle API和有状态计算和一些组件站。这节课的话,我们来通过一个具体的推荐场景的项目,来将前面所学习到的内容进行相应的整合。帮助你加深对于flink的了解和认识。

首先我们来看一下基于flink是如何去构建实时推荐的系统。对于推荐系统的应用场景来讲的话,其实是非常普遍。包括像现在比较常见的一些电商的一些平台,包括像在淘宝、京东以及亚马逊。在这些平台上面去购物。通常情况下会有像猜你喜欢,买了又买,看了又看,类似于这样的一些推荐的广告位。这些广告位上面的话,一般都是根据用户的一些实时的一些行为,然后进行相应的一些算法模型的构建,然后再去推荐到相应的一些用户的终端。这时候的话其实就是一套完整的推荐系统的应用场景。

在我们这样的一个项目里面的话,是希望去能够去实现电商推荐的一些功能。包括像猜你喜欢以及热门商品和好评商品,以及实时的热门商品。这里面的话其实是有两种类型,一种是离线的推荐和一种实时的推荐。对于实时的推荐的话,会根据对过去1个小时里面热门的商品进行统计。然后每五分钟的话滑动一次统计的窗口,然后去计算出来相应的实时的热门的商品,然后再去推送给用户的终端。

另外一种的话就是一些离线的一些应用,包括像猜你喜欢,对用户的行为进行推荐。当用户对商品进行评分时,根据用户的历史评分,商品结合item CF这样一套算法计算出推荐的结果,这种的话就是猜你喜欢所应用到的一些算法。另外一种的话就是热门商品。这个的话其实是通过离线去计算历史上面的一些热门的商品,包括它的销售量,根据它的一个销售量去计算出来的一些热门商品。作为热门商品的推荐。还有一些好评的商品,去计算出来一些评分较高的一些商品,然后去将这些商品推送给用户。

在这样的一个项目里面的话,我们希望去实现类似于以下这样一些功能。通过flink去构建对应的这样一些数据流,然后完成实现对于电商推荐的场景的一些数据流的构建。整个推荐系统的架构设计的话,我们可以看得到整个系统里面的话主要分为几个部分。第一个部分的话就是有一个前后端。这个前端的话其实我们就模拟了一下类似于京东或类似于淘宝的这样的一个终端。可以通过这样的一个map UR的话,可以去进行相应的一些产品的检索和一些猜你喜欢的推荐,和热门商品的一些推荐服务。

在推荐模块的话,主要分为离线推荐和实时推荐。离线推荐的话主要是有基于物品推荐和统计分析。基于统计分析这边的话会输出历史热门的商品和优质商品,也就是好评商品。基于物品推荐出来的这样的一个结果的话,最终都会去写入到h base的这样一种存储系统里面。HBase其实我们知道它其实本身是一套支持高并发访问的一套KV存储介质,我们把所有的推荐的结果从离线算出来了之后,去把它放置在HBase里面。然后用户访问的时候通过到h base的系统里面去查询出来某一个用户所关联的一些推荐的结果,然后进行一些展示。这个的话其实就是离线推荐的这样一套数据流所涉及到的一些内容。

对于实时推荐来讲的话,实时推荐的话主要是计算实时top n的商品。根据计算出来的top n商品,然后进行对应的热门商品的推荐。将相应的这样的一个推荐的结果也是实时的去写入到h base里面。HBase里面的话,然后再根据用户这边进行访问的时候,进行对h base里面的热门商品进行访问,然后返回给对应的结果。还有一些基于用户行为的推荐。也同样的是,在h base里您其实将前面所涉及到的一些推荐的结果都进行了一些维护。然后再通过前端的web页,面对这样的一个h base里面的推荐结果进行访问。

对于后台的系统后台的外部系统来讲的话,它所依赖的是mysql的这样一套数据库。它会将商品的信息进行没货以及用户的信息进行维护。也就是说我们在h face里面其实维护的是用户和商品之间推荐的关系。在每一个表里面它会记录哪一个商品会推荐给哪一个用户。在真正需要去查询对应的商品的时候,是从我从mysql业务库里面去获取到商品的一些详细信息,然后再去推送给用户这边进行访问。整体下来的话,这就是整个一套推荐系统的架构设计。

在这里面的话,我们会涉及到推荐的模块,里面会用到flink的离线的处理功能和实时的处理功能。在这一部分的话会将一些推荐的一些数据进行处理,处理完成的结果会写入到h base里面。借助于flink所提供的离线和实时处理的能力,然后完成对于用户的一些推荐。

在这样的一个项目里面的话有一些要求。首先用户会对商品进行实时的评分。这个实时的评分的话会通过卡布卡将实时的评分的结果去发送到实时推荐任务之中。系统执行实时推荐的任务,会将数据存储到h base的rating以及user project这样一张表里面。同样的实时任务里面还会去计算实时的top n以及基于用户行为的推荐,然后再将结果去存储在h base里面去。HBase里面其实存储的就是online hot的这样一个里面。Web端查询h base里面获取相关模块所需要的一些展示的结果。这个的话其实这个项目里面就是对于实时推荐这一块的一个大概的一个流程。

我们可以看得到对于整个推荐的项目里面的话所依赖的一些环境,包括像使用mysql h base、flink、redis以及卡夫卡和zoo IPPO。这个是整个项目里面面所依赖的一些外部的环境。我们在这里面假设这些组件已经全部安装完成,那么包括像mysql或redis以及卡布卡这些组件都已经全部都已经ready在这个基础之上去构建相应的推荐的系统。

整个项目的模块的话一共分为三个部分。推荐的模块的话包含了离线的flink作业和实时的flink作业。后端这一块的话主要是负责商品的推荐的请求,以及用户进信息的维护。这是后端服基于spring put去构建出来的一套后端服务。前端这一块的话就主要提供一些页面的浏览的支持。整个项目的话主要分为这样三个部分。

我们来看一下整个项目的一个组成部分。前面其实已经提到项目里面涵盖了三个部分。第一个是后台的管理服务,以及包括推荐的模块。推荐的模块的话其实就是离线的flink作业和知识的flink作业。所有的作业都是在task里,包括离线的话就会计算item CF以及统计的一些任务。然后在线的话就是有top n product task以及基于用户行为推荐的task。

Top n task里面的话使用的就是data stream APR。Data stream APR里面去对卡布卡里面的rating数据进行处理。处理完成了之后,产生top n的这样统计的结果。按照窗口进行统计,每隔5秒钟进行一次统计,然后产生热门商品,并且将这些热门商品存储在h base里面去。整个来讲的话,其实这样的话其实就实现了对于top n的这一块的商品。

离线这一块的话基本上跟这块的逻辑相似,它会去设涉及到一些算法上面的一些使用,在离线的模块里面的话也会去借助于table APR进行相应的一些处理。APR里面可以通过circle的这种形式去计算出来相应的一些指标。这些指标的话可以通过circle进行定义。所以说这个是在推荐的模块里面可以去看得到。它其实涵盖了相应的一些在function的定义,包括think和soft的一些function。Think里面的话有HBase think,然后function里面的话有对应一些处理的一些function的定义,包括像数据加载和一些top n的一些计算的function。在这里面的话都会去定义相应的一些数据处理的方法。

在后端的这一块的话,主要是基于spring put去构建出来一套后端的服务。它主要有两个controller,每个controller的话有product controller和user controller,然后去接收前端那边提供的一些数据的服务。整个来讲的话,我们的推荐系统还有一个是前端。前端这一块的话主要是通过VUE通过VUE去定义。然后整个项目里面的话主要包含这三个部分。我们这一边的话对整个项目来进行一个系统的演示。首先我们先启动项目的后端,也就是推荐系统的后端,我们可以在本地去把它启动。

OK这时候的话,推荐系统的后端就完成了启动。接下来的话,我们来启动推荐系统的前端。

可以通过NPM round的这样一种zo的这种方式去启动。OK. 这时候的话,其实就启动了推荐系统的前后端的服务。我们可以根据提供的这样的一个地址,然后到浏览器里面进行访问。这时候的话,在浏览器里面我们其实可以看得到,就是它就创建出来了一个简单的电商的一套推荐的系统。这里面的话其实已经有了相应的一些热门商品好的推荐。包括像猜你喜欢里面已经帮你去推荐出来了相应的这样的一些数据。这里面的话可以去点击到商品的详情页面里面去看到。

在这里面的话,除了去启动前后端之外的话,也需要去启动对应的task。这里面的话每一个task的话是在recommend的这样一个function里面去定义。这些task的定义的话包括离线的和实时的。实时的话就需要去启动实时的task,我们可以去把它进行启动,然后接收卡布卡里面实时的rating的数据。同样的对于其他的task也是通过这种方式进行启动。启动完成了之后,就可以去接受相应的一些卡不卡中的数据,然后进行对应的处理。然后在这里面的话,前端其实可以对商品进行实时的评分。实时的评分的结果的话会通过后端去发送到后端,然后再经过卡夫卡去发送到task里面。

Pass的这一块的话,对于实时的一些top n的商品的计算的过程的时候,就会使用到平台的数据。然后进行实时的一些计算,然后产生新的推荐的结果。这里面的话其实就是根据用户这边所反馈出来的评分的结果,然后对商品进行实时的推荐,然后产生实时的推荐的结果。

在商品详情页面的话,我们其实可以看到基于RTMCF。基于RTMCF也推荐了相关性的一些产品,包括像买了手机了之后,他可能需要去看一下U盘。这个的话其实就是基于auto MCF进行推荐的这样一套商品商品的推荐。这个其实是基于离线算出来的一套商品的推荐的流程,基于去计算两套商品之间的相关性,然后完成看过该商品,还看了这样一个推荐,还有一些其他的一些实时的一些热门商品。当我们task启动的时候,它这里面的话都会实时的进行一些相应的一些推荐。这个其实就是整个实时的一个推荐的系统。

所利用flink里面提供的离线和实时的一些处理能力,去计算相应的一些推荐的一些业务。包括像猜你喜欢和热门商品的一些统计,然后完成对商品的推荐。通过本节课的学习,我们通过一个实时推荐的项目,将flink中的一些知识进行整合。希望通过本项目加深你对flink的认识和了解。

通过前面的学习的话,我们基本上将flink里面所涉及到的知识点和内容全部都讲解完毕。包括像data stream API table以及circle API和有状态计算和一些组件站。这节课的话,我们来通过一个具体的推荐场景的项目,来将前面所学习到的内容进行相应的整合。帮助你加深对于flink的了解和认识。

首先我们来看一下基于flink是如何去构建实时推荐的系统。对于推荐系统的应用场景来讲的话,其实是非常普遍。包括像现在比较常见的一些电商的一些平台,包括像在淘宝、京东以及亚马逊。在这些平台上面去购物。通常情况下会有像猜你喜欢,买了又买,看了又看,类似于这样的一些推荐的广告位。这些广告位上面的话,一般都是根据用户的一些实时的一些行为,然后进行相应的一些算法模型的构建,然后再去推荐到相应的一些用户的终端。这时候的话其实就是一套完整的推荐系统的应用场景。

在我们这样的一个项目里面的话,是希望去能够去实现电商推荐的一些功能。包括像猜你喜欢以及热门商品和好评商品,以及实时的热门商品。这里面的话其实是有两种类型,一种是离线的推荐和一种实时的推荐。对于实时的推荐的话,会根据对过去1个小时里面热门的商品进行统计。然后每五分钟的话滑动一次统计的窗口,然后去计算出来相应的实时的热门的商品,然后再去推送给用户的终端。

另外一种的话就是一些离线的一些应用,包括像猜你喜欢,对用户的行为进行推荐。当用户对商品进行评分时,根据用户的历史评分,商品结合item CF这样一套算法计算出推荐的结果,这种的话就是猜你喜欢所应用到的一些算法。另外一种的话就是热门商品。这个的话其实是通过离线去计算历史上面的一些热门的商品,包括它的销售量,根据它的一个销售量去计算出来的一些热门商品。作为热门商品的推荐。还有一些好评的商品,去计算出来一些评分较高的一些商品,然后去将这些商品推送给用户。

在这样的一个项目里面的话,我们希望去实现类似于以下这样一些功能。通过flink去构建对应的这样一些数据流,然后完成实现对于电商推荐的场景的一些数据流的构建。整个推荐系统的架构设计的话,我们可以看得到整个系统里面的话主要分为几个部分。第一个部分的话就是有一个前后端。这个前端的话其实我们就模拟了一下类似于京东或类似于淘宝的这样的一个终端。可以通过这样的一个map UR的话,可以去进行相应的一些产品的检索和一些猜你喜欢的推荐,和热门商品的一些推荐服务。

在推荐模块的话,主要分为离线推荐和实时推荐。离线推荐的话主要是有基于物品推荐和统计分析。基于统计分析这边的话会输出历史热门的商品和优质商品,也就是好评商品。基于物品推荐出来的这样的一个结果的话,最终都会去写入到h base的这样一种存储系统里面。HBase其实我们知道它其实本身是一套支持高并发访问的一套KV存储介质,我们把所有的推荐的结果从离线算出来了之后,去把它放置在HBase里面。然后用户访问的时候通过到h base的系统里面去查询出来某一个用户所关联的一些推荐的结果,然后进行一些展示。这个的话其实就是离线推荐的这样一套数据流所涉及到的一些内容。

对于实时推荐来讲的话,实时推荐的话主要是计算实时top n的商品。根据计算出来的top n商品,然后进行对应的热门商品的推荐。将相应的这样的一个推荐的结果也是实时的去写入到h base里面。HBase里面的话,然后再根据用户这边进行访问的时候,进行对h base里面的热门商品进行访问,然后返回给对应的结果。还有一些基于用户行为的推荐。也同样的是,在h base里您其实将前面所涉及到的一些推荐的结果都进行了一些维护。然后再通过前端的web页,面对这样的一个h base里面的推荐结果进行访问。

对于后台的系统后台的外部系统来讲的话,它所依赖的是mysql的这样一套数据库。它会将商品的信息进行没货以及用户的信息进行维护。也就是说我们在h face里面其实维护的是用户和商品之间推荐的关系。在每一个表里面它会记录哪一个商品会推荐给哪一个用户。在真正需要去查询对应的商品的时候,是从我从mysql业务库里面去获取到商品的一些详细信息,然后再去推送给用户这边进行访问。整体下来的话,这就是整个一套推荐系统的架构设计。

在这里面的话,我们会涉及到推荐的模块,里面会用到flink的离线的处理功能和实时的处理功能。在这一部分的话会将一些推荐的一些数据进行处理,处理完成的结果会写入到h base里面。借助于flink所提供的离线和实时处理的能力,然后完成对于用户的一些推荐。

在这样的一个项目里面的话有一些要求。首先用户会对商品进行实时的评分。这个实时的评分的话会通过卡布卡将实时的评分的结果去发送到实时推荐任务之中。系统执行实时推荐的任务,会将数据存储到h base的rating以及user project这样一张表里面。同样的实时任务里面还会去计算实时的top n以及基于用户行为的推荐,然后再将结果去存储在h base里面去。HBase里面其实存储的就是online hot的这样一个里面。Web端查询h base里面获取相关模块所需要的一些展示的结果。这个的话其实这个项目里面就是对于实时推荐这一块的一个大概的一个流程。

我们可以看得到对于整个推荐的项目里面的话所依赖的一些环境,包括像使用mysql h base、flink、redis以及卡夫卡和zoo IPPO。这个是整个项目里面面所依赖的一些外部的环境。我们在这里面假设这些组件已经全部安装完成,那么包括像mysql或redis以及卡布卡这些组件都已经全部都已经ready在这个基础之上去构建相应的推荐的系统。

整个项目的模块的话一共分为三个部分。推荐的模块的话包含了离线的flink作业和实时的flink作业。后端这一块的话主要是负责商品的推荐的请求,以及用户进信息的维护。这是后端服基于spring put去构建出来的一套后端服务。前端这一块的话就主要提供一些页面的浏览的支持。整个项目的话主要分为这样三个部分。

我们来看一下整个项目的一个组成部分。前面其实已经提到项目里面涵盖了三个部分。第一个是后台的管理服务,以及包括推荐的模块。推荐的模块的话其实就是离线的flink作业和知识的flink作业。所有的作业都是在task里,包括离线的话就会计算item CF以及统计的一些任务。然后在线的话就是有top n product task以及基于用户行为推荐的task。

Top n task里面的话使用的就是data stream APR。Data stream APR里面去对卡布卡里面的rating数据进行处理。处理完成了之后,产生top n的这样统计的结果。按照窗口进行统计,每隔5秒钟进行一次统计,然后产生热门商品,并且将这些热门商品存储在h base里面去。整个来讲的话,其实这样的话其实就实现了对于top n的这一块的商品。

离线这一块的话基本上跟这块的逻辑相似,它会去设涉及到一些算法上面的一些使用,在离线的模块里面的话也会去借助于table APR进行相应的一些处理。APR里面可以通过circle的这种形式去计算出来相应的一些指标。这些指标的话可以通过circle进行定义。所以说这个是在推荐的模块里面可以去看得到。它其实涵盖了相应的一些在function的定义,包括think和soft的一些function。Think里面的话有HBase think,然后function里面的话有对应一些处理的一些function的定义,包括像数据加载和一些top n的一些计算的function。在这里面的话都会去定义相应的一些数据处理的方法。

在后端的这一块的话,主要是基于spring put去构建出来一套后端的服务。它主要有两个controller,每个controller的话有product controller和user controller,然后去接收前端那边提供的一些数据的服务。整个来讲的话,我们的推荐系统还有一个是前端。前端这一块的话主要是通过VUE通过VUE去定义。然后整个项目里面的话主要包含这三个部分。我们这一边的话对整个项目来进行一个系统的演示。首先我们先启动项目的后端,也就是推荐系统的后端,我们可以在本地去把它启动。

OK这时候的话,推荐系统的后端就完成了启动。接下来的话,我们来启动推荐系统的前端。

可以通过NPM round的这样一种zo的这种方式去启动。OK. 这时候的话,其实就启动了推荐系统的前后端的服务。我们可以根据提供的这样的一个地址,然后到浏览器里面进行访问。这时候的话,在浏览器里面我们其实可以看得到,就是它就创建出来了一个简单的电商的一套推荐的系统。这里面的话其实已经有了相应的一些热门商品好的推荐。包括像猜你喜欢里面已经帮你去推荐出来了相应的这样的一些数据。这里面的话可以去点击到商品的详情页面里面去看到。

在这里面的话,除了去启动前后端之外的话,也需要去启动对应的task。这里面的话每一个task的话是在recommend的这样一个function里面去定义。这些task的定义的话包括离线的和实时的。实时的话就需要去启动实时的task,我们可以去把它进行启动,然后接收卡布卡里面实时的rating的数据。同样的对于其他的task也是通过这种方式进行启动。启动完成了之后,就可以去接受相应的一些卡不卡中的数据,然后进行对应的处理。然后在这里面的话,前端其实可以对商品进行实时的评分。实时的评分的结果的话会通过后端去发送到后端,然后再经过卡夫卡去发送到task里面。

Pass的这一块的话,对于实时的一些top n的商品的计算的过程的时候,就会使用到平台的数据。然后进行实时的一些计算,然后产生新的推荐的结果。这里面的话其实就是根据用户这边所反馈出来的评分的结果,然后对商品进行实时的推荐,然后产生实时的推荐的结果。

在商品详情页面的话,我们其实可以看到基于RTMCF。基于RTMCF也推荐了相关性的一些产品,包括像买了手机了之后,他可能需要去看一下U盘。这个的话其实就是基于auto MCF进行推荐的这样一套商品商品的推荐。这个其实是基于离线算出来的一套商品的推荐的流程,基于去计算两套商品之间的相关性,然后完成看过该商品,还看了这样一个推荐,还有一些其他的一些实时的一些热门商品。当我们task启动的时候,它这里面的话都会实时的进行一些相应的一些推荐。这个其实就是整个实时的一个推荐的系统。

所利用flink里面提供的离线和实时的一些处理能力,去计算相应的一些推荐的一些业务。包括像猜你喜欢和热门商品的一些统计,然后完成对商品的推荐。通过本节课的学习,我们通过一个实时推荐的项目,将flink中的一些知识进行整合。希望通过本项目加深你对flink的认识和了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值