Netflix推荐系统(Part two)-系统架构

Netflix在2013年公布了自己推荐系统的架构,本文主要总结和翻译自System Architectures for Personalization and Recommendation,但这并不是一篇完整的翻译文章。

Overview

首先,我们在下图中提供推荐系统的整体系统图。 该体系结构的主要组件包含一个或多个机器学习算法。

计算可以被online,nearline或者offline完成。 online计算可以更好地响应最近的事件和用户交互,但必须实时响应请求。这会限制所采用的算法的计算复杂性以及可以处理的数据量。offline计算对数据量和算法的计算复杂性的限制较少,因为它以批量方式运行且具有宽松的时序要求。个性化架构中的关键问题之一是如何以无缝方式组合和管理在线和离线计算。近线计算是这两种模式之间的中间折衷,我们可以在其中执行类似在线的计算,但不要求它们实时提供。模型训练是另一种计算形式,它使用现有数据生成模型,该模型稍后将在实际计算结果期间使用。该体系结构的另一部分描述了事件和数据分发系统如何处理不同类型的事件和数据。相关问题是如何组合离线,近线和在线制度所需的不同信号和模型。最后,我们还需要弄清楚如何以对用户有意义的方式组合中间推荐结果。本文的其余部分将详细介绍此体系结构的这些组件及其交互。Netflix的整个基础架构都在Amazon Web Services云上运行。

Computation

Online计算可以快速响应事件并使用最新数据。 一个示例是使用当前context为action movie gallery排序。 联机组件受可用性和响应时间服务级别协议(SLA)的约束,该协议指定响应来自客户端应用程序的请求的进程的最大延迟。 这使得在复杂且计算成本高的算法难以在online service中使用。 此外,纯粹的在线计算在某些情况下可能无法满足其SLA,因此考虑快速回退机制(例如恢复到预先计算的结果)很重要。 online计算还意味着所涉及的各种数据源也需要在线提供,这可能需要额外的基础设施。

Offline计算允许使用更复杂的算法和更多的数据一个简单的例子可能是定期汇总数百万电影播放事件的统计数据,以计算baseline的流行度指标。离线系统也有更简单的工程要求。例如,可以轻松满足客户施加的宽松响应时间SLA。可以在生产中部署新算法,而无需在性能调优上投入太多精力。这种灵活性支持敏捷创新。Netflix利用这一点来支持快速实验:如果新的实验算法执行速度较慢,我们可以选择简单地部署更多Amazon EC2实例来实现运行实验所需的吞吐量,而不是花费宝贵的工程时间来优化性能对于可能被证明具有很小商业价值的算法。但是,由于脱机处理没有强大的延迟要求,因此它不会对上下文或新数据的更改做出快速反应。这可能会降低用户体验。离线计算还需要具有用于存储,计算和访问大量预先计算结果的基础结构。

Nearline计算可以看作是前两种模式之间的折衷。Nearline计算是响应于用户事件而完成的。

在任何情况下,online/nearline/offline都可以而且应该结合起来。有很多方法可以将它们组合在一起。我们已经提到了使用离线计算作为后备的想法。另一种选择是使用离线过程预先计算部分结果,并留下算法中成本较低的部分或者上下文敏感的部分用于online计算。 甚至建模部分也可以以混合离线/在线方式完成。传统的监督分类应用必须从标记数据批量训练分类器,并且在线进行预测。但是,矩阵分解等方法更适合混合在线/离线建模:某些因素可以离线预先计算,而其他因素可以实时更新以创建更新鲜的结果。其他无监督方法(例如cluster)还允许cluster center的离线计算和cluster的在线分配。

Offline Jobs

offline jobs的主要内容是数据统计和模型的离线训练,这些内容通常以batch为单位完成。 这两个任务都需要处理数据,这通常是通过运行数据库查询生成的。由于这些查询会运行大量数据,它们适合以分布式方式通过Hive或Pig作业在Hadoop上运行。查询完成后,我们需要一种机制来发布结果数据。我们对该机制有几个要求:首先,它应该在查询结果准备好时通知订阅者。其次,它应该支持不同的存储库(不仅是HDFS,还有S3或Cassandra)。最后,它应该透明地处理错误,允许监视和警报。Netflix使用一个名为Hermes的内部工具,从某种意义上说,它涵盖了与Apache Kafka相同的一些用例,但它不是消息/事件队列系统。

Signals & Models & Event & Data

