鬥魚是怎麼做到十幾萬人超清直播的,帶寬夠嗎?


去年回答這個問題的時候對cdn的理解還在cdn只緩存靜態內容的概念上,所以我以為視頻直播加速不是用的CDN技術,事實證明還是太年輕,本來不懂不應該出來瞎說,但是抱著相互學習的態度,我就把這個問題重新回答一下。

視頻直播要做到十幾萬人觀看,加速的方法很多,但是最主要的還是CDN加速,以前CDN加速的內容主要是靜態內容,比如圖片,現在CDN加速的內容越來越全面,關於CDN的原理我就不多介紹了,就通過一個案例來分析加速原理。

你家在西安,一個LOL職業玩家每天在鬥魚直播遊戲,他直播的地方在北京,每次他開直播以後,他直播的視頻數據會發送到鬥魚公司的伺服器,因為鬥魚用的是網宿的CDN服務,所以,這個直播的視頻數據又會同時上傳到網宿的CDN緩存伺服器上,而這些緩存伺服器的地理位置遍布全國,不管有沒有人看這個直播,這個視頻數據都會上傳到各地的伺服器緩存起來,所以這個視頻直播的數據會上傳到網宿在西安的伺服器,如果你打開鬥魚觀看這個職業玩家的直播,其實視頻是來自西安的伺服器的,所以速度特別快,只要保證這個視頻實時同步到西安的伺服器上,那麼西安市的鬥魚觀看者都會感覺特別快,而不管有沒有人觀看,這個視頻數據都會上傳,但是有一個好處是這些數據不用再伺服器上面存在很長時間,因為直播是實時的,播放過的視頻就不會再有請求,所有視頻數據可以很快刪除掉,對緩存伺服器的壓力也不大,而靜態內容卻要長時間保存在緩存伺服器上,其實這也是P2P的思想,我原答案說的是利用其它用戶緩存的數據,這適用於除直播以外的其他服務,但是正是因為直播需要實時,可靠,所有才採用緩存伺服器來充當其它用戶的角色。

其實很多技術的思想都是借鑒生活中的。再說一個不相關的例子,京東上面很多東西都是第二天到,你可能會想速度怎麼會那麼快,其實京東在全國各大城市都有他的倉庫,每個倉庫會存放一些銷量好的貨物,你提交訂單後,可能貨物就是在你那個城市的倉庫取的,不管有沒有人買,很多東西都會同時存在這些倉庫,這樣只要有需求,就可以本地很快送貨。

------------以下是以前回復的答案

補充:剛看完鬥魚查了下鬥魚網站的訪問量,平均每天80w,這是一天的數據,同時在線人數肯定不會過半,也就是40w,而整個網站上千的主播直播,所以這些數據肯定是假的,提供的數據應該是真實數據的10到100倍不等。

我自己的理解,不知道對不對。

首先說的直播其實是有時間誤差的,一般會差幾秒到幾十秒不等,打開鏈接的時間不同所導致,不信你可以把你所觀看直播的網頁刷新一下你會發現在播放你剛才看過的片段。

不是所有的數據都是直接請求鬥魚的伺服器,播放靠後的人觀看的視頻數據可能會是播放靠前的用戶上傳提供的,比如3:20之前你看過了,但視頻數據還緩存在網頁,那後打開網頁的人的視頻數據可能會從你的電腦獲取,實現用戶之間的共享,所以有時候你觀看視頻可能下載和上傳的速度都好幾百k;

還有就是那個用戶數是假的,幾十萬人觀看一個直播是以為所有人都是腦殘嗎,遊戲同事在線人都沒1000w,


自己猜測:

因為分流了。你進同一個直播間分流到不同線路。CDN。

鬥魚和戰旗動不動就100萬人,200萬人看直播。搞得我以為中國有60億人。


呃~所謂的「看超清直播」,相對來說~還好!有一個CDN分流,其實已經算是成熟技術了。

其實相對來說更大的難點是在於一些不太好弄CDN的東西(當然我指的是第三方CDN服務)。你說到的看超清也就CDN幫忙轉存分發一下視頻流,大部分時候都不會出現任何問題。但是相比來說某一個大主播開播時,瞬間開湧入的那幾萬個人,在十幾分鐘內帶來的上百萬的數據請求才是難搞定的。


把視頻源數據同步到很多機器上面,然後看的人就近訪問這些機器,就分攤開了


世界上有個叫CDN的服務,怎麼會帶寬不夠?


1。人多了卡,現在用手機觀看很卡,不要說是我自己網路的事,我下載速度基本在8MB左右。

2。根據謠傳:只有1萬幾千人,DOUYU把人數乘了10。不過我估計人數肯定有水份,因為幾十萬人看的話,彈幕應該滿到看不到直播原屏幕。


沒有用到組播嗎?


誰說不卡,我看卡了好幾次了,現在感覺好多了,不過人數呵呵。


推薦閱讀:

docker和virtualenv有什麼區別?
在採購之前如何評估伺服器的性能夠不夠,主要是CPU?
IBM 和 Google 等公司組建的 OpenPower 聯盟,會有何影響?
蘋果要求App強制使用https 。如何把伺服器的 http 協議升級到https 協議?
豆瓣網目前一共用了多少台伺服器?

TAG:伺服器 | 計算機網路 | 計算機科學 | 鬥魚直播 |