溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何理解Netflix的信息處理架構(gòu)

發(fā)布時間:2021-09-26 14:30:23 來源:億速云 閱讀:140 作者:iii 欄目:建站服務(wù)器

本篇內(nèi)容介紹了“如何理解Netflix的信息處理架構(gòu)”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

Netflix是一家在線影片租賃提供商,該公司連續(xù)五次被評為顧客最滿意的網(wǎng)站,在過去的7年中,Netflix流媒體服務(wù)從偶爾有數(shù)千用戶在線觀看發(fā)展到了數(shù)百萬用戶平均每月觀看超過20億個小時的規(guī)模。Netflix之所以能夠如此成功,離不開對用戶行為數(shù)據(jù)的收集與分析,那么Netflix會收集哪些數(shù)據(jù),這些數(shù)據(jù)會用來做什么,其處理架構(gòu)又是什么呢?

事實(shí)上,當(dāng)用戶開始在Netflix的網(wǎng)站上觀看電影或者電視節(jié)目的時候,Netflix的數(shù)據(jù)系統(tǒng)會創(chuàng)建一個“觀看會話(view)”,描述該會話的所有事件信息都會被收集起來。該觀看會話數(shù)據(jù)架構(gòu)能夠應(yīng)對從用戶體驗(yàn)到數(shù)據(jù)分析的諸多場景,其中最主要的場景有三個:

用戶看了哪些視頻?系統(tǒng)需要知道每一個用戶的所有觀看歷史,以便于為用戶推薦相關(guān)的視頻內(nèi)容,同時在頁面上的“最近觀看”一欄中顯示觀看歷史。用戶所看的內(nèi)容對于用戶興趣的衡量,產(chǎn)品和內(nèi)容的決定非常重要。
用戶從哪里離開了視頻?對于每一個電影或者電視節(jié)目,Netflix會記錄每一個用戶都看到了哪里,從哪個時間點(diǎn)離開的。這使得Netflix的用戶能夠在同一個或者另一個設(shè)備上繼續(xù)觀看視頻。
當(dāng)前帳戶現(xiàn)在還在觀看哪些視頻?家庭成員間的帳戶共享使得任何人可以在任何時候觀看自己喜歡的視頻,但是這也意味著當(dāng)帳戶同時在線數(shù)超限的時候,必須要有人放棄觀看。針對這種場景,Netflix的觀看會話數(shù)據(jù)系統(tǒng)會收集每一個會話的周期性信號以便于決定某個成員是否還在觀看相關(guān)視頻。
這些場景的實(shí)現(xiàn)離不開強(qiáng)大而穩(wěn)定的數(shù)據(jù)處理系統(tǒng),Netflix目前的系統(tǒng)架構(gòu)由早期的單數(shù)據(jù)庫應(yīng)用程序演變而來,當(dāng)時的主要需求是能夠低延遲地為用戶提供視頻服務(wù),同時還能夠處理來自于數(shù)百萬Netflix流設(shè)備的快速增長的數(shù)據(jù)集。在過去3年多的時間里,Netflix一直在不斷地改進(jìn)該架構(gòu),現(xiàn)在這套系統(tǒng)每天能夠處理千億左右的事件。

當(dāng)前的架構(gòu)圖如下:
如何理解Netflix的信息處理架構(gòu)

整個架構(gòu)最主要的接口是觀看會話服務(wù),它分為有狀態(tài)層和無狀態(tài)層兩部分。有狀態(tài)層在內(nèi)存中存有所有活動視圖的最新數(shù)據(jù)。通過對用戶帳戶ID進(jìn)行mod N的模運(yùn)算,數(shù)據(jù)被簡單地劃分為N個有狀態(tài)的節(jié)點(diǎn)。當(dāng)有狀態(tài)的節(jié)點(diǎn)上線的時候,系統(tǒng)會通過一個位置選擇流程決定哪部分?jǐn)?shù)據(jù)屬于它們。所有的持久化數(shù)據(jù)都存儲在Cassandra中,在Cassandra之上有一個Memcached用來保證低延遲的讀取路徑,但是采用這種方式會話數(shù)據(jù)有可能會過時,同時如果一個有狀態(tài)的節(jié)點(diǎn)出現(xiàn)了錯誤,那么1/n的瀏覽數(shù)據(jù)將不能讀寫。無狀態(tài)層的引入正是為了解決這一問題,它提升了系統(tǒng)的可用性,當(dāng)有狀態(tài)的節(jié)點(diǎn)無法訪問的時候,該層會將過時的數(shù)據(jù)反饋給用戶。

但是即使是做了諸多改進(jìn),以上架構(gòu)依然存在一些缺陷:

雖然有狀態(tài)層使用一個簡單的、服從熱點(diǎn)分布的分片技術(shù),但是Cassandra層并不服從這些熱點(diǎn);同時,如果將其從一個AWS Region移動到多個AWS Region上運(yùn)行,那么必須定制一種機(jī)制來實(shí)現(xiàn)分布在不同Region上的狀態(tài)層之間的狀態(tài)通信,極大地增加了系統(tǒng)的復(fù)雜性。
對于觀看會話服務(wù),它封裝了會話數(shù)據(jù)的收集、處理和提供功能,隨著系統(tǒng)的演變,功能的增多,該服務(wù)的責(zé)任也越來越多,增加了運(yùn)維的難度。
雖然Memcached提供了非常好的吞吐量和延遲特性,但是使用一種能夠?yàn)橐坏葦?shù)據(jù)類型和操作(例如append)提供原生支持的技術(shù)能夠更好地滿足相關(guān)需求。
為了擴(kuò)展系統(tǒng)滿足下一個數(shù)量級的需要,Netflix正在重新思考自己的基礎(chǔ)架構(gòu),新系統(tǒng)在設(shè)計(jì)時考慮的主要設(shè)計(jì)原則包括:

可用性比一致性更重要。
微服務(wù)。對于有狀態(tài)架構(gòu)中柔和在一起的組件,根據(jù)它們的主要目的分離成單獨(dú)的服務(wù)——或收集、處理或提供數(shù)據(jù)。將狀態(tài)管理功能托管到持久化層,讓應(yīng)用程序?qū)訜o狀態(tài),同時組件之間通過事件隊(duì)列解耦。
混合持久化。使用多種持久化技術(shù),利用每一種方案的優(yōu)勢。使用Cassandra實(shí)現(xiàn)高容量、低延遲的寫。使用Redis實(shí)現(xiàn)高容量、低延遲的讀。
遵循以上原則的新架構(gòu)實(shí)現(xiàn)如下:
如何理解Netflix的信息處理架構(gòu)

當(dāng)然,這個架構(gòu)圖也僅僅是Netflix目前的設(shè)計(jì)圖,至于實(shí)現(xiàn)到何種程度了,我們還未可知。Netflix表示對關(guān)鍵系統(tǒng)進(jìn)行重新架構(gòu)以使其能夠擴(kuò)展到下一個數(shù)量級是一項(xiàng)非常困難的工作,需要長時間的開發(fā)、測試和驗(yàn)證,同時遷移也不是那么容易。但是以這些架構(gòu)原則為指導(dǎo),Netflix相信他們正在構(gòu)建的下一代系統(tǒng)能夠滿足自己大規(guī)模、快速增長的需要。

“如何理解Netflix的信息處理架構(gòu)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI