架構師經常參考的Netflix架構,它的全貌是怎樣的?「轉」

隨著我們深入研究可擴展架構,我們越來越多的接觸到 Netflix。 他們的技術非常開放。 這篇文章是我們與 Bryan一起完成。所有信息是從互聯網上收集而來。歡迎在留言中補充更多 Netflix 架構的資料。



架構師經常參考的Netflix架構,它的全貌是怎樣的?「轉」

我們看到的 Netflix 架構在可擴展方面可取之處 Netflix 由 Marc Randolph 和 Reed Hastings 於 1997 年在加州 Scotts Valley 成立,由 30 名員工和 925 名租賃用戶組成,現在是全球領先的互聯網電視網絡,在 50 個國家擁有超過 6,900 萬用戶每月享受超過 100 億小時的電視節目和電影。 他們對於技術非常透明,並在網上發佈了很多信息。 我們收集並分享了我們認為最可取的一些點:

架構師經常參考的Netflix架構,它的全貌是怎樣的?「轉」

可擴展文化 NetFlix 有一個關於企業文化的著名演講。 這些概念是關於重新思考人力資源。 他們很多可擴展人力的理念在這個演講中得到了完整的表述。 下面是其中一些示例幻燈片和演示文稿。這給我們瞭解 Netflix 的企業文化提供了一些重要的背景,我們從中可以瞭解他們如何擴展他們的軟件棧,以及它為什麼工作。

架構師經常參考的Netflix架構,它的全貌是怎樣的?「轉」

架構師經常參考的Netflix架構,它的全貌是怎樣的?「轉」

部署在 Amazon 雲上的架構 Netflix 的基礎架構架設在 Amazon EC2 上,視頻數據存儲在 Amazon S3 上。根據視頻分辨率和音頻質量,每個電影被編碼成超過 50 個不同版本存儲在不同的 EC2 上。 亞馬遜上存儲了超過1PB的數據。 這些數據被髮送到 CDN 以將內容就近提供給各地的 ISP。 Netflix 在後端使用了一些開源軟件,包括 Java,MySQL,Gluster,Apache Tomcat,Hive,Chukwa,Cassandra 和 Hadoop。

架構師經常參考的Netflix架構,它的全貌是怎樣的?「轉」

多設備支持

Netflix 上的巨大數量的編解碼器和比特率組合意味著“同一個視頻在傳送到所有流式平臺之前,需要進行120次不同規格的編碼”。

雖然 Netflix 使用自適應比特率流技術來調整視頻和音頻質量以匹配客戶的下載速度,但它們還為用戶提供了在其網站上選擇視頻質量的能力。

您可以從任何提供 Netflix 應用程序的互聯網連接設備立即觀看,例如計算機,遊戲機,DVD或藍光播放器,HDTV,機頂盒,家庭影院系統,手機或平板電腦。

他們支持以下編解碼器中的每個標題具有不同的比特率,使它們在設備和連接上工作。

1 視頻 – VC-1, H.264 (AVC), VC-1, H.263, H.265 (HEVC)

2 音頻 – WMA, 杜比數字, 杜比數字+, AAC 和 Ogg Vorbis

Netflix 開放連接 CDN

Netflix 開放連接 CDN 適用於擁有超過 10 萬訂閱者的大型 ISP。 專門構建的低功耗高存儲密度設備,在 ISP 的數據中心內緩存 Netflix 內容,以降低互聯網傳輸成本。 此設備運行 FreeBSD 操作系統,nginx 和 Bird Internet 路由守護程序。

可擴展及推薦算法

2009 年,Netflix 進行了一場名為 Netflix 獎的競賽。他們開放了一堆匿名數據,允許團隊嘗試並開發更好的推薦算法。他們當時的系統從獲勝的隊伍的算法中獲得了10.06% 的提升。 Netflix 後來也計劃組織一次新的 Netflix 獎競賽,但最終因為 FTC 的隱私問題未能舉辦。

Netflix 推薦系統由許多算法組成。在生產系統中使用的兩個核心算法是受限玻爾茲曼機(Restricted Boltzmann Machines, RBM)和被稱為 SVD++ 的矩陣因子分解的形式。這兩種算法使用線性混合來產生單個較高精度預估。

受限的玻爾茲曼機(RMB)已經被修改為在協同過濾方式工作的神經網絡。每個用戶都有一個代表電影用戶額定輸入節點的 RBM。

SVD++ 是SVD(奇異值分解)的不對稱形式,其利用諸如 RBM 的隱式信息。它是由 Netflix 獎競賽的獲勝團隊開發的。

在他們的工程博客上,Netflix 團隊介紹瞭如何實現一個個性化主頁 [3]

開源項目

團隊的開源項目在 https://netflix.github.io/。

Netflix 有一個優秀的工程博客,他們也有一篇介紹 Netflix 開源演變的博客。[4]

Netflix 全棧架構一覽

大數據

Genie - 對我們的各種數據處理框架(特別是 Hadoop)的強大抽象(基於REST)。

Inviso - 詳細瞭解我們的Hadoop作業和集群的性能。

Lipstick - 以清晰,直觀的方式顯示Pig job的工作流程。

Aegisthus - 允許從 Cassandra 大量獲取數據用於下游分析處理。

構建和交付工具

Nebula- Netflix 內部構建基礎設施。

Aminator - 用於創建EBS AMI的工具。

Asgard - 用於 Amazon Web Services(AWS)中應用程序部署和雲管理的 Web 界面。

通用運行時服務和庫

Eureka - 用於 Netflix 雲平臺的服務發現。

Archaius - 分佈式配置管理。

Ribbon- 彈性和智能化的進程間和服務間通信。

Hystrix - 提供跨服務調用的可靠性,隔離運行時延遲和容錯。

Karyon 和 Governator - JVM容器服務。

Prana sidecar - Prana 在實例中提供代理功能。

Zuul - 在部署的邊緣節點提供可進行腳本化的代理。

Fenzo - 為雲本地框架提供高級調度和資源管理。

數據持久化

EVCache 和 Dynomite - 用於大規模使用 Memcached 和 Redis。

Astyanax 和 Dyno - 以更好地使用雲端數據存儲的客戶端庫。

分析、可靠性和性能相關

Atlas - 時間序列自動測量平臺

Edda - 跟蹤雲端變化的服務

Spectator - 將應用程序代碼與 Atlas 輕鬆集成

Vector - 以最小的開銷監控高精度主機性能指標。

Ice - 監控運營成本和雲利用趨勢。

Simian Army - 測試 Netflix 實例的隨機故障。

安全

Security Monkey - 幫助監控和保護基於AWS的大型環境。

Scumblr - 利用全網針對性搜索定位特定安全問題。

MSL - 一種可擴展且靈活的安全消息傳遞協議,解決了許多安全通信用例和需求。

Falcor - 通過虛擬 JSON 圖將遠程數據源表示為單域模型。

Restify - 專門用於Node.js Web API服務的REST框架

RxJS - JavaScript的反應式編程庫


相關鏈接:

原文:http://www.scalescale.com/the- ... ling/

https://www.youtube.com/watch?v=mBCXdaukvcc

http://techblog.netflix.com/2015/04/learning-personalized-homepage.html

http://techblog.netflix.com/2015/10/evolution-of-open-source-at-netflix.html

原文地址:http://www.21cto.com/article/1243



分享到:


相關文章: