成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

YouTube 僅用 9 名工程師就能支持每天 1 億次視頻觀看的 11 個原因

譯文 精選
網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
最初,他們的財(cái)力有限,只能通過信用卡債務(wù)和基礎(chǔ)設(shè)施借款為 YouTube 籌集資金。但財(cái)務(wù)上的緊張,也倒逼著他們打造出一套出色的可擴(kuò)展性技術(shù)。第二年,他們平臺的視頻日播放量就達(dá)到了 1 億。更令人出乎意料的是,他們只用了 9 名工程師就做到了這一點(diǎn)。

作者 | NK

策劃 | 言征 

2005 年 2 月, 美國加利福尼亞州。全球知名的在線支付服務(wù)公司PayPal已經(jīng)走過 6 年零 2 個月的時間,3 名早期員工就像發(fā)現(xiàn)了互聯(lián)網(wǎng)世界的流量密碼一樣,開始尋找屬于他們的機(jī)會。

最后,他們希望建立一個分享視頻的平臺。后來這個在車庫里誕生的平臺,就是大名鼎鼎的YouTube。

最初,他們的財(cái)力有限,只能通過信用卡債務(wù)和基礎(chǔ)設(shè)施借款為 YouTube 籌集資金。但財(cái)務(wù)上的緊張,也倒逼著他們打造出一套出色的可擴(kuò)展性技術(shù)。

第二年,他們平臺的視頻日播放量就達(dá)到了 1 億。更令人出乎意料的是,他們只用了 9 名工程師就做到了這一點(diǎn)。 

YouTube 是如何做到的?下面為大家一一揭開當(dāng)年的設(shè)計(jì)要點(diǎn)。(Ps:乍看起來,樸實(shí)無華,大巧不工。)

1、神奇飛輪

他們采用一種“飛輪”的方法去收集和分析系統(tǒng)數(shù)據(jù),以便于可擴(kuò)展性的實(shí)現(xiàn)。他們的工作流程是一個不斷循環(huán)的過程:識別瓶頸→修復(fù)瓶頸→喝水→睡覺。這種方法好處在于避免了對高端硬件的需求(不用大規(guī)模部署),降低了硬件成本。

可擴(kuò)展性循環(huán)(Scalability loop)可擴(kuò)展性循環(huán)(Scalability loop)

2、看似無聊、卻大巧不工的技術(shù)棧

他們讓技術(shù)堆棧保持簡單,并使用經(jīng)過驗(yàn)證的技術(shù)。他們的技術(shù)堆棧絕對讓你想象不到:

YouTube 技術(shù)棧YouTube 技術(shù)棧

  • MySQL 存儲元數(shù)據(jù):視頻標(biāo)題、標(biāo)簽、描述和用戶數(shù)據(jù)。因?yàn)樾迯?fù) MySQL 中的問題很容易。 
  • Lighttpd Web 服務(wù)器提供視頻服務(wù)。 
  • 使用Linux作為操作系統(tǒng)。他們使用 Linux 工具來檢查下列系統(tǒng)行為:strace、ssh、rsync、vmstat 和 tcpdump。 
  • 應(yīng)用程序服務(wù)器上的 Python。因?yàn)樗峁┝嗽S多可重用的庫,而且他們不想重新發(fā)明輪子。換句話說,Python 允許快速靈活的開發(fā)。根據(jù)他們的測量,Python 從來都不是瓶頸。值得注意的是,他們使用 Python 到 C 的編譯器和 C 語言擴(kuò)展來運(yùn)行 CPU 密集型任務(wù)。

3、保持簡單

他們認(rèn)為軟件架構(gòu)是可擴(kuò)展性的根源。他們沒有盲目追求“流行語”去擴(kuò)大規(guī)模。因此,他們保持架構(gòu)簡單——使代碼審查更容易。這使他們能夠快速重新架構(gòu)以滿足不斷變化的需求。例如,他們從約會網(wǎng)站轉(zhuǎn)向視頻共享網(wǎng)站。

此外,他們還保持網(wǎng)絡(luò)路徑簡單。因?yàn)榫W(wǎng)絡(luò)設(shè)備具有可擴(kuò)展性限制。

硬件成本硬件成本

他們還使用了商品硬件。它使他們能夠減少功耗和維護(hù)費(fèi)用,并保持較低的成本。

此外,他們使規(guī)模感知代碼與應(yīng)用程序開發(fā)相對獨(dú)立。

4、選擇你的主戰(zhàn)場

他們將許多不重要的問題給外包出去了。因?yàn)樗麄兿雽W⒂谥匾氖虑椤K麄儧]有時間或資源來構(gòu)建自己的基礎(chǔ)設(shè)施來提供流行視頻。于是,他們把熱門視頻放到了第三方CDN上。好處:

  • 低延遲。由于用戶的網(wǎng)絡(luò)跳數(shù)較少 ;
  • 高性能。因?yàn)樗峁┑氖莾?nèi)存中的視頻; 
  • 高可用性。因?yàn)樽詣訌?fù)制。

