1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      YouTube如何稱霸在線視頻領域

      更新時間: 2012-04-10 03:02:36來源: 粵嵌教育瀏覽量:1297

          如果你想構建一個可以承載日訪問量40億次的網站,YouTube有許多值得借鑒的地方。本文是YouTube的工程師Mike Solomon在PyCon(PyCon是Python開源社區的開發者年度盛會)上關于YouTube擴展性演講的摘要,相信會對大家有所啟發。

          許多團隊都使得他們的基礎架構越來越復雜,YouTube團隊卻盡量保持簡單的風格。他們使用Python作為主要開發語言,使用MySQL開源數據庫,并一直使用Apache作為Web服務器。對一個如此龐大的站點而言,許多重要特性都源于點點滴滴的Python代碼。

          這并不意味著YouTube不追求創新,他們更追求一種技術哲學,而非炒作。究竟是什么成就了世界上的視頻網站?敬請閱讀。

          驚人的數字

          •日訪問量40億次
          •每分鐘上傳60小時的視頻
          •超過3.5億終端訪問
          •利潤是2010年收入的雙倍
          •視頻的數量上升了9個數量級,開發人員卻只上升了2個數量級
          •一百萬行Python代碼

          軟件架構

          •Python:Python是YouTube的主要編程語言。
          •Apache:YouTube一直使用Apache,每次HTTP請求都經由Apache。
          •Linux:Linux是構建YouTube的基石,它有許多強大的工具,如strace何tcpdump。
          •MySQL:MySQL有龐大的用戶群。YouTube使用它的關系數據庫特性,也使用它存儲BLOB數據。
          •Vitess:Vitess是由YouTube發起的一個開源項目,旨在打造高性能的MySQL前端。
          •Zookeeper:分布式的鎖服務器。
          •Wiseguy:一個CGI Servlet容器。
          •Spitfire:一個模板系統。
          •Serialization formats:YouTube重寫了BSON實現,速度提升了10-15倍。

          關于擴展性的思考

          以下雖然都不是什么新思想,但希望對你有所助益。

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

          總結

          YouTube解決問題的哲學只有一個詞:簡單。許多YouTube的產品初只是源于一個簡單的Python腳本。這正是應了我們的一句老話,不積跬步,無以至千里;不積小流,無以成江海。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 一区二区欧美日韩动漫精品 | 亚洲欧洲日产韩国夜夜高潮 | 一本在线免费看现频 | 一级国产精在线观看 | 亚洲精品国产二区在线观看 | 在线观看你懂的亚洲 |