无论我们是在进行在线还是离线计算,我们都需要考虑算法如何处理三种输入:model,data和signal。 Model通常是先前已离线培训的参数的小文件。 Data是先前处理的信息,已存储在某种数据库中,例如电影元数据或流行度。 我们使用术语“signal”来指代我们输入算法的新信息。 该数据从实时服务获得,并且可以由用户相关信息(例如,成员最近观看的内容)或诸如会话,设备,日期或时间的上下文数据构成。

Netflix尝试区别event和data。他们将事件视为时间敏感信息的小单位,需要以尽可能少的延迟进行处理,以触发后续操作或过程,例如更新nearline结果集。另一方面,他们将数据视为可能需要处理和存储以供以后使用的更密集的信息单元。这里的延迟并不像信息质量和数量那么重要。当然,有些用户事件可以被视为事件和数据,因此被发送到两个流。

Recommendation Results

Netflix将offline和intermediate结果存储在各种存储库中,以便稍后在请求时使用:他们使用的主要数据存储是Cassandra,EVCache和MySQL。每种解决方案都有其优点和缺点。

MySQL允许存储结构化关系数据,这些数据可能是通过通用查询进行的某些未来过程所必需的。但是,这种通用性是以牺牲分布式环境中的scalability为代价的。 Cassandra和EVCache都提供了键值存储的优势。当需要分布式和可扩展的无SQL存储时,Cassandra是一个众所周知的标准解决方案。 Cassandra在某些情况下运行良好,但EVCache更适合密集和持续的写操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

母版页可以动态切换吗?

通过设置“MasterPageFile”属性可以做到,然而这个属性只能在“Page_PreInit”事件之中或之前设置。在Page_PreInit事件或之前,当前页面包含的对象还没有被生成,不能访问,所以,如果想根据当前页面上某个控件的值动态切…

httpclient 多附件上传

多附件上传实例&#xff1a; /*** 多附件上传* param host* param uri* param attachment 附件* param param body参数* return*/public String upload(String host, String uri, Map<String,String> attachment, Map<String, String> param) {logger.info("…

加拿大大学 计算机专业排名2015,加拿大大学计算机专业排名top15

加拿大大学计算机专业排名。加拿大开设计算机专业的很多高校还提供带薪实习机会&#xff0c;吸引了众多国际学子前往留学。在加拿大计算机专业优秀的大学很多。同时&#xff0c;加拿大计算机专业排名在世界上也非常的靠前&#xff0c;在加拿大有很多大学值得广大计算机热爱者选…

如何读懂并写出装逼的函数式代码

今天在微博上看到了 有人分享了下面的这段函数式代码&#xff0c;我把代码贴到下面&#xff0c;不过我对原来的代码略有改动&#xff0c;对于函数式的版本&#xff0c;咋一看&#xff0c;的确令人非常费解&#xff0c;仔细看一下&#xff0c;你可能就晕掉了&#xff0c;似乎完全…

如何打通高薪的黄金通道 成为职场金领

身在职场的你&#xff0c;是否想过有朝一日能获得百万年薪&#xff1f;最近&#xff0c;央视二套绝对挑战特别节目巅峰营销的热播&#xff0c;引发各方人士对东风日产百万年薪招兵营销总监的关注。身价百万的营销总监人人想当&#xff0c;如何才能成为这样的职场金领&#xff0…

iView 实战系列教程(21课时)_2.iView 实战教程之导航、路由、鉴权篇

在c盘创建一个iview-router的项目、然后使用默认的配置跳过添加vue-router的插件编译我们的文件。编译好之后&#xff0c;我们启动App默认的页面就打开了。默认两个路由一个是about界面一个是home我们使用编辑器打开代码&#xff0c;用我们的iview的menu组件替换掉这两个路由在…

计算机专业单元测试卷答案,银保监会考试题库:计算机类模拟试题练习(六)答案...

2020银保监会招聘考试即将开始。根据往年经验&#xff0c;银保监会招聘考试科目包括行测、申论和专业科目共三科&#xff0c;专业科目是考试提分的关键&#xff0c;那么如何才能提升专业科目的做题速度并快速提分呢&#xff1f;别担心&#xff0c;中公金融人小编根据历年的考试…

Ubuntu安装Nginx

在Ubuntu下安装Nginx有以下方法&#xff0c;但是如果想要安装最新版本的就必须下载源码包编译安装。 一、基于APT源安装 sudo apt-get install nginx 安装好的文件位置&#xff1a; /usr/sbin/nginx&#xff1a;主程序 /etc/nginx&#xff1a;存放配置文件 /usr/share/nginx&am…

9.28PMP每日一题