他們從同地?cái)?shù)據(jù)中心提供受歡迎度稍低些的視頻。并采用軟件RAID,通過多磁盤并行訪問來提高性能。還調(diào)整了他們的服務(wù)器以防止緩存抖動。

他們將基礎(chǔ)設(shè)施保留在同一地點(diǎn)的數(shù)據(jù)中心,有兩點(diǎn)原因。其一,可以輕松調(diào)整服務(wù)器以滿足其需求。其二,方便自己的合同談判。

選擇你的主戰(zhàn)場;外包問題以釋放資源選擇你的主戰(zhàn)場;外包問題以釋放資源

每個視頻有 4 個縮略圖。因此,他們在服務(wù)小對象時面臨著問題:大量磁盤查找和文件系統(tǒng)限制。因此,他們將縮略圖放入 BigTable 中 。它是一種分布式數(shù)據(jù)存儲,具有許多優(yōu)點(diǎn):通過對文件進(jìn)行聚類來避免小文件問題、提高性能、多級緩存低延遲、易于配置。

他們還偽造數(shù)據(jù)以防止昂貴的交易費(fèi)用。例如,他們偽造視頻觀看次數(shù)并異步更新計(jì)數(shù)器。當(dāng)今近似正確性的一種流行技術(shù)是:布隆過濾器,它是一種概率數(shù)據(jù)結(jié)構(gòu)。

5、可擴(kuò)展性三大支柱

YouTube 依賴可擴(kuò)展性的三大支柱:無狀態(tài)、復(fù)制和分區(qū)。

可擴(kuò)展性的 3 個支柱可擴(kuò)展性的 3 個支柱

他們保持網(wǎng)絡(luò)服務(wù)器無狀態(tài)(stateless),并通過復(fù)制進(jìn)行擴(kuò)展。

他們復(fù)制replicated數(shù)據(jù)庫服務(wù)器以實(shí)現(xiàn)讀取可擴(kuò)展性和高可用性。并對副本之間的流量進(jìn)行負(fù)載平衡。但這種方法引起了問題:復(fù)制滯后和寫入可擴(kuò)展性問題。

復(fù)制與分區(qū)復(fù)制與分區(qū)

因此,他們對數(shù)據(jù)庫進(jìn)行了分區(qū),以提高寫入可擴(kuò)展性、緩存局部性和性能。partitioned它還將硬件成本降低了 30%。

此外,他們還研究了數(shù)據(jù)訪問模式來確定分區(qū)級別。例如,他們研究了流行的查詢、連接和事務(wù)一致性,并選擇用戶作為分區(qū)級別。

6、扎實(shí)的工程團(tuán)隊(duì)

知識豐富的團(tuán)隊(duì)是可擴(kuò)展性的重要資產(chǎn)。

跨學(xué)科團(tuán)隊(duì)跨學(xué)科團(tuán)隊(duì)

他們保持較小的團(tuán)隊(duì)規(guī)模t以改善溝通:僅 9 名工程師。他們的團(tuán)隊(duì)非常擅長跨學(xué)科技能。

7、不要重復(fù)自己的話

他們使用緩存cache來防止重復(fù)昂貴的操作。它使他們能夠擴(kuò)展瀏覽量。

多級緩存可擴(kuò)展多級緩存可擴(kuò)展

他們還在多個級別實(shí)現(xiàn)了緩存 - 并且減少了延遲。

8、排序:重要的指標(biāo)要優(yōu)先

對重要流量進(jìn)行排名;二八原則(帕累托原則)對重要流量進(jìn)行排名;二八原則(帕累托原則)

他們將視頻觀看流量優(yōu)先,排在其他所有流量之上。因此,他們?yōu)橐曨l觀看流量保留了專用資源集群。這一點(diǎn)提供了高可用性。

9、防止“雷群”

如果許多并發(fā)客戶端查詢服務(wù)器,就會出現(xiàn)雷群問題。它會降低性能。

雷群(The Thundering Herd)問題雷群(The Thundering Herd)問題

他們使用抖動來防止雷群問題。例如,他們?yōu)榱餍幸曨l的緩存過期添加了抖動。

10、打持久戰(zhàn)

他們專注于宏觀層面的事物:算法和可擴(kuò)展性。他們進(jìn)行了快速的黑客攻擊,以贏得更多時間來構(gòu)建長期解決方案。例如,使用 Python 消除不良 API 以防止短期問題。

冒險(xiǎn)與回報(bào)冒險(xiǎn)與回報(bào)

