講述一個(gè)嚴(yán)重依賴云的互聯(lián)網(wǎng)公司背后的技術(shù)
摘要:一個(gè)現(xiàn)代化成熟的嚴(yán)重依賴于 Cloud 的互聯(lián)網(wǎng)公司背后的技術(shù)是怎樣的?例如,Netflix的電影是存在S3上的,每部電影50多個(gè)版本(不同畫質(zhì)音質(zhì))然后分發(fā)到各地的CDN。
“在研究和深入挖掘發(fā)展之道的過程中,我們屢屢遇到Netflix。他們的故事是很公開的。在Bryan的幫助之下,這篇文章是我們的第一次合作發(fā)布。我們收集了來自互聯(lián)網(wǎng)的信息。”
–Chris / ScaleScale / MaxCDN
看看我們認(rèn)為的Netflix的有趣之處
Netflix公司于1997年由Marc Randolph和Reed Hastings在加利福尼亞州的Scotts Valley成立,擁有30名員工以及925 按時(shí)付費(fèi)人員。Netflix是現(xiàn)在全球領(lǐng)先的互聯(lián)網(wǎng)電視網(wǎng)絡(luò)公司,擁有來自50個(gè)國家6千9百萬以上的訂閱用戶,每月電視節(jié)目及電影觀看時(shí)長超過一百億小時(shí)。他們對(duì)外非常透明,并在網(wǎng)上發(fā)布了很多信息。我們收集了這些信息并將我們認(rèn)為最有趣的內(nèi)容分享如下:
發(fā)展文化
Netflix有一個(gè)關(guān)于文化的著名演講,其概念是關(guān)于人力資源的重新思考。他們關(guān)于發(fā)展員工的很多策略都緊扣這個(gè)演講所提出的原則。這是他們的文化的重要背景,讓我們更好地了解他們的軟件技術(shù)規(guī)劃及成功的原因。
依賴眾多亞馬遜產(chǎn)品
Netflix的基礎(chǔ)設(shè)施建于亞馬遜EC2,而來源于電影制片廠的數(shù)字電影母版存儲(chǔ)在亞馬遜S3。所有影片都由云機(jī)器根據(jù)其視頻分辨率和音頻質(zhì)量被編碼為50多個(gè)不同的版本。存儲(chǔ)在亞馬遜的數(shù)據(jù)超過了1PB。這些數(shù)據(jù)被發(fā)送到內(nèi)容分發(fā)網(wǎng)絡(luò)以推送內(nèi)容到本地ISP(互聯(lián)網(wǎng)服務(wù)供應(yīng)商)。
Netflix在后端使用了大量的開源軟件,包括Java,MySQL,Gluster,Apache Tomcat,Hive,Chukwa,Cassandra和Hadoop。
支持許多設(shè)備
在Netflix的大量編解碼器和比特率的組合意味著“一部作品被編碼120次之后才可以交付給任何流媒體平臺(tái)”。
盡管Netflix采用自適應(yīng)比特率流媒體技術(shù)來調(diào)整視頻和音頻的質(zhì)量以符合客戶的下載速度,同時(shí)也能供用戶選擇在其網(wǎng)站上的視頻質(zhì)量。
你可以通過帶有Netflix應(yīng)用程序的所有聯(lián)網(wǎng)設(shè)備進(jìn)行觀看,如電腦、游戲機(jī)、DVD或藍(lán)光播放器、高清電視、機(jī)頂盒、家庭影院系統(tǒng)、手機(jī)或平板電腦。
他們支持以下的編解碼器不同的比特率,根據(jù)設(shè)備和網(wǎng)絡(luò)播放作品:
- 視頻–VC-1, H.264 (AVC), VC-1, H.263, H.265 (HEVC)
- 音頻– WMA, Dolby Digital, Dolby Digital Plus, AAC and OggVorbis
#p#
Netflix開放連接CDN
Netflix的開放連接CDN提供給擁有超過10萬用戶的較大型ISP。他們用一個(gè)特制的低功率高密度存儲(chǔ)的設(shè)備緩存在ISP數(shù)據(jù)中心的Netflix內(nèi)容,以降低網(wǎng)絡(luò)傳輸成本。這個(gè)設(shè)備運(yùn)行FreeBSD操作系統(tǒng),Nginx和Bird Internet路由守護(hù)程序。
調(diào)壓算法
2009年Netflix舉辦了一場Netflix大獎(jiǎng)賽。他們公開一批匿名數(shù)據(jù),允許參賽團(tuán)隊(duì)使用以得出更好的算法。他們從獲勝的團(tuán)隊(duì)中得到了現(xiàn)有算法10.06%的提升。Netflix本想再舉行一場Netflix大獎(jiǎng)賽,但最終由于FTC(聯(lián)邦貿(mào)易委員會(huì))對(duì)隱私問題的考慮而取消。
Netflix的推薦系統(tǒng)包含許多算法。用于生產(chǎn)系統(tǒng)的兩個(gè)核心算法是有限玻爾茲曼機(jī)(RBM,Restricted Boltzmann Machines)和一種稱為SVD+ +的矩陣分解法(Matrix Factorization)。這兩種算法用線性混合方式來結(jié)合產(chǎn)生一個(gè)單一的更高精度的估算值。
RBM是被修改為可以進(jìn)行協(xié)同過濾的神經(jīng)網(wǎng)絡(luò)。每個(gè)用戶都有一個(gè)RBM,其輸入節(jié)點(diǎn)都代表用戶評(píng)分過的電影。
SVD + +是一種非對(duì)稱形式的SVD(奇異值分解),使用用像RBM一樣的隱含信息。它是Netflix大賽獎(jiǎng)的獲獎(jiǎng)團(tuán)隊(duì)開發(fā)的。
Netflix團(tuán)隊(duì)在他們的技術(shù)博客上的報(bào)道:Learning a Personalized Homepage
開源項(xiàng)目
https://netflix.github.io/。Netflix有一個(gè)優(yōu)秀的工程博客,他們最近發(fā)布了一個(gè)帖子叫做The Evolution of Open Source at Netflix。
大數(shù)據(jù)
- Genie:一個(gè)強(qiáng)大的,基于REST的抽象體,應(yīng)用于我們的各種數(shù)據(jù)處理框架,尤其是Hadoop。
- Inviso:提供了對(duì)我們的Hadoop工作和集群性能的詳細(xì)見解。
- Lipstick:以一種清晰的視覺方式展示了Pig工作流程。
- Aegisthus:從Cassandra批量抽象數(shù)據(jù)以供下游分析處理。
建造和交付工具
- Nebula:Netflix分享其內(nèi)部基礎(chǔ)設(shè)施建設(shè)的工具。
- Aminator:一個(gè)用于創(chuàng)建EBS AMI的工具。
- Asgard:亞馬遜Web服務(wù)(AWS)用于應(yīng)用程序部署和云管理的Web界面。
一般運(yùn)行服務(wù)和程序庫
- Eureka:Netflix云平臺(tái)服務(wù)搜索
- Archaius:分布式配置。
- Ribbon:彈性和智能化進(jìn)程及服務(wù)通信。
- Hystrix:提供單一服務(wù)調(diào)用外可靠性。在運(yùn)行時(shí)隔離延遲和容錯(cuò)。
- Karyon和Governator:JVM容器服務(wù)。
- Prana sidecar:提供實(shí)例內(nèi)代理功能。
- Zuul:在云部署的邊緣提供動(dòng)態(tài)腳本代理。
- Fenzo:為云計(jì)算本地框架提供先進(jìn)的調(diào)度和資源管理。
數(shù)據(jù)持久性
- EVCache和Dynomite:用于大規(guī)模Memcached和Redis。
- Astyanax和Dyno:更好地使用云數(shù)據(jù)存儲(chǔ)的客戶端庫。
分析、可靠性和性能
- Atlas:時(shí)間序列遙測平臺(tái)
- Edda:跟蹤云變化的服務(wù)
- Spectator:與Atlas易集成Java應(yīng)用程序代碼
- Vector:以最小的花費(fèi)獲取高分辨率主機(jī)級(jí)指標(biāo)。
- Ice:獲取當(dāng)前成本和云使用趨勢(shì)。
- SimianArmy:Netflix實(shí)例隨機(jī)故障測試。
安全
- Security Monkey:有助于監(jiān)測和保護(hù)的基于AWS的大環(huán)境。
- scumblr:利用全網(wǎng)針對(duì)性搜索定位特定安全問題以進(jìn)行調(diào)查。
- MSL:一種可擴(kuò)展的、靈活的安全消息傳遞協(xié)議,解決了許多安全通信使用情況和需求。
- falcor:通過虛擬的JSON圖以單域模型展現(xiàn)遠(yuǎn)程數(shù)據(jù)源。
- restify:Node.jsREST架構(gòu),專門用于Web Service API
- Rxjs:JavaScript的反應(yīng)式編程庫