控制质量过程的输出是&#xff1a;A、变更请求B、批准的变更请求C、工作绩效数据D、事业环境因素 答案将于明天和新题一起发布&#xff01;9.27试题答案&#xff1a;C转载于:https://blog.51cto.com/13554215/2287292

将数组绑定到dropdownlist上

<% Page Language"C#" %><% Import Namespace"System.Data" %><Script Language"C#" Runat"Server">public void Page_Load(Object src,EventArgs e){ //首先建立一个数组 ArrayList arrnew ArrayList(); …

HTML标题h,HTML H标题标签

可以将HTML标题或HTML h标签定义为要在网页上显示的标题或副标题。当你将文本放在标题标签……… h1>内时, 它在浏览器中以粗体显示, 并且文本的大小取决于标题的数量。从到标签定义了六个不同的HTML标题, 从最高级别h1(主标题)到最低级别h6(最重要的标题)。h1是最大的标题标…

汤姆大叔的6道javascript编程题题解

1、找出数字数组中最大的元素&#xff08;使用Math.max函数&#xff09; 123var a [1, 2, 3, 6, 5, 4];var ans Math.max.apply(null, a);console.log(ans); // 6这题很巧妙地用了apply&#xff0c;如果不是数组&#xff0c;是很多数字求最大值&#xff0c;我们知道可以这样…

Android 多线程之几个基本问题

Android中的进程和线程 Android中的一个应用程序一般就对应着一个进程&#xff0c;多进程的情况可以参考Android 多进程通信之几个基本问题 Android中更常见的是多线程的情况&#xff0c;一个应用程序中一般都有包括UI线程等多个线程。Android中规定网络访问必须在子线程中进行…

Web下的整体测试

随着Internet的日益普及&#xff0c;现在基于B/S结构的大型应用越来越多&#xff0c;可如何对这些应用进行测试成为日益迫切的问题。有许多测试人员来信问我B/S的测试如何做&#xff0c;由于工作较繁忙&#xff0c;对大家提出的问题也是头痛医头脚痛医脚&#xff0c;没有对WEB的…

用计算机算算术平方根顺序是ON然后是什么,第2课时用计算器求一个正数的算术平方根.ppt...

1.比较下列各组数的大小&#xff1a;(1) 与(2) 与 8依次按键显示&#xff1a;1.732 050 808例3 小丽想用一块面积为400 cm2的正方形纸片&#xff0c;沿着边的方向剪出一块面积为300 cm2的长方形纸片&#xff0c;使它的长宽之比为3:2&#xff0e;她不知能否裁得出来&#xff0c;…

MySQL 命令

版权声明&#xff1a;本文首发 http://asing1elife.com &#xff0c;转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82892834 MySQL 一些常见命令 更多精彩 更多技术博客&#xff0c;请移步 asing1elife’s blog 查看版本号 mysql -V重启/启动/停止 mys…

Bookshelf 2 简单DFS

链接&#xff1a;https://ac.nowcoder.com/acm/contest/993/C来源&#xff1a;牛客网 题目描述 Farmer John recently bought another bookshelf for the cow library, but the shelf is getting filled up quite quickly, and now the only available space is at the top.FJ…

一步一步SharePoint 2007之五:向网站中添加一个子网站

一步一步SharePoint 2007之五&#xff1a;向网站中添加一个子网站摘要感受完看到成果的激动&#xff0c;感受完邻家女孩的漂亮、可爱和端庄&#xff0c;不要停止&#xff0c;来&#xff0c;让我们一起来动手打造心目中的完美女神吧&#xff01;本篇文章将介绍如何向一个网站中添…

微型计算机系统分为哪几个层次,计算机系统分为哪4层?

满意答案al053192014.06.23采纳率&#xff1a;49% 等级&#xff1a;12已帮助&#xff1a;7516人第一层&#xff1a;物理层(PhysicalLayer)&#xff0c;规定通信设备的机械的、电气的、功能的和过程的特性&#xff0c;用以建立、维护和拆除物理链路连接。具体地讲&#xff0c…

ASP.NET Core 基础教程 - ASP.NET Core 基础教程 - 简单教程,简单编程

原文:ASP.NET Core 基础教程 - ASP.NET Core 基础教程 - 简单教程&#xff0c;简单编程 ASP.NET Core 是对 ASP.NET 有重大意义的一次重新设计。本章节我们将介绍 ASP.NET Core 中的一些新的概念和它们是如何帮助我们开发现代化的 Web 应用程序 尽管 ASP.NET Core 是跨平台的&a…