婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 分析整理YouTube網(wǎng)站用到的技術(shù)架構(gòu)及擴(kuò)展經(jīng)驗(yàn)

分析整理YouTube網(wǎng)站用到的技術(shù)架構(gòu)及擴(kuò)展經(jīng)驗(yàn)

熱門(mén)標(biāo)簽:七臺(tái)河商家地圖標(biāo)注注冊(cè) 勝威電話外呼系統(tǒng)密碼 威海語(yǔ)音外呼系統(tǒng)廠家 個(gè)人家庭地圖標(biāo)注教程 廣安電銷(xiāo)外呼系統(tǒng) 徐州穩(wěn)定外呼系統(tǒng)代理商 百度高德騰訊地圖標(biāo)注公司 搜地圖標(biāo)注怎么找店鋪 百度地圖標(biāo)注不能編輯

YouTube發(fā)展迅速,每天超過(guò)1億的視頻點(diǎn)擊量,但只有很少人在維護(hù)站點(diǎn)和確保伸縮性。這點(diǎn)和PlentyOfFish類(lèi)似,少數(shù)人維護(hù)龐大系統(tǒng)。是什么原因呢?放心絕對(duì)不是靠人品,也不是靠寂寞,下面就來(lái)看看YouTube的整體技術(shù)架構(gòu)吧。

平臺(tái)
    
Apache
Python
Linux(SuSe)
MySQL
psyco,一個(gè)動(dòng)態(tài)的Python到C的編譯器
lighttpd代替Apache做視頻查看/strong>

狀態(tài)

支持每天超過(guò)1億的視頻點(diǎn)擊量
成立于2005年2月
于2006年3月達(dá)到每天3千萬(wàn)的視頻點(diǎn)擊量
于2006年7月達(dá)到每天1億的視頻點(diǎn)擊量
2個(gè)系統(tǒng)管理員,2個(gè)伸縮性軟件架構(gòu)師
2個(gè)軟件開(kāi)發(fā)工程師,2個(gè)網(wǎng)絡(luò)工程師,1個(gè)DBA/strong>

Web服務(wù)器

1,NetScaler用于負(fù)載均衡和靜態(tài)內(nèi)容緩存
2,使用mod_fast_cgi運(yùn)行Apache
3,使用一個(gè)Python應(yīng)用服務(wù)器來(lái)處理請(qǐng)求的路由
4,應(yīng)用服務(wù)器與多個(gè)數(shù)據(jù)庫(kù)和其他信息源交互來(lái)獲取數(shù)據(jù)和格式化html頁(yè)面
5,一般可以通過(guò)添加更多的機(jī)器來(lái)在Web層提高伸縮性
6,Python的Web層代碼通常不是性能瓶頸,大部分時(shí)間阻塞在RPC
7,Python允許快速而靈活的開(kāi)發(fā)和部署
8,通常每個(gè)頁(yè)面服務(wù)少于100毫秒的時(shí)間
9,使用psyco(一個(gè)類(lèi)似于JIT編譯器的動(dòng)態(tài)的Python到C的編譯器)來(lái)優(yōu)化內(nèi)部循環(huán)
10,對(duì)于像加密等密集型CPU活動(dòng),使用C擴(kuò)展
11,對(duì)于一些開(kāi)銷(xiāo)昂貴的塊使用預(yù)先生成并緩存的html
12,數(shù)據(jù)庫(kù)里使用行級(jí)緩存
13,緩存完整的Python對(duì)象
14,有些數(shù)據(jù)被計(jì)算出來(lái)并發(fā)送給各個(gè)程序,所以這些值緩存在本地內(nèi)存中。這是個(gè)使用不當(dāng)?shù)牟呗浴?/p>

應(yīng)用服務(wù)器里最快的緩存將預(yù)先計(jì)算的值發(fā)送給所有服務(wù)器也花不了多少時(shí)間。只需弄一個(gè)代理來(lái)監(jiān)聽(tīng)更改,預(yù)計(jì)算,然后發(fā)送。

視頻服務(wù)

1,花費(fèi)包括帶寬,硬件和能源消耗
2,每個(gè)視頻由一個(gè)迷你集群來(lái)host,每個(gè)視頻被超過(guò)一臺(tái)機(jī)器持有
3,使用一個(gè)集群意味著:
   -更多的硬盤(pán)來(lái)持有內(nèi)容意味著更快的速度
   -failover。如果一臺(tái)機(jī)器出故障了,另外的機(jī)器可以繼續(xù)服務(wù)
   -在線備份
