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