土豆網(wǎng)現(xiàn)在以云計算為基礎(chǔ),給大家提供視頻云的服務(wù),土豆網(wǎng)是怎么做這件事的。下面我們來詳細的介紹一下?,F(xiàn)在我們看到的新浪SAE最老的前身叫新浪的動態(tài)研發(fā)平臺。在那個時候,新浪認為他要做一個能夠隨時都把新的業(yè)務(wù)很容易的部署進去,并且隨時都可以像新浪網(wǎng)的新聞一樣,能夠面向全國的用戶,動態(tài)、高速、可擴容的平臺,所以出現(xiàn)了一個基礎(chǔ)的服務(wù)平臺。在土豆來講,比較不一樣的是,它更多還是以視頻為基礎(chǔ),所以它的存儲、計算和交付都會有所不同。

土豆網(wǎng)一個核心的思想就是,每個人都是生活的導(dǎo)演。每個人都是生活的導(dǎo)演帶來的狀況是我們每天有差不多兩億次的視頻播放量,這個數(shù)據(jù)老了一點,不過還好,每天有3500萬的獨立訪問,每個月有2.3億的用戶覆蓋?,F(xiàn)在的總視頻數(shù)超過7500萬,有超過一個億的注冊用戶。這是一些簡單的數(shù)據(jù),這個數(shù)據(jù)是平臺支持的整體流量。

每個人都是生活的導(dǎo)演里面核心的三步,一個是不久大家會在美國上市公司里面看到優(yōu)酷土豆有限公司,我們會和優(yōu)酷合并,優(yōu)酷土豆這家公司將會是中國唯一一個把UGC,把專業(yè)版權(quán)內(nèi)容和自制劇做到了的平臺。UGC是每一個用戶可以在任何地方把視頻分享給互聯(lián)網(wǎng)任何地點任何設(shè)備上的人,專業(yè)版權(quán)最大的單位就是單個視頻會被極大的人群在短時間內(nèi)集中性的觀看。最后一個是自制劇,自制劇在兩者之間都會有一些,它比較講究快,另外它的內(nèi)容會更快地播放。前兩者對土豆的基礎(chǔ)平臺來講比較關(guān)鍵,也就是一小部分內(nèi)容在短時間內(nèi)被用戶集中快速地去索取,這是兩個非常核心的地方。與剛才的業(yè)務(wù)形態(tài)不同的是,三項點播外加兩項直播的產(chǎn)品。

到技術(shù)和產(chǎn)品的形態(tài),對于我們來講,分成三個部分加一個服務(wù),這里面包含了一系列快速的并行的計算,第二就是大容量或者極大容量的存儲,第三就是很容易的交付,讓所有人容易的高速的取到它,這三者結(jié)合起來,就是一項視頻的云服務(wù)。

土豆運用云計算的實踐

首先,我們談一下計算。在土豆網(wǎng)里面的計算和EC2比較不同的事情,是我們對三件事情做優(yōu)化。第一件事情,希望用戶很容易的把數(shù)據(jù)給我,第二件事情,云計算最核心的地方,就是要把非常非常多的視頻去變成用戶能看的東西。第三個,就是要把這些東西再分發(fā)走,讓業(yè)務(wù)可以去用它。最核心的地方還是在視頻轉(zhuǎn)碼的業(yè)務(wù)上面。所以,第一件事,像亞馬遜S3,你一定要看到我們是在全球幾個不同的點,但是對于土豆網(wǎng)來講,它的云計算,也就是數(shù)據(jù)存進來的切入點是就近上傳,讓用戶最快速度傳上來。然后再就近上傳到一個集群點,我會切出很多個小薄片來做轉(zhuǎn)碼的集群,當(dāng)然這在全國分成好多份,在很多個地方走。我們的計算是單一的編解碼,這種編解碼上面稍微復(fù)雜一點,就是多種格式,網(wǎng)友會給我們傳上來各種各樣稀奇古怪的視頻格式,然后我們把多種格式進行轉(zhuǎn)變,但是又要把它分成不同的碼流輸出去。最后,就是把這些東西快速轉(zhuǎn)碼完成之后,分到用戶可能要看到的存儲結(jié)點上去,這個工作就做完了。

所以,這里面有幾件比較重要的事。第一件事情是實際上是以用戶來源區(qū)域為核心去做這種上傳調(diào)度,我認為DNS是互聯(lián)網(wǎng)最基礎(chǔ)的幫助用戶走到一個地方的方法,這個是非常對的,但是實質(zhì)上現(xiàn)在的云計算里面,基于在七層業(yè)務(wù)層面去做調(diào)度非常重要,也就是說DNS給過來的數(shù)據(jù),我認為他是在哪個地方,但是他不一定真的在哪,在會話的時候可能會做一些改變,所以會話的時候會做二次調(diào)度,所以我們會把客戶放到比較快的結(jié)點上去。然后我們有一組基于任務(wù)和優(yōu)先機制的系統(tǒng)送到多個服務(wù)器,再去并發(fā)轉(zhuǎn)碼,轉(zhuǎn)碼實際上我們現(xiàn)在有很多架構(gòu)。在剛才這個機制上,我們可以看到,一般來講,它很難多線程去做,每臺機器上現(xiàn)在有多少個任務(wù)有用,是我的一個調(diào)度機制。比如說我現(xiàn)在正在播一個電視臺上面的節(jié)目,播完之后立刻點播給最終觀看的人,這時候他的優(yōu)先級別就高一些。有一些電視劇或者電影,大家還沒有看到它的時候,版權(quán)方已經(jīng)把介質(zhì)給我了,我還得偷偷藏一下,不能讓大家看到。

最后一個是核心的非常大的MateDB的管理,我們的MateDB是一個基于傳統(tǒng)的數(shù)據(jù)庫去做磁盤的存儲。但是,實際上是一個分布式的內(nèi)存數(shù)據(jù)庫。它的作用就是我的每一個視頻是什么,它現(xiàn)在在哪些地方存著,很像文件的分區(qū)表放在這里面。但是除此之外,這個MateDB還要做一些提前的工作,里面有去重、里面有版權(quán),去重的概念就是我希望不要存多份,一個人一上來,就是我希望他當(dāng)時是不是轉(zhuǎn)好碼了。其次還要做版權(quán),版權(quán)是個很復(fù)雜的事。第一個比較重的版權(quán),就比如《大話西游》的版權(quán),或者我沒有《大話西游》的版權(quán),用戶給我一個,我怎么知道它是《大話西游》,需要從里面抽音頻和視頻比對,這個是需要CPU大容量計算的工作。

最后一件事比較簡單一些,就是跨網(wǎng)絡(luò)、跨機房、跨運營商把我計算完的數(shù)據(jù)分發(fā)出去。后面我會講存儲的模型,但是一般來講,用戶在一個地方轉(zhuǎn)好碼之后,最復(fù)雜的事情是怎么傳到另外一個運營商的點去,從中間要選好走的路徑,這是比較重要的,這是我們的計算部分。

對于視頻計算而言,也就是說對于云計算里面純粹計算的部分,在視頻云里面有以下幾點,我認為是未來可以不斷優(yōu)化的地方。第一塊,就是視頻轉(zhuǎn)碼會有一些很不一樣的優(yōu)化,現(xiàn)在第一種優(yōu)化是我們以前把視頻轉(zhuǎn)碼出來了之后,變成一個格式。但是今天我們可以拿一部移動設(shè)備去看它,我手上拿的是一個iPhone,它只支持MP4,只支持TS的流。在這種情況下,我們的轉(zhuǎn)碼提前要對各種各樣的輸出做好優(yōu)化。如果優(yōu)化做得好的話,那么在最終交付的時候,兼容的設(shè)備就足夠多,同時你交付出去的時候,所損耗的CPU會更少。這是一個。

第二件事情,是我們現(xiàn)在已經(jīng)開始在研究,這是前段時間和一個朋友討論的東西,就是快速轉(zhuǎn)碼,這個快速轉(zhuǎn)碼是一個很不一樣的事情。就是FMpag把一個流轉(zhuǎn)成目標(biāo)的格式,但是如果我把.263變成.264,還有一種模型叫翻譯。這樣,去做編碼的次數(shù)會少很多,會節(jié)約非常多的CPU。

所以,第二件事就是視頻計算大IO的優(yōu)化,這件事現(xiàn)在來看還是一個不好去做的事情。我們提出過三種解決方案,第一種解決方案是用內(nèi)存去替代磁盤,方法很好,我們甚至準(zhǔn)備了128G,甚至更大的內(nèi)存去做這件事,但是麻煩的事情是用戶上傳上來的東西在一臺機器處理的時候有時候會超過128G,這件事就不是特別可行,也試過SSD,SSD大的問題是SSD讀非常好,但是如果既寫又讀的時候性能非常差,所以硬盤IO,我們還沒有一個很好的機制,但也許我認為這是一個未來去做計算時候硬盤上面可優(yōu)化的一個很好的點,誰解決它,誰會在這個上面拿到很多先機。

第三個是我們自己分布式的MateDB的改造,現(xiàn)在的MateDB是一個一個核心放在那,現(xiàn)在我看異地復(fù)制和同步機制確實也不太好,也在內(nèi)部做一些這方面的改造機制,主要還是看速度有多快。從計算來講,我認為未來的純粹在云端的計算,像EC2這樣的產(chǎn)品,差的就是存儲,它的本地存儲太小了。云計算的計算模型,我認為更多是類似Hadoop的模型,就是機器的CPU用于本地存儲去做計算,最后獲得最大的收益,這樣的云計算模型是一個最好的模型。但是EC2還沒有很好的解決這個問題,如果我們的某一個公共的純解決方案能夠解決好這個問題,我相信會有非常非常不同的收益。

土豆的存儲與交付