4,使用lighttpd作為Web服務(wù)器來(lái)提供視頻服務(wù):
   -Apache開(kāi)銷(xiāo)太大
   -使用epoll來(lái)等待多個(gè)fds
   -從單進(jìn)程配置轉(zhuǎn)變?yōu)槎噙M(jìn)程配置來(lái)處理更多的連接
5,大部分流行的內(nèi)容移到CDN:
  -CDN在多個(gè)地方備份內(nèi)容,這樣內(nèi)容離用戶(hù)更近的機(jī)會(huì)就會(huì)更高
  -CDN機(jī)器經(jīng)常內(nèi)存不足,因?yàn)閮?nèi)容太流行以致很少有內(nèi)容進(jìn)出內(nèi)存的顛簸
6,不太流行的內(nèi)容(每天1-20瀏覽次數(shù))在許多colo站點(diǎn)使用YouTube服務(wù)器
  -長(zhǎng)尾效應(yīng)。一個(gè)視頻可以有多個(gè)播放,但是許多視頻正在播放。隨機(jī)硬盤(pán)塊被訪問(wèn)
  -在這種情況下緩存不會(huì)很好,所以花錢(qián)在更多的緩存上可能沒(méi)太大意義。
  -調(diào)節(jié)RAID控制并注意其他低級(jí)問(wèn)題
  -調(diào)節(jié)每臺(tái)機(jī)器上的內(nèi)存,不要太多也不要太少 /strong>

視頻服務(wù)關(guān)鍵點(diǎn)
    
1,保持簡(jiǎn)單和廉價(jià)
2,保持簡(jiǎn)單網(wǎng)絡(luò)路徑,在內(nèi)容和用戶(hù)間不要有太多設(shè)備
3,使用常用硬件,昂貴的硬件很難找到幫助文檔
4,使用簡(jiǎn)單而常見(jiàn)的工具,使用構(gòu)建在Linux里或之上的大部分工具
5,很好的處理隨機(jī)查找(SATA,tweaks)

縮略圖服務(wù)

1,做到高效令人驚奇的難
2,每個(gè)視頻大概4張縮略圖,所以縮略圖比視頻多很多
3,縮略圖僅僅host在幾個(gè)機(jī)器上
4,持有一些小東西所遇到的問(wèn)題:
   -OS級(jí)別的大量的硬盤(pán)查找和inode和頁(yè)面緩存問(wèn)題
   -單目錄文件限制,特別是Ext3,后來(lái)移到多分層的結(jié)構(gòu)。內(nèi)核2.6的最近改進(jìn)可能讓 Ext3允許大目錄,但在一個(gè)文件系統(tǒng)里存儲(chǔ)大量文件不是個(gè)好主意
   -每秒大量的請(qǐng)求,因?yàn)閃eb頁(yè)面可能在頁(yè)面上顯示60個(gè)縮略圖
   -在這種高負(fù)載下Apache表現(xiàn)的非常糟糕
   -在Apache前端使用squid,這種方式工作了一段時(shí)間,但是由于負(fù)載繼續(xù)增加而以失敗告終。它讓每秒300個(gè)請(qǐng)求變?yōu)?0個(gè)
   -嘗試使用lighttpd但是由于使用單線程它陷于困境。遇到多進(jìn)程的問(wèn)題,因?yàn)樗鼈兏髯员3肿约簡(jiǎn)为?dú)的緩存
   -如此多的圖片以致一臺(tái)新機(jī)器只能接管24小時(shí)
   -重啟機(jī)器需要6-10小時(shí)來(lái)緩存
5,為了解決所有這些問(wèn)題YouTube開(kāi)始使用Google的BigTable,一個(gè)分布式數(shù)據(jù)存儲(chǔ):
   -避免小文件問(wèn)題,因?yàn)樗鼘⑽募占揭黄?
   -快,錯(cuò)誤容忍
   -更低的延遲,因?yàn)樗褂梅植际蕉嗉?jí)緩存,該緩存與多個(gè)不同collocation站點(diǎn)工作
   -更多信息參考Google Architecture,GoogleTalk Architecture和BigTable

數(shù)據(jù)庫(kù)
    
