架构师经常参考的Netflix架构,它的全貌是怎样的?
http://www.21cto.com/article/1243
隨著我們深入研究可擴展架構(gòu),我們越來越多的接觸到 Netflix。 他們的技術(shù)非常開放。 這篇文章是我們與 Bryan一起完成。所有信息是從互聯(lián)網(wǎng)上收集而來。歡迎在留言中補充更多 Netflix 架構(gòu)的資料。
?
我們看到的 Netflix 架構(gòu)在可擴展方面可取之處
?
?
Netflix 由 Marc Randolph 和 Reed Hastings 于 1997 年在加州 Scotts Valley 成立,由 30 名員工和 925 名租賃用戶組成,現(xiàn)在是全球領(lǐng)先的互聯(lián)網(wǎng)電視網(wǎng)絡(luò),在 50 個國家擁有超過 6,900 萬用戶每月享受超過 100 億小時的電視節(jié)目和電影。 他們對于技術(shù)非常透明,并在網(wǎng)上發(fā)布了很多信息。 我們收集并分享了我們認為最可取的一些點:
?
?
?
可擴展文化
?
NetFlix 有一個關(guān)于企業(yè)文化的著名演講。 這些概念是關(guān)于重新思考人力資源。 他們很多可擴展人力的理念在這個演講中得到了完整的表述。 下面是其中一些示例幻燈片和演示文稿。這給我們了解 Netflix 的企業(yè)文化提供了一些重要的背景,我們從中可以了解他們?nèi)绾螖U展他們的軟件棧,以及它為什么工作。
?
?
?
?
?
部署在 Amazon 云上的架構(gòu)
?
?
Netflix 的基礎(chǔ)架構(gòu)架設(shè)在 Amazon EC2 上,視頻數(shù)據(jù)存儲在 Amazon S3 上。根據(jù)視頻分辨率和音頻質(zhì)量,每個電影被編碼成超過 50 個不同版本存儲在不同的 EC2 上。 亞馬遜上存儲了超過1PB的數(shù)據(jù)。 這些數(shù)據(jù)被發(fā)送到 CDN 以將內(nèi)容就近提供給各地的 ISP。
?
Netflix 在后端使用了一些開源軟件,包括 Java,MySQL,Gluster,Apache Tomcat,Hive,Chukwa,Cassandra 和 Hadoop。
?
?
?
多設(shè)備支持
?
Netflix 上的巨大數(shù)量的編解碼器和比特率組合意味著“同一個視頻在傳送到所有流式平臺之前,需要進行120次不同規(guī)格的編碼”。
?
雖然 Netflix 使用自適應(yīng)比特率流技術(shù)來調(diào)整視頻和音頻質(zhì)量以匹配客戶的下載速度,但它們還為用戶提供了在其網(wǎng)站上選擇視頻質(zhì)量的能力。
?
您可以從任何提供 Netflix 應(yīng)用程序的互聯(lián)網(wǎng)連接設(shè)備立即觀看,例如計算機,游戲機,DVD或藍光播放器,HDTV,機頂盒,家庭影院系統(tǒng),手機或平板電腦。
?
他們支持以下編解碼器中的每個標題具有不同的比特率,使它們在設(shè)備和連接上工作。
1 視頻 – VC-1, H.264 (AVC), VC-1, H.263, H.265 (HEVC)
2 音頻 – WMA, 杜比數(shù)字, 杜比數(shù)字+, AAC 和 Ogg Vorbis
?
Netflix 開放連接 CDN
?
Netflix 開放連接 CDN 適用于擁有超過 10 萬訂閱者的大型 ISP。 專門構(gòu)建的低功耗高存儲密度設(shè)備,在 ISP 的數(shù)據(jù)中心內(nèi)緩存 Netflix 內(nèi)容,以降低互聯(lián)網(wǎng)傳輸成本。 此設(shè)備運行 FreeBSD 操作系統(tǒng),nginx 和 Bird Internet 路由守護程序。
?
可擴展及推薦算法
?
2009 年,Netflix 進行了一場名為 Netflix 獎的競賽。他們開放了一堆匿名數(shù)據(jù),允許團隊嘗試并開發(fā)更好的推薦算法。他們當(dāng)時的系統(tǒng)從獲勝的隊伍的算法中獲得了10.06% 的提升。 Netflix 后來也計劃組織一次新的 Netflix 獎競賽,但最終因為 FTC 的隱私問題未能舉辦。
?
Netflix 推薦系統(tǒng)由許多算法組成。在生產(chǎn)系統(tǒng)中使用的兩個核心算法是受限玻爾茲曼機(Restricted Boltzmann Machines, RBM)和被稱為 SVD++ 的矩陣因子分解的形式。這兩種算法使用線性混合來產(chǎn)生單個較高精度預(yù)估。
?
受限的玻爾茲曼機(RMB)已經(jīng)被修改為在協(xié)同過濾方式工作的神經(jīng)網(wǎng)絡(luò)。每個用戶都有一個代表電影用戶額定輸入節(jié)點的 RBM。
?
SVD++ 是SVD(奇異值分解)的不對稱形式,其利用諸如 RBM 的隱式信息。它是由 Netflix 獎競賽的獲勝團隊開發(fā)的。
?
在他們的工程博客上,Netflix 團隊介紹了如何實現(xiàn)一個個性化主頁 [3]
?
開源項目
?
團隊的開源項目在?https://netflix.github.io/。
?
Netflix 有一個優(yōu)秀的工程博客,他們也有一篇介紹 Netflix 開源演變的博客。[4]
?
Netflix 全棧架構(gòu)一覽
?
大數(shù)據(jù)
Genie - 對我們的各種數(shù)據(jù)處理框架(特別是 Hadoop)的強大抽象(基于REST)。
Inviso - 詳細了解我們的Hadoop作業(yè)和集群的性能。
Lipstick - 以清晰,直觀的方式顯示Pig job的工作流程。
Aegisthus - 允許從 Cassandra 大量獲取數(shù)據(jù)用于下游分析處理。
?
構(gòu)建和交付工具
Nebula- Netflix 內(nèi)部構(gòu)建基礎(chǔ)設(shè)施。
Aminator - 用于創(chuàng)建EBS AMI的工具。
Asgard - 用于 Amazon Web Services(AWS)中應(yīng)用程序部署和云管理的 Web 界面。
?
通用運行時服務(wù)和庫
Eureka - 用于 Netflix 云平臺的服務(wù)發(fā)現(xiàn)。
Archaius - 分布式配置管理。
Ribbon- 彈性和智能化的進程間和服務(wù)間通信。
Hystrix - 提供跨服務(wù)調(diào)用的可靠性,隔離運行時延遲和容錯。
Karyon 和 Governator - JVM容器服務(wù)。
Prana sidecar - Prana 在實例中提供代理功能。
Zuul - 在部署的邊緣節(jié)點提供可進行腳本化的代理。
Fenzo - 為云本地框架提供高級調(diào)度和資源管理。
?
數(shù)據(jù)持久化
EVCache 和 Dynomite - 用于大規(guī)模使用 Memcached 和 Redis。
Astyanax 和 Dyno - 以更好地使用云端數(shù)據(jù)存儲的客戶端庫。
?
分析、可靠性和性能相關(guān)
Atlas - 時間序列自動測量平臺
Edda - 跟蹤云端變化的服務(wù)
Spectator - 將應(yīng)用程序代碼與 Atlas 輕松集成
Vector - 以最小的開銷監(jiān)控高精度主機性能指標。
Ice - 監(jiān)控運營成本和云利用趨勢。
Simian Army - 測試 Netflix 實例的隨機故障。
?
安全
Security Monkey - 幫助監(jiān)控和保護基于AWS的大型環(huán)境。
Scumblr - 利用全網(wǎng)針對性搜索定位特定安全問題。
MSL - 一種可擴展且靈活的安全消息傳遞協(xié)議,解決了許多安全通信用例和需求。
Falcor - 通過虛擬 JSON 圖將遠程數(shù)據(jù)源表示為單域模型。
Restify - 專門用于Node.js Web API服務(wù)的REST框架
RxJS - JavaScript的反應(yīng)式編程庫
?
?
相關(guān)鏈接:
原文: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
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/articles/9626478.html
總結(jié)
以上是生活随笔為你收集整理的架构师经常参考的Netflix架构,它的全貌是怎样的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 订单系统:从0到1设计思路
- 下一篇: 八种架构设计模式及其优缺点概述