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.pswp.cn/news/277206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277206.shtml
英文地址,請注明出處:http://en.pswp.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…