他們?nèi)萑探M件中的缺陷。當(dāng)遇到瓶頸時:他們要么重寫組件,要么刪除它。

他們用效率換取可擴(kuò)展性。有四個例子:

  • 他們選擇了 Python 而不是 C; 
  • 他們在組件之間保持清晰的界限以進(jìn)行橫向擴(kuò)展。和容忍的延遲;
  • 他們優(yōu)化了軟件,使其足夠快。但并不癡迷于機(jī)器效率; 
  • 他們根據(jù)帶寬可用性從服務(wù)器位置提供視頻。并且不基于延遲。

11、適應(yīng)性進(jìn)化

他們調(diào)整了系統(tǒng)以滿足他們的需求。例子:

  • 關(guān)鍵組件使用RPC而不是 HTTP REST,這提高了性能; 
  • 自定義BSON作為數(shù)據(jù)序列化格式。它提供了高性能;
  • 應(yīng)用程序某些部分的最終一致性以實(shí)現(xiàn)可擴(kuò)展性。例如,用戶評論中的“讀你所寫”的一致性模型 ;
  • 學(xué)習(xí) Python 是為了防止常見的陷阱。當(dāng)然,還有分析需求的原因;
  • 定制開源軟件;
  • 優(yōu)化數(shù)據(jù)庫查詢; 
  • 使非關(guān)鍵實(shí)時任務(wù)異步。

編碼原則編碼原則

他們沒有浪費(fèi)時間編寫代碼來限制人們。相反,采用了出色的工程實(shí)踐- 編碼約定來改進(jìn)其代碼結(jié)構(gòu)。

——后記—— 

2006 年 11 月,谷歌以 16.5 億美元的價(jià)格收購了 YouTube,并把它當(dāng)做一個子公司來運(yùn)營。時至今日,它依然是視頻分享市場的領(lǐng)導(dǎo)者,每天有 50 億次視頻瀏覽量。

據(jù)《福布斯》報(bào)道,YouTube 創(chuàng)始人的凈資產(chǎn)超過 1 億美元。YouTube創(chuàng)立僅 20 個月便成視頻搜尋界的龍頭,可謂是締造了一個硅谷奇跡。

參考鏈接:https://newsletter.systemdesign.one/p/youtube-scalability

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2023-10-11 18:36:28

WhatsApp消息工程技術(shù)

2016-12-14 12:13:19

蘋果IOSAdobe

2024-07-22 17:21:05

2010-03-09 08:44:59

HTML 5YouTube

2009-12-11 09:55:34

微軟雅虎工程師

2024-09-29 15:50:51

2018-07-05 09:12:39

前端開發(fā)編程

2021-10-27 06:32:06

服務(wù)器JVM內(nèi)存

2013-08-22 10:23:15

程序員開發(fā)

2022-06-20 22:37:25

Linux操作系統(tǒng)命令

2016-01-28 11:18:09

卓越前端工程師

2021-01-18 09:00:00

人工智能機(jī)器學(xué)習(xí)工程師

2021-05-10 17:22:49

工程師代碼技術(shù)

2019-02-20 09:35:05

爬蟲工程師開發(fā)工具

2019-06-24 09:40:17

前端前端工程師開發(fā)工具

2013-06-06 10:10:39

工程師

2017-10-16 09:00:11

微服務(wù)架構(gòu)Netflix

2024-02-19 14:06:00

AI數(shù)據(jù)

2016-09-09 08:27:16

2015-08-26 14:18:25

Web前端工程師價(jià)值
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 99视频在线免费观看 | 依人成人 | 国产精品色婷婷久久58 | 久久精品亚洲精品国产欧美 | 精品久久香蕉国产线看观看亚洲 | 日韩精品一区二区三区中文字幕 | 国产良家自拍 | 亚洲欧美日韩在线 | 国产一区二区自拍 | 久久手机在线视频 | 久久亚洲二区 | 免费一级做a爰片久久毛片潮喷 | 国产国语精品 | 最新国产精品精品视频 | 国产精品一二区 | 久久精品国产久精国产 | 欧美日韩视频 | 久久久黄色 | 久久亚洲国产精品 | 一级特黄a大片 | 国产精品久久久久久久久久久免费看 | 精品国产免费人成在线观看 | 久久在线看 | 国产a区| 一区二区三区小视频 | 久久天天躁狠狠躁夜夜躁2014 | 国产精品久久久久久久久图文区 | 午夜精品视频一区 | 国产日韩av一区二区 | 欧美日韩亚 | 色视频在线观看 | 日韩第1页 | 日韩精品免费看 | 在线观看国产www | 精品日韩一区二区 | 在线电影日韩 | 久久精品国产99国产精品 | 国产高清免费视频 | 欧美日韩国产欧美 | 午夜精品 | 特级一级黄色片 |