架構師經常參考的Netflix架構,它的全貌是怎樣的?
隨著我們深入研究可擴展架構,我們越來越多的接觸到 Netflix。 他們的技術非常開放。 這篇文章是我們與 Bryan一起完成。所有信息是從互聯網上收集而來。歡迎在留言中補充更多 Netflix 架構的資料。
我們看到的 Netflix 架構在可擴展方面可取之處
Netflix 由 Marc Randolph 和 Reed Hastings 於 1997 年在加州 Scotts Valley 成立,由 30 名員工和 925 名租賃用戶組成,現在是全球領先的互聯網電視網路,在 50 個國家擁有超過 6,900 萬用戶每月享受超過 100 億小時的電視節目和電影。 他們對於技術非常透明,並在網上發布了很多信息。 我們收集並分享了我們認為最可取的一些點:
可擴展文化
NetFlix 有一個關於企業文化的著名演講。 這些概念是關於重新思考人力資源。 他們很多可擴展人力的理念在這個演講中得到了完整的表述。 下面是其中一些示例幻燈片和演示文稿。這給我們了解 Netflix 的企業文化提供了一些重要的背景,我們從中可以了解他們如何擴展他們的軟體棧,以及它為什麼工作。
部署在 Amazon 雲上的架構
Netflix 的基礎架構架設在 Amazon EC2 上,視頻數據存儲在 Amazon S3 上。根據視頻解析度和音頻質量,每個電影被編碼成超過 50 個不同版本存儲在不同的 EC2 上。 亞馬遜上存儲了超過1PB的數據。 這些數據被發送到 CDN 以將內容就近提供給各地的 ISP。
Netflix 在後端使用了一些開源軟體,包括 Java,MySQL,Gluster,Apache Tomcat,Hive,Chukwa,Cassandra 和 Hadoop。
多設備支持
Netflix 上的巨大數量的編解碼器和比特率組合意味著「同一個視頻在傳送到所有流式平台之前,需要進行120次不同規格的編碼」。
雖然 Netflix 使用自適應比特率流技術來調整視頻和音頻質量以匹配客戶的下載速度,但它們還為用戶提供了在其網站上選擇視頻質量的能力。
您可以從任何提供 Netflix 應用程序的互聯網連接設備立即觀看,例如計算機,遊戲機,DVD或藍光播放器,HDTV,機頂盒,家庭影院系統,手機或平板電腦。
他們支持以下編解碼器中的每個標題具有不同的比特率,使它們在設備和連接上工作。
視頻 – VC-1, H.264 (AVC), VC-1, H.263, H.265 (HEVC)
音頻 – WMA, 杜比數字, 杜比數字+, AAC 和 Ogg Vorbis
Netflix 開放連接 CDN
Netflix 開放連接 CDN 適用於擁有超過 10 萬訂閱者的大型 ISP。 專門構建的低功耗高存儲密度設備,在 ISP 的數據中心內緩存 Netflix 內容,以降低互聯網傳輸成本。 此設備運行 FreeBSD 操作系統,nginx 和 Bird Internet 路由守護程序。
NetFlix 在巴黎的開放連接 CDN – 圖片版權 @dtemkin twitter,相關視頻地址見 [2] 。
可擴展及推薦演算法
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的反應式編程庫
請關注高可用架構以了解更多 Netflix 架構後續介紹。


※Redis架構之防雪崩設計:網站不宕機背後的兵法
※容器與持久化存儲:容器的開源分布式存儲方案選型
※模塊化還是微服務-為什麼說大部分團隊微服務化都走入了陷阱
※Protobuf有沒有比JSON快5倍?用代碼來擊破pb性能神話
TAG:高可用架構 |
※不懂Hadoop的CEO不是合格的架構師
※無需數學背景,讀懂ResNet、Inception和Xception三大變革性架構
※Salesforce架構師之旅
※Surface Mini被砍的真正原因驚呆!要ARM架構來背鍋
※架構未來怎麼寫,Facebook、Uber、Airbnb、Yahoo!給你這些答案
※Zen架構進軍伺服器 Naples要來了
※NFS架構下使用realpath
※Chain 產品架構師 Oleg Andreev 提出:「時間鎖安全硬分叉」方案
※Spring初始化ApplicationContext線程託管實際運用架構構思
※英偉達Volta架構:為深度學習而生的Tensor Core
※spring cloud+dotnet core搭建微服務架構
※企業AI架構師佟達:無處不在的Python
※追本溯源,詳解Serverless架構及應用
※蘋果iMac Pro顯卡解析:真真實實的Vega架構
※Nginx 架構初探
※為極致的視頻體驗而設計:facebook新一代存儲平台Bryce Canyon架構
※Imagination發布Furian架構圖形晶元
※智能調配 按需服務——UCloud Serverless架構淺析
※Intel推Coffee Lake架構八代Core i 處理器