小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

從Netflix的推薦系統(tǒng)架構中我們可以學習到什么?

 xujin3 2018-06-17

你是否常常被亂花漸欲迷人眼的推薦算法繞得如墜云中,覺得好像算法就是推薦系統(tǒng)的全部,哪怕就算不是全部,也肯定至少是個嫡生的長子。

然而,實際上工程實現(xiàn)才是推薦系統(tǒng)的骨架,如果沒有很好的軟件實現(xiàn),算法不能落地產(chǎn)生效果,產(chǎn)品不能順暢地服務用戶,不能順利地收集到用戶的反饋,更不能讓推薦系統(tǒng)往更好的方向進化。

一個好的推薦系統(tǒng)不僅僅是在線下模型評測指標多么好,也不僅僅是在某個時刻像是靈光乍現(xiàn)一樣擊中了用戶某個口味,而是隨著用戶的不斷使用,產(chǎn)品和用戶一起變好,產(chǎn)品背后的人得到進步,用戶也越來越喜歡產(chǎn)品。

雖然影響是否用戶產(chǎn)品的因素有很多很多,但是能否流暢地給用戶提供服務是一個最基本的標準。

更多推薦系統(tǒng)內(nèi)容,可訂閱極客時間熱門專欄 --- 資深算法專家刑無刀的《推薦系統(tǒng) 36 式》專欄,限時優(yōu)惠價¥58。他已經(jīng)系統(tǒng)深入地為你整理了推薦系統(tǒng)的相關知識和常識,部分文章還針對架構方面為你提供案例分析與解決方案,幫你解決系統(tǒng)起步階段 80% 的問題。

一個好的推薦系統(tǒng)架構應該具有這些特質:

  • 實時響應請求;

  • 及時、準確、全面記錄用戶反饋;

  • 可以優(yōu)雅降級;

  • 快速實驗多種策略。

本文中我要介紹一種符合經(jīng)典推薦系統(tǒng)的架構,它就是著名的流媒體 Netflix 的推薦系統(tǒng)架構。

通過這篇文章,我會為你介紹,實現(xiàn)一個簡化版的推薦系統(tǒng)架構應該至少包含哪些元素,同時,我會帶你一起總結出,一個經(jīng)典推薦系統(tǒng)架構應該有的樣子。

經(jīng)典架構

好了,廢話少說,我先上圖。下面這張圖就是 Netflix 的推薦系統(tǒng)架構圖。

我先整體看一下這個架構,一共分成三層:在線、近線、離線。

你是不是也發(fā)現(xiàn)似乎有一個不太熟識的詞出現(xiàn):近線。對,這個近線是通常不太提的一個概念,或者通常就把它歸入了在線的范疇。

實際上,可以這樣定義這三個層級:

  1. 離線:不用實時數(shù)據(jù),不提供實時服務;

  2. 近線:使用實時數(shù)據(jù),不保證實時服務;

  3. 在線:使用實時數(shù)據(jù),要保證實時服務。

我和大家一一詳細介紹每個部分。

1. 在線層

在線層的觸發(fā)時機是當用戶發(fā)出請求,也就是用戶進入一個推薦場景,推薦位等著展示推薦結果時,這個時候需要承擔責任就是在線層。在線層就是實時響應用戶請求。簡單說,在線層的特點就是“使用實時數(shù)據(jù),要保證實時服務”。

在線層的優(yōu)勢有:

  • 直接首次接觸到大多數(shù)最新數(shù)據(jù);

  • 對用戶請求時的上下文了如指掌;

  • 只需計算必須的信息,不需要考慮所有的信息。

在線層也有嚴格的制約:

  • 嚴格的服務響應時間,不能超時,或者讓用戶等太久;

  • 服務要保證可用性,穩(wěn)定性;

  • 傳輸?shù)臄?shù)據(jù)有限。

2. 離線層

講完在線層,再來看看離線層。離線層就是躲在推薦系統(tǒng)的大后方,批量、周期性地執(zhí)行一些計算任務。其特點是“不用實時數(shù)據(jù),不提供實時服務”。

離線層的示意圖如下:


離線階段主要面對的數(shù)據(jù)源就是 Hadoop,實質上是 HDFS。收集到的所有日志都存在這里面,是一個全量的數(shù)據(jù)中心。

通過 Pig 或者 Hive 等工具,從全量日志中按照算法要求抽取出不同的數(shù)據(jù),再加上其他數(shù)據(jù)變成了不同算法所需的數(shù)據(jù)源。

在 Netflix 內(nèi)部,承擔這個管理任務的工具叫做 Hermes,類似 Kafka,但是又有不同的內(nèi)部工具。

離線階段有以下這么幾個好處:

  • 可以處理最大的數(shù)據(jù)量;

  • 可進行批量處理和計算;

  • 不用有響應時間等要求。

當然壞處也是明顯的:

  • 無法及時響應前端需求;

  • 面對的數(shù)據(jù)較靜態(tài),無法及時反應用戶的興趣變化。

大多數(shù)推薦算法,實際上都是在離線階段產(chǎn)生推薦結果的。離線階段的推薦計算和模型訓練,如果要用分布式框架,通??梢赃x擇 Spark 等。

3. 近線層

最后,我來講講近線層。近線層的特點是“使用實時數(shù)據(jù),不保證實時服務”,這實在是一個很不講道理的計算層,因為把它的特點翻譯得直白點就是:喂給我最新鮮的牧草,但是我不保證能馬上給你擠奶。

雖然這看上去蠻不講理,但實際上這是一個非常重要的一層,它結合了離線層和在線層的好處,摒棄了兩者的不足。

近線層,也叫做準實時層,所謂“準實時”,就是接近實時,但不是真的實時。

從前面的架構圖中也可以看出,這一層的數(shù)據(jù)來源是實時的行為事件隊列,但是計算的結果并不是沿著輸入數(shù)據(jù)的方向原路返回,而是進入了在線數(shù)據(jù)庫中,得到用戶真正發(fā)起請求時,再提供服務。

簡化架構

Netflix 是為全球多個國家同時提供在線服務的,因此推薦系統(tǒng)的架構略微復雜。倘若你現(xiàn)在剛剛接手一個新產(chǎn)品,要從 0 開始搭建一個推薦系統(tǒng),那么可以以 Netflix 的架構作為藍本,做一定的簡化。

關鍵簡化有兩點:

  • 完全舍棄掉近線層;

  • 避免使用分布式系統(tǒng)。

其中第二點,在一個新產(chǎn)品的場景下, 當數(shù)據(jù)量還沒有那么大時,使用分布式存儲或者計算框架,非常不劃算。

如果性能不足,請升級單機配置。根據(jù)經(jīng)驗,一個幾千萬用戶,幾十萬到百萬的物品的協(xié)同過濾或者矩陣分解,如果充分發(fā)揮單機的性能,綜合效率會遠遠優(yōu)于在 Spark 上運行。

另外在一個推薦系統(tǒng)剛從 0 開始的階段,離線階段的算法也沒有那么多,很多情況甚至都只有協(xié)同過濾結果,這時候線上融合模型也不必那么復雜,一個簡單的加權融合就可以了,因此在線層也不必復雜。

總結

本文我以 Netflix 架構為原型,向你介紹了一個經(jīng)典的推薦系統(tǒng)架構長什么樣子。關于這個架構你只需要記住一點:它有三層,三層分別是離線,近線,在線。

我用如下的表格將這三層綜合對比,并且簡單舉例,我們看看每一層分別放哪些任務。

以上就是對這個架構的宏觀總結對比。如前所說,其實架構都是進化出來的,你千萬不必在一開始就追求完美的架構,滿足最低要求就好。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多