1,早期
   -使用MySQL來(lái)存儲(chǔ)元數(shù)據(jù),如用戶(hù),tags和描述
   -使用一整個(gè)10硬盤(pán)的RAID 10來(lái)存儲(chǔ)數(shù)據(jù)
   -依賴(lài)于信用卡所以YouTube租用硬件
   -YouTube經(jīng)過(guò)一個(gè)常見(jiàn)的革命:?jiǎn)畏?wù)器,然后單master和多read slaves,然后數(shù)據(jù)庫(kù)分區(qū),然后sharding方式
   -痛苦與備份延遲。master數(shù)據(jù)庫(kù)是多線程的并且運(yùn)行在一個(gè)大機(jī)器上所以它可以處理許多工作,slaves是單線程的并且通常運(yùn)行在小一些的服務(wù)器上并且備份是異步的,所以slaves會(huì)遠(yuǎn)遠(yuǎn)落后于master
   -更新引起緩存失效,硬盤(pán)的慢I/O導(dǎo)致慢備份
   -使用備份架構(gòu)需要花費(fèi)大量的money來(lái)獲得增加的寫(xiě)性能
   -YouTube的一個(gè)解決方案是通過(guò)把數(shù)據(jù)分成兩個(gè)集群來(lái)將傳輸分出優(yōu)先次序:一個(gè)視頻查看池和一個(gè)一般的集群
2,后期
   -數(shù)據(jù)庫(kù)分區(qū)
   -分成shards,不同的用戶(hù)指定到不同的shards
   -擴(kuò)散讀寫(xiě)
   -更好的緩存位置意味著更少的IO
   -導(dǎo)致硬件減少30%
   -備份延遲降低到0
   -現(xiàn)在可以任意提升數(shù)據(jù)庫(kù)的伸縮性

數(shù)據(jù)中心策略

1,依賴(lài)于信用卡,所以最初只能使用受管主機(jī)提供商
2,受管主機(jī)提供商不能提供伸縮性,不能控制硬件或使用良好的網(wǎng)絡(luò)協(xié)議
3,YouTube改為使用colocation arrangement。現(xiàn)在YouTube可以自定義所有東西并且協(xié)定自己的契約
4,使用5到6個(gè)數(shù)據(jù)中心加CDN
5,視頻來(lái)自任意的數(shù)據(jù)中心,不是最近的匹配或其他什么。如果一個(gè)視頻足夠流行則移到CDN
6,依賴(lài)于視頻帶寬而不是真正的延遲。可以來(lái)自任何colo
7,圖片延遲很?chē)?yán)重,特別是當(dāng)一個(gè)頁(yè)面有60張圖片時(shí)
8,使用BigTable將圖片備份到不同的數(shù)據(jù)中心,代碼查看誰(shuí)是最近的

