专栏名称: 互联网后端架构
主要介绍Java后端架构。其中也会掺杂一些前端、GO、Python、Linux,目标:全栈工程师!---好像很牛叉的样子 ^-^
目录
相关文章推荐
51好读  ›  专栏  ›  互联网后端架构

大数据推荐系统实时架构和离线架构

互联网后端架构  · 公众号  · 架构  · 2019-09-03 08:54

正文

1、概述

推荐系统是大数据中最常见和最容易理解的应用之一,比如说淘宝的猜你喜欢和京东等网站的用户提供个性化的内容。 但是不仅仅只有电商会用推荐引擎为用户提供额外的商品,推荐系统也可以被用在其他行业,以及具有不同的应用中使用,如网易云音乐的每日歌曲推荐、活动、产品到约会对象。

2、大数据推荐系统架构

一般中型的网站(10W的PV以上),每天会产生1G以上Web日志文件。 大型或超大型的网站,可能每小时就会产生10G的数据量。

具体来说,比如某电子商务网站,在线团购业务。 每日PV数100w,独立IP数5w。 用户通常在工作日上午10:00-12:00和下午15:00-18:00访问量最大。 日间主要是通过PC端浏览器访问,休息日及夜间通过移动设备访问较多。 网站搜索浏量占整个网站的80%,PC用户不足1%的用户会消费,移动用户有5%会消费。

对于日志的这种规模的数据,用HADOOP进行日志分析,是最适合不过的了。 通过日志分析,增加销售量,出售更多不同的商品,提升用户满意度,更好的理解用户想要什么。 下面是推荐系统离线模式和实时模式的推荐架构。 两种架构经常是相互辅助使用。

2.1 离线模式过程

(1)数据来源

在页面预埋一段js程序,为页面上想要监听的标签绑定事件,只要用户点击或移动到标签,即可触发ajax请求到后台servlet程序,用log4j记录下事件信息,从而在web服务器(nginx、tomcat等)上形成不断增长的日志文件。 在移动设备上,通过访问接口,后端记录访问日志。

(2)数据采集

定制开发采集程序,或使用开源框架FLUME,flume是分布式的日志收集系统,它将各个服务器中的数据收集起来并送到指定的地方去,比如说送到图中的HDFS,简单来说flume就是收集日志的。


flume之所以这么神奇,是源于它自身的一个设计,这个设计就是agent,agent本身是一个java进程,运行在日志收集节点—所谓日志收集节点就是服务器节点。

agent里面包含3个核心的组件: source—->channel—–>sink,类似生产者、仓库、消费者的架构。

source: source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。

channel: source组件把数据收集来以后,临时存放在channel中,即channel组件在agent中是专门用来存放临时数据的——对采集到的数据进行简单的缓存,可以存放在memory、jdbc、file等等。







请到「今天看啥」查看全文