當我們點開一個媒體和娛樂網(wǎng)站,沉浸在我們感興趣的視頻中,又或者在直播視頻中進行著實時的互動,我們可能只是單純覺得:這一網(wǎng)頁,這些視頻或直播畫面,就擺在我們面前,我們只是通過屏幕進行觀看。就好比我們到達了一個展館,直接觀看著展柜中的事物一樣。
然而現(xiàn)實情況是,視頻網(wǎng)站的源服務器可能離我們非常遠。也許,這些網(wǎng)站可以將視頻緩存在離我們較近的網(wǎng)絡節(jié)點上。但要從這些節(jié)點為我們以及其他用戶同時提供服務,特別是直播畫面,卻并不如我們想象般那樣簡單。視頻源到用戶的“端到端”傳輸是每一個媒體和娛樂網(wǎng)站都需要面對的難關。
延遲無處不在
觀看量影響著網(wǎng)站的效益,因此用戶的觀看體驗是至關重要的。沒有人會愿意持續(xù)觀看頻繁卡頓的視頻,并且每一個人都希望看到實時發(fā)生的直播畫面。然而,視頻傳輸?shù)拿恳粋€環(huán)節(jié)都會有延遲:從內(nèi)容源記錄視頻并編碼,格式轉換,再到網(wǎng)絡傳輸(通常是借助CDN)內(nèi)容交付,客戶端播放器解碼。
為了減少端到端延遲,我們有著很多種編碼方式。從傳統(tǒng)的分段交付再到現(xiàn)在的分塊傳輸編碼,延遲已經(jīng)從20-30s降低到了5-10s。然而想在此基礎上更進一步地降低延遲,則難上加難,原因就在于……
CDN增加了延遲
CDN增加延遲?這聽起來很不可思議。CDN的作用,即是通過緩存網(wǎng)站交付內(nèi)容,智能調度路由,為不同地方的訪問者降低延遲。為什么到了視頻與直播領域,CDN反而會增加延遲呢?
因為當多個人同時請求同一個資源時,通常只有一臺設備可以直接串流視頻。只有當CDN將整個視頻文件拉入緩存以后,它才能為其他的設備提供服務。換句話說,大部分的客戶端都需要在CDN上等待分段緩沖。
不幸的是,我們一般不能強制CDN去避免這種緩沖延遲。因為CDN數(shù)據(jù)中心的多臺服務器是使用“互斥鎖”進行相互協(xié)調的,它限制一定時間內(nèi)只有一臺CDN服務器可以從源網(wǎng)站獲取特定文件。如果我們?nèi)∠诉@樣的“互斥鎖”,成千上萬的人瀏覽視頻就意味著會有許多CDN服務器向源服務器請求內(nèi)容,很容易就會導致源服務器超載癱瘓。
高額的成本是一座大山
為了減少延遲,我們當然可以增加帶寬,部署更多的網(wǎng)站服務器。然而部署一個新的服務器中心并向各地訪問者提供服務,尤其是視頻與直播服務,從硬件設施到出口流量帶寬都會帶來非常高額的成本。更不用說當其中一個甚至多個服務器受到攻擊時,會有多少人的觀看體驗受到影響。若無法妥善處理好網(wǎng)絡攻擊,平臺的收益就會急劇下降(甚至無法營運)。而無論是通過硬件設施還是通過互聯(lián)網(wǎng)服務保護平臺,都需要消耗大量資金與精力。
視頻“端到端”,真的很困難。但正如Cloudflare一直為互聯(lián)網(wǎng)性能提升和安全防護提供產(chǎn)品服務一樣,Cloudflare也為網(wǎng)絡媒體和娛樂服務商提供了一系列解決方案。
Cloudflare解決方案
1并行流加速
通過對緩存基礎結構進行深入的更改,Cloudflare刪除了緩存鎖,并使多個客戶端可以同時且安全地讀取視頻。
2智能視頻路由
Cloudflare維護著一個全球私有骨干網(wǎng),使它能夠以最不擁塞,最快的路徑將視頻內(nèi)容路由到觀眾。Argo智能路由使用實時數(shù)據(jù)分析來找出最不擁塞的網(wǎng)絡路徑,從而路由您的內(nèi)容,并確保快速的視頻播放。
3節(jié)省帶寬費用
在為內(nèi)容交付提供商提供視頻服務時,許多存儲提供商都會收取額外的帶寬費用。Cloudflare是帶寬聯(lián)盟的創(chuàng)始人,可以為您降低或消除向Cloudflare數(shù)據(jù)中心的數(shù)據(jù)出口成本。
4構建高級無服務器功能
Cloudflare Workers使您可以通過構建可部署在世界任何地方的自定義無服務器功能來自定義媒體交付。使用Workers,您可以為需從區(qū)域存儲庫提供服務的視頻內(nèi)容構建特定于地理位置的路由。
5安全加密網(wǎng)絡
默認情況下,Cloudflare的網(wǎng)絡是通過SSL/TLS加密的。我們對每個數(shù)據(jù)中心進行實時清理,以確保網(wǎng)站運行的可靠性并能夠抵御大型攻擊。Spectrum為RTMP服務器提供可靠和安全的實時饋送。
Cloudflare的解決方案超出了基本的視頻交付范圍,使開發(fā)人員能夠使用高級無服務器功能自定義視頻交付,以實現(xiàn)最高保真度和最低延遲。