關(guān)于擴(kuò)展性的思考
以下雖然都不是什么新思想,但希望對(duì)你有所助益。
分而治之是擴(kuò)展性技術(shù)的靈魂。考慮以層次化的方式完成所有的工作。這也是數(shù)據(jù)分片的癥結(jié)所在。要知道如何將數(shù)據(jù)分區(qū),以及如何將已分區(qū)的數(shù)據(jù)進(jìn)行關(guān)聯(lián)。總而言之,保持簡(jiǎn)單與松散的耦合非常必要。
充分利用Python的動(dòng)態(tài)特性,構(gòu)建易于擴(kuò)展的軟件架構(gòu)。
近似的正確性。要相信監(jiān)控系統(tǒng)所報(bào)告的系統(tǒng)運(yùn)行狀態(tài)。如果問(wèn)題沒(méi)有出現(xiàn),就認(rèn)為一切良好。
不一致的數(shù)據(jù)模型。例如,閱讀評(píng)論的人和寫(xiě)評(píng)論的人對(duì)你刷新頁(yè)面的動(dòng)作會(huì)有不同的反應(yīng),但也不必完全基于事務(wù)處理進(jìn)行系統(tǒng)設(shè)計(jì),這會(huì)顯得矯枉過(guò)正。我們依然需要不一致的數(shù)據(jù)模型。
分布式系統(tǒng)的隨機(jī)性。分布式系統(tǒng)就如同氣象系統(tǒng)一樣,對(duì)分布式系統(tǒng)進(jìn)行調(diào)試會(huì)存在更多的隨機(jī)性。例如,緩存過(guò)期。一般情況下,服務(wù)器會(huì)將流行的視頻緩存24小時(shí)。如果一旦出現(xiàn)緩存同時(shí)過(guò)期的情況,服務(wù)器將同時(shí)開(kāi)始緩存,荷載如聞驚雷!
最快的函數(shù)調(diào)用就是不做任何調(diào)用。合理設(shè)計(jì)事務(wù)處理發(fā)生的間隔和次數(shù)。
仔細(xì)觀察API,并做到心中有數(shù)。如何定義輸入、輸出?所有的函數(shù)調(diào)用本質(zhì)上都是圍繞數(shù)據(jù)發(fā)生的,那在函數(shù)調(diào)用之后,又會(huì)發(fā)生什么?
在Python中運(yùn)用RPC重定向。程序員是代碼的構(gòu)建者,因此要做好約定。如果代碼不幸失敗了,還可以從RPC輸出中追查原因。
沒(méi)有完美的組件。一個(gè)組件的運(yùn)行周期可能持續(xù)1-6個(gè)月,具體多久,誰(shuí)也說(shuō)不清。隨著時(shí)間的推移,我們會(huì)用Python和C重寫(xiě)一些東西,這證明你正在淘汰舊的組件,當(dāng)你觀察到一個(gè)新組件出現(xiàn)的時(shí)候,它誕生了。
沒(méi)有人了解整個(gè)系統(tǒng)的運(yùn)作機(jī)制。因此,我們需要定義組件。視頻轉(zhuǎn)碼和視頻搜索截然不同,建立良好的數(shù)據(jù)規(guī)范非常重要。
效率與擴(kuò)展性并重。最有效率的是用C實(shí)現(xiàn)進(jìn)程,但這樣的方式缺乏擴(kuò)展性。
著眼于宏觀層面、組件及其失敗的原因。使用RPC是否明智??jī)?nèi)聯(lián)如何?進(jìn)行分解研究,也許會(huì)發(fā)現(xiàn)不同之處。
重視算法。與其絞盡腦汁用Python來(lái)實(shí)現(xiàn)高效的算法,不如用它做些更有實(shí)用價(jià)值的事。在這方面,C語(yǔ)言有它的優(yōu)勢(shì)。
我們很少?gòu)氖旅嫦驅(qū)ο笤O(shè)計(jì)。我們使用了大量的名稱(chēng)空間,使用類(lèi)來(lái)組織數(shù)據(jù),但極少面向?qū)ο蟆?br />我樂(lè)意用下面的詞匯來(lái)形容我們的代碼樹(shù):簡(jiǎn)單、實(shí)用、優(yōu)雅、正交、可組合,這是我們的追求。


總結(jié)
YouTube解決問(wèn)題的哲學(xué)只有一個(gè)詞:簡(jiǎn)單。許多YouTube的產(chǎn)品最初只是源于一個(gè)簡(jiǎn)單的Python腳本。這正是應(yīng)了我們的一句老話,不積跬步,無(wú)以至千里;不積小流,無(wú)以成江海。

標(biāo)簽:吳忠 威海 昭通 三明 婁底 云浮 臨沂 滁州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《分析整理YouTube網(wǎng)站用到的技術(shù)架構(gòu)及擴(kuò)展經(jīng)驗(yàn)》,本文關(guān)鍵詞  分析,整理,YouTube,網(wǎng)站,用到,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《分析整理YouTube網(wǎng)站用到的技術(shù)架構(gòu)及擴(kuò)展經(jīng)驗(yàn)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于分析整理YouTube網(wǎng)站用到的技術(shù)架構(gòu)及擴(kuò)展經(jīng)驗(yàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 汨罗市| 垦利县| 安塞县| 海盐县| 商南县| 南京市| 伊春市| 襄汾县| 清流县| 巴林右旗| 仪陇县| 青神县| 拉萨市| 观塘区| 松滋市| 南溪县| 四子王旗| 夏邑县| 孟连| 吉木萨尔县| 谷城县| 平利县| 琼结县| 博罗县| 江陵县| 安化县| 休宁县| 塔河县| 木里| 木兰县| 万荣县| 清镇市| 八宿县| 公主岭市| 隆子县| 环江| 布拖县| 鞍山市| 海晏县| 安阳市| 赤壁市|