如何搭建一個優酷、愛奇藝這樣的視頻網站,都會有哪些技術難點?

曾經有太多人問過我這樣一個問題:

如何搭建一個優酷這樣的視頻網站,與普通的圖文網站差異大嗎,這裏面會有哪些坑需要注意?

下面,我以優酷平臺開發工程師的身份大體回答一下這個問題。

首先要給一些外行的開發人員(視頻領域外的人)普及一下,視頻網站與衆多的圖文網站有着本質上的區別,大家千萬不要將兩者混爲一談。

在優酷創立之初(2006年),老大古永鏘就對優酷的技術平臺定下了基調,那就是“快者爲王”。後來的事實證明,這個原則幫助優酷在衆多平臺中脫穎而出,受到了終端用戶的普遍歡迎。

因此,作爲優酷平臺的前研發部主管,我也是嚴格按照這種思路去執行的。如果你真的要做一個這種體量的視頻平臺,這裏面的技術難度其實相當大(對於踩過坑的這些人看來已經不算什麼了)。

首先, 要真正達到“快者爲王”的目標,你要有足夠支撐你發展的資金儲備。

優酷成立一週年(2007年)後,古永鏘曾經接受騰訊的專訪,向大衆解釋過優酷“快者爲王”的戰略,

大家可以翻開歷史自己看一下,這裏不再重複。

https://www.cyzone.cn/article/920.html  

其次,你需要有一個強大的技術開發團隊。

古永鏘當年是從搜狐出來的,由於起步階段就拿到了一千三百萬的投資,所以在2006年的時候就吸引到了多位視頻行業中的大牛過來效力,這幫人都是在流媒體行業中摸爬滾打了6年以上的精英,我本人作爲3年後加入核心團隊的成員,也在優酷這個大集體中得到了很多實踐。

要實踐好“快者爲王”這四個字,你需要做到“快速發佈、快速搜索、快速播放”

在覈心技術層面,需要用到如下這些專業技術:

1. 快速發佈技術

這方面需要用到視頻節目的快速上傳和快速轉碼。

要做好視頻的快速上傳,你需要實現視頻內容的大併發上傳和斷點續傳,這方面我們是用C語言自主實現的上傳服務器,當前支持單臺服務器1千併發用戶同時上傳,支持基於H5的斷點續傳;

要做好快速轉碼,這方面的技術含量更高,大家可以自己嘗試一下用當前十三年後的Intel CPU去做1080P的藍光高清視頻轉換,看看能以幾倍速轉碼。

前幾年,優酷平臺有3千多臺服務器,其中有將近一半的服務器是用來做視頻轉碼的,後來經過技術改良和優化,這方面已經實現了很大的技術飛躍,由當年的3倍速轉碼變成了當前的30倍速轉碼,具體細節可以加(1918098288),從而極大地提高了節目發佈的實時性,也有效降低了運營成本。

2. 快速檢索技術

在2007年12月21日,優酷的日視頻播放量(VV)已經突破1億。

這說明了什麼?起碼每天有1億人在檢索你的視頻內容。

面對用戶訪問量的急速增長,優酷的內容檢索技術也幾經改進,從最初的數據庫讀寫分離,到垂直分庫,到水平分表,再到後來的內存型數據庫和全文檢索、分佈式數據庫、Hadoop、緩存等技術的聯合應用,才使得海量的內容檢索響應時間得以毫秒級實現。

3. 快速播放技術

面對全國幾億網民,龐大的內容資源庫,要想做到內容的快速播放是對平臺架構與核心技術實力的一個嚴峻挑戰。

大家都知道,視頻數據是互聯網上所傳輸的數據量最大的一種數據。它不像文字和圖片,數據量最多隻有幾百KB,然後視頻的流量爲每秒鐘幾個MB,其每秒鐘的數據庫是圖片的十倍以上。

而且,要傳輸這麼大的數據庫,你需要做到持續性和穩定性,不能中斷,這對服務器性能和流媒體軟件性能都提出了極高的要求。

流媒體服務器在功能上,需要支持多終端多協議發佈(比如HLS、HTTP-TS、HTTP-FLV、DASH、RTMP),需要支持多碼流自適應(便於給用戶提供最好的收視體驗),需要支持多服務器負載均衡和高併發性能。

因此,我們的流媒體技術從最初的單服務器支持200併發,到如今支持5千併發,中間經過了N多次技術迭代。

此外,流媒體服務器的性能提升,只是代表了單臺服務器的處理能力,要面向全國的幾億用戶訪問,需要部署幾千臺服務器,這些服務器要分佈於國內整個互聯網的各大節點,包括各大中心城市、省會城市、東部二線城市的IDC機房。具體細節可以加(1918098288)。這些流媒體服務器部署到位後,需要將其連成一個有機的整體,並採用內容分發技術將其組成一個超大規模的CDN內容分發網絡,從而實現視頻內容的快速分發和用戶的就近點播,這樣一方面極大提升了用戶的收看體驗(播放相應很快),另一方面也極大了節省了平臺的資金投入(二線城市的帶寬比一線城市要低很多)。

在服務器集羣負載均衡和CDN建設這方面,優酷平臺爲了控制投資成本,沒有選擇類似F5這樣的硬件解決方案,而是採用了自研軟件來實現,總體效果大家都看到了,而且做得非常好,在視頻的分發層面已經超過了一些專業的CDN服務提供商(比如藍汛、網宿)。

除了以上幾部分,還有很多其它的技術細節也需要考慮到,比如:

大併發的實時消息系統,該系統會用於提供用戶看視頻時的實時字幕,或者文字實時聊天,這種併發也往往在百萬併發的級別。

WEB服務器的負載均衡,由於WEB服務器主要用於提供節目元數據信息的展示,大多爲圖片和文字信息,在大併發訪問的情況下如何實現多服務器負載均衡,如何做分佈式部署,這都與最終的用戶體驗直接相關。

平臺的安全防護,主要包括網站CMS系統的安全性、公網服務器的防攻擊能力(比如DDOS攻擊)。

節目存儲設備的讀寫性能,這方面也是考驗一個平臺整體服務性能的關鍵因素。由於視頻內容的數據量極大,不同的存儲介質(SATA硬盤、SAS硬盤、固態硬盤)、不同的存儲架構都與內容讀取的響應速度和數據吞吐能力息息相關,所以運營級的平臺在這方面都需要完善的設計,優酷在這方面也一直在進行技術的更新和迭代。

節目元數據信息的自動提取,這一點對於大規模運營平臺來說也至關重要,因爲它關係到你後期的運維成本。一個好的運營平臺,在系統設計時都會遵循這樣一個原則,那就是能用機器自動完成的工作,絕不要用人力去完成,因爲人工作業成本比機器作業成本要高很多,同時人的工作效率要比機器低很多。在優酷這個平臺上,所有節目的基礎元數據(節目名稱、節目時長、節目海報圖、播放軌道的預覽圖)都是通過程序自動提取出來的,並且後臺還具有人工一鍵截取海報圖的功能,這樣極大地降低了人工成本。

以上只是從宏觀層面考慮到的一些關鍵點,可以說,每個技術環節裏面都會有很多坑,因此一個強大的技術開發團隊對基礎運營支撐平臺的高效運行極其重要。

今天就先寫這麼多,如果樓主還有疑問可以提出來後期補充。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章