YouTube的架構擴充套件
Kyle Cordes 對這個影片中的內容做了介紹。裡面有不少技術性的內容。值得分享一下。(Kyle Cordes 的介紹是本文的主要來源)
簡單的說 YouTube 的資料流量, "一天的YouTube流量相當於傳送750億封電子郵件.", 2006 年中就有訊息說每日 PV 超過 1 億,現在? 更誇張了,"每天有10億次下載以及6,5000次上傳", 真假姑且不論, 的確是超乎尋常的海量.
[@more@]1.Web伺服器YouTube 出於開發速度的考慮,大部分程式碼都是 Python 開發的。Web 伺服器有部分是 Apache, 用 FastCGI 模式。對於影片內容則用 Lighttpd 。據我所知,MySpace 也有部分伺服器用 Lighttpd ,但量不大。YouTube 是 Lighttpd 最成功的案例。(國內用 Lighttpd 站點不多,豆瓣用的比較舒服。by Fenng)
2.影片
影片的縮圖(Thumbnails)給伺服器帶來了很大的挑戰。每個影片平均有4個縮圖,而每個 Web 頁面上更是有多個,每秒鐘因為這個帶來的磁碟 IO 請求太大。YouTube 技術人員啟用了單獨的伺服器群組來承擔這個壓力,並且針對 Cache 和 OS 做了部分最佳化。另一方面,縮圖請求的壓力導致 Lighttpd 效能下降。透過 Hack Lighttpd 增加更多的 worker 執行緒很大程度解決了問題。而最新的解決方案是起用了 Google 的 BigTable, 這下子從效能、容錯、快取上都有更好表現。看人家這收購的,好鋼用在了刀刃上。
出於冗餘的考慮,每個影片檔案放在一組迷你 Cluster 上,所謂 "迷你 Cluster" 就是一組具有相同內容的伺服器。最火的影片放在 CDN 上,這樣自己的伺服器只需要承擔一些"漏網"的隨即訪問即可。YouTube 使用簡單、廉價、通用的硬體,這一點和 Google 風格倒是一致。至於維護手段,也都是常見的工具,如 rsync, SSH 等,只不過人家更手熟罷了。
3.資料庫
YouTube 用 MySQL 儲存後設資料--使用者資訊、影片資訊什麼的。資料庫伺服器曾經一度遇到 SWAP 顛簸的問題,解決辦法是刪掉了 SWAP 分割槽! 管用。
最初的 DB 只有 10 塊硬碟,RAID 10 ,後來追加了一組 RAID 1。夠省的。這一波 Web 2.0 公司很少有用 Oracle 的(我知道的只有 Bebo,參見這裡). 在擴充套件性方面,路線也是和其他站點類似,複製,分散 IO。最終的解決之道是"分割槽",這個不是資料庫層面的表分割槽,而是業務層面的分割槽(在使用者名稱字或者 ID 上做文章,應用程式控制查詢機制)
YouTube 也用 Memcached.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-1035278/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 架構設計的立方體擴充套件架構套件
- 微服務架構擴充套件FreeStyle微服務架構套件
- 谷歌的三大可擴充套件核心架構谷歌套件架構
- 簡要剖析:可擴充套件的微服務架構套件微服務架構
- 微服務架構:自動擴充套件簡介微服務架構套件
- Chrome瀏覽器擴充套件開發系列之三:Google Chrome瀏覽器擴充套件的架構Chrome瀏覽器套件Go架構
- YouTube贊助商廣告移除外掛SponsorBlock for YouTube_Safari擴充套件ORBBloC套件
- 以對話的方式擴充套件架構的實踐 - Andrew套件架構
- 大型網站技術架構(七)--網站的可擴充套件性架構網站架構套件
- 【軟體架構篇】常見可擴充套件模式架構套件模式
- 可擴充套件Web架構與分散式系統套件Web架構分散式
- Django與微服務架構:構建可擴充套件的Web應用Django微服務架構套件Web
- 開源 [輪子] Laravel 專案架構擴充套件包Laravel架構套件
- 在亞馬遜AWS上擴充套件微服務架構(英文PPT)亞馬遜套件微服務架構
- MySQL 高擴充套件架構構建百萬線上系統實踐MySql套件架構
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 擴充套件 GRTN:雲原生趨勢下的 RTC 架構演進套件架構
- Deco 編輯器高擴充套件性技術架構解析套件架構
- Fortinet將SecurityFabric架構安全能力擴充套件到雲端架構套件
- 微服務架構中資料庫擴充套件和最佳化微服務架構資料庫套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 構建高可用性、高效能和可擴充套件的Zabbix Server架構套件Server架構
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- 使用 Postgres 的全文搜尋構建可擴充套件的事件驅動搜尋架構套件事件架構
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- if-else擴充套件結構練習套件
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件
- 擴充套件歐幾里得套件
- DOM擴充套件套件
- 擴充套件ACL套件
- Lua擴充套件套件
- 照片擴充套件套件
- 擴充套件篇套件
- disable or 擴充套件套件
- 擴充套件表套件
- Mybatis擴充套件MyBatis套件