再講講我們的存儲和交付。土豆的存儲和交付是這樣一個模型,首先,它把自己的存儲在一個運營商內(nèi),當(dāng)然一個運營商內(nèi)這樣的小環(huán)也可以有多個,我們管這樣的環(huán)叫小組,比如說北方電信和南方北方是兩個小組,每個小組里面有若干個服務(wù)器,對于我們而言,剛才所闡述的一個小組有全土豆的全部視頻文件是在哪里的分區(qū)表,我們會有若干個小組,為什么?因為小組之間的交換很難,所以會有若干個。小組之間我們有一組機器在不同的IDC里面打出特殊的通道來,去做熱交換,我們會有一組調(diào)度專門去做熱交換。最上面的這個調(diào)度,它的作用是每當(dāng)一個用戶決定訪問里面一個視頻的時候,他先看這個土豆到哪個小組快,第二再看這個小組到哪個數(shù)據(jù)中心快,再看看那個數(shù)據(jù)中心里面有沒有文件去完成這個操作。所以,在土豆的計算非常簡單,就是純粹文件編解碼的工作,但是它最核心的部分還在存儲和交付的地方。存儲,它整個把互聯(lián)網(wǎng)當(dāng)做一個大的計算集群,虛擬變成了一套存儲系統(tǒng)。

首先,會有一個小組,一個小組里面擁有完整的一份,然后里面若干個Data,這里面也分成截然不同的機制,每一臺機器里面都有也許一半,也許一小部分,底下的這個我們管它叫備份,但是它是全部的存儲文件。我們的熱交換知道現(xiàn)在的磁盤的IO上面,哪些文件被用戶觀看得最多,然后我們通過熱交換把熱點放到這個節(jié)點里面的熱點部分。舉個例子,現(xiàn)在最熱播的《甄嬛傳》,在所有服務(wù)器所有硬盤的片區(qū)都有它,所以所有人就用最大量去獲取它。

我們還會有一部分的節(jié)點,這部分節(jié)點是一些中小運營商。比如說我們家所在的小區(qū)叫寬帶通,寬帶通這樣的運營商通常我們在他那布不了很大的節(jié)點,因為他的用戶索取量不是特別大。在這種狀況下,我們只在這點部署一些節(jié)點,他們只存儲熱點的東西,熱點的東西對于我們來講,它能夠支撐一個大的百分比的訪問量就OK了,剩下的還是跨自己的運營商,跑到大的完整虛擬節(jié)點去取。所以說在存儲部分,我們發(fā)現(xiàn)云計算已經(jīng)完全不同了,以前一臺計算機里面的硬盤在云計算里的試點變成了一臺服務(wù)器,我們在一個文件里的分區(qū)表變成了一個MateDB,原來的磁盤控制器在我們這點變成了一個調(diào)度器,文件系統(tǒng)在我看起來變成了云存儲。

最核心的地方,我們認為一個存儲,它既應(yīng)該是存儲,也應(yīng)該提供交付?;ヂ?lián)網(wǎng)最公共的HTTP的協(xié)議應(yīng)該是存儲協(xié)議的最主流協(xié)議,當(dāng)然我們還有更多的視頻協(xié)議,緩存是在節(jié)點級別的緩存,而不只是在內(nèi)存級別的緩存。未來,我認為云存儲一定是基于HTTP協(xié)議的大容量的存儲,最核心的地方還是存儲與交付能夠并行往前走,這樣的話,他才能夠解決我們現(xiàn)在的存儲容量很大,交付的時候,單一視頻或者說單一存儲IO比較密集時候的問題。

在土豆,我們認為云交付也是一個非常非常重要的部分,在這里面,云交付所去承擔(dān)的是走線,也就是把數(shù)據(jù)最終讀出來交給用戶的這么一個東西。對于未來來講,交付和存儲能夠混合起來,并且交付本身支持多個協(xié)議,這個協(xié)議是指假如我看的是一份文檔,那我拿PC下載下來,它就是一個word,基于內(nèi)容的多協(xié)議相結(jié)合的存儲是云交付的一個很有趣的特點。在視頻就是,我一個視頻存在存儲里面,你可以拿任何設(shè)備,通過任何特有的視頻協(xié)議去把它拿走,這是一個很有意思的話題。

在土豆而言,一切云計算都是圍繞在視頻上面的,里面這個視頻對外要支持多個平臺、多個協(xié)議、多個碼流讓用戶看到。用戶看不到我們的存儲、計算、交付這樣的東西,用戶看到的是多平臺、多協(xié)議、多個碼流去到土豆看視頻。

再總結(jié)一下,土豆的云視頻服務(wù),主要基于兩個入口。第一個入口,用戶可以簡單方便的上傳,并且把他的任何格式的東西給我們。在這里面,土豆的計算部分是特別優(yōu)化的云計算,首先,它不是通用的,是一個極其專用的做編解碼的云計算。其次,存儲和分發(fā)提供大容量的高效的云存儲和云交付,這非常重要。所以,對視頻而言,也就是對土豆網(wǎng)來講,存儲和高效支持多協(xié)議相結(jié)合的云視頻交付,是未來一個比較關(guān)鍵的工作,也是未來的一個愿景。

分享到

zhaohang

相關(guān)推薦