2009-02-12 55 views
1

我正在設置在線視頻播放網站(如Youtube)。我的技術挑戰是提供大量點擊並保持性能。維護視頻網站性能

我目前的解決方案是建立幾個後端服務器,讓每個服務器緩存一部分視頻,這可以節省從磁盤I/O讀取視頻文件的時間。

另一臺前端服務器將散列request video ID以查明視頻駐留在哪個服務器上,然後要求客戶端瀏覽器重定向到特定服務器。

我的解決方案很簡單,我想知道是否有其他人對我的解決方案有更好的想法或技術上的考慮?


請注意:我想建立網站在本地工作(而不是依賴於像Alakami提供商)的內容是本地學生從我的學校。這基本上是一個'內聯網'的解決方案。

+0

我已經更新了您的問題,並附有您評論中的重要信息!您能否提供更多信息,瞭解您期望達到頂峯的用戶數量以及您使用的是什麼技術(Flash視頻?Windows Media?) – 2009-02-12 12:37:20

+0

嗨保羅!感謝您的關注。我更喜歡使用Flash,但使用Silverlight也很好。在當前的估計中,峯值用戶數可能大約爲1000。任何技術想法? – George2 2009-02-12 12:51:23

回答

0

你在IIS7的Windows上託管這個嗎?如果是這樣的話,他們有一個IIS模塊可以對視頻進行限制,所以它不會流得更快,那麼用戶實際上可以觀看它。

+0

兩條評論,1.我正在使用IIS 6.0。我可以在Windows Server 2003上安裝IIS 7.0嗎? 2.另一個問題是,我需要的是提交/批准發佈/分類系統,而不僅僅是流式解決方案。我認爲從IIS 7.0的解決方案只提供流媒體,沒有其他的部分? – George2 2009-02-12 12:34:25

+0

嗨喬希,我想到了另一個問題。對於IIS 7.0,只有一臺機器,網絡功能非常有限。是否有任何IIS 7.0視頻解決方案的內置解決方案來集羣幾臺服務器來進行負載平衡? – George2 2009-02-12 12:36:41

0

高性能的一個解決方案是使用數據分發服務,如Akamai。他們提供遍佈全球的服務器空間,他們已經解決了性能問題。而且,由於他們在全球擁有數據中心,因此您的數據不必走很遠,這對互聯網和您都有好處(因爲Akamai可以爲相同數量的數據收取較低的費用)。

1

當所有用戶請求相同的視頻時,您的解決方案將無法正常工作。更好的解決方案是在所有服務器上都可以使用所有視頻,並使用負載平衡服務器將當前請求重定向到打開最少數量的服務器的服務器。請注意,存儲後端(RAID陣列,SAN)可以以非常高的速率傳輸數據,因此您經常可以使用一個存儲系統爲多個視頻服務器(即每N個視頻服務器一個存儲系統和1個負載平衡器(如果需要故障轉移,則爲兩個))。

這裏一個好的解決方案是具有在協議的「重定向」命令:

  1. 客戶端請求的視頻
  2. LB告訴客戶端視頻服務器(VS)要使用的負載平衡器(LB)。這是一個簡單的「查找與最低數量的開放飼料VS」。
  3. 客戶端直接連接到VS(以避免所有開銷)
  4. VS告訴LB當前量開飼料(不要用一種漸進的辦法在這裏以避免同步問題)
  5. VS開始流數據到客戶
  6. 當客戶端斷開,VS告訴飼料

[編輯]主要的原因,以獲得客戶端直接連接到視頻服務器的新號碼的LB是網絡吞吐量。如果所有的VS都將數據發送給將它傳遞給客戶端的LB,那麼您將自己限制爲LB的單個(或雙)網卡的速度。如果您有5個VS,則直接連接時可以獲得5倍的吞吐量。此外,當更多用戶敲擊它時,只需添加另一臺視頻服務器,將其插入骨幹網並在LB上添加一個條目,即可輕鬆擴展您的系統。

1

如果您的用戶遍佈全球,請嘗試亞馬遜的CloudFront(CDN)。如果您的用戶已本地化(美國/歐洲),則可以使用S3。

此外,你也可以嘗試使用Nginx(一個網絡服務器),這是非常有效的服務大型文件。

這樣,您不必在應用程序中處理不必要的架構複雜性。