Flash群眾和您的實時流媒體
隨着流媒體服務針對有限數量的觀眾進行戰鬥和關注範圍的縮小,直播活動已成爲發行商內容戰略中的重要因素,而直播活動是受衆參與度的成熟推動力。 然而,與直播流媒體能夠可靠地交付觀眾一樣,可靠地大規模直播活動也面臨一系列挑戰。 內容交付網路(CDN)有助於提供按需可擴展性;但是,即使CDN也必須針對直播流進行優化。 最明顯的直播流媒體挑戰可能是“閃電人群”—當許多觀眾同時進入直播流媒體時就會出現這種現象—渴望趕上啟動或加班動作。 在6年NBA決賽比賽中,我們通過流媒體觀看了100,000多個體育賽事的典型觀眾行為,收視率從幾乎沒有人增長到第三季度的2.04萬觀眾的高峰。 收視率從不到10,000個會話躍升至第一小時的100萬多個,半場後的1.5萬多個,有時每分鐘增加100,000多個新觀眾。 這種快速擴展會給任何CDN帶來壓力。 但是,交付實時影片更具挑戰性。 任何中斷都可能導致播放中斷。正如我們網路上最近一次現場活動中的這個例子所示,“閃光人群”現象使得通過CDN提供影片比提供常規內容位元組更困難。
在本文中,我們將了解突發人群和其他挑戰,然後探討Verizon Media如何利用其在CDN領域多年的經驗來解決客戶的一些常見問題,使其成為交付高質量現場活動的正確選擇—無論是體育,音樂會,政治…或是首次登陸火星。
為什麼Live Stream暫存不同
透過網際網路傳遞直播事件需要使用一或多種ABR (自適應比特率)串流格式,例如MPEG-DASH,Apple HLS,Adobe HDS和Microsoft Smooth Streaming。 它通常依賴標準HTTP Web伺服器作為源站,並依賴CDN大規模分發內容。
我們在Verizon Media (現在稱為Edgio)的大型全球CDN擁有許多PoP和超過250 Tbps的容量,因此我們可以輕鬆擴展以應對大量流量高峰和突發人群。 然而,能力和規模只是等式的一部分。 在直播流媒體中,CDN與源伺服器和客戶端之間的交互能力尤其重要,同時可擴展以滿足大量觀看觀眾的需求。
實時流量配置文件是唯一的,與其他任何內容都有明顯不同,即使是VOD,因為在實時事件中,編碼器會不斷向源伺服器發布新的媒體段(通常持續時間為2–10秒),並且CDN總是提取新發布的內容並通過網路傳播。 此過程需要非零的時間量;因此無法避免某些延遲。 但是,CDN在填充暫存和處理客戶端請求(更重要的是,在啟動暫存填充過程之前)方面必須極其高效和智能。 理想情況下,CDN應能夠將原始伺服器上的負載保持在絕對最低水平,同時避免給整個媒體管道增加太多額外延遲。 這可確保客戶端最終用戶享受流暢而連續的回放。
我們的CDN具有廣泛的功能,可讓我們在快取填滿程序完成之前,期間及之後,最大程度地發揮原始伺服器卸載的功能,並改善終端使用者體驗。
即時串流快取最佳化
如下圖所示,我們的媒體平臺採用了一系列可調優化,以實現快速可靠的直播流媒體交付。 在以下各節中,我們將解釋它們的重要性及其工作原理。
原點屏蔽
首先也是最重要的是,源站屏蔽是CDN邊緣伺服器和源站之間的額外暫存層。 我們在其中一個POP中創建虛擬源站,該POP依次管理來自所有其他POP位置的所有請求。 當CDN邊緣伺服器收到用戶的請求但無法滿足來自暫存的請求時,邊緣伺服器將從屏蔽彈出中獲取對象,而不是直接從客戶源站中提取。 作為全球CDN,我們為客戶提供了為每個地區(美國,歐盟,亞洲等)指定單個彈出作為屏蔽或屏蔽彈出的選項。
Origin Shield可幫助我們在出現大量流量高峰和突發人群時保護源伺服器。 但是,僅處理直播流媒體的獨特流量配置文件可能還不夠。
部分高速暫存共享
在直播流媒體中,典型的模式是多個客戶端請求尚未在暫存中的流媒體段。 CDN可以通過多種方式處理這些請求。 首先,它可以同時向源站發送多個高速緩存填充請求(每個新客戶端的請求一個),這有助於最小化延遲並優化最終用戶體驗。 第二個選項是傳送單一快取填滿要求,不需延遲地為第一個用戶端提供服務,但讓其他用戶端等待,直到完整檔案載入快取為止(此方法的目的是將原始伺服器的負載降至最低)。
不幸的是,這兩種選擇都不是一個特別好的解決辦法。
相反,我們的方法在這兩個選項之間達成平衡,允許多個客戶端共享已在執行中的單個暫存填充,請求已部分包含在暫存中的同一內容。 部分快取共用可讓其他用戶端從預先存在的快取填滿中移除,因此影片內容一開始載入快取中,就能同時傳送到多個用戶端。 結果是:更快的啟動時間,更低的延遲,以及更低的原始伺服器負載。
高速暫存填充等待時間
客戶端請求影片文件和開始載入CDN彈出窗口之間有一段時間間隔。 這一時間點非常小(可能只需幾毫秒),但流媒體直播Flash人群會帶來非常重大的挑戰,因為它可能由數百甚至數千個請求組成。 在這種情況下,上述部分高速緩存共享功能尚未啓動。 通常情況下,這被視爲一個轉角情況,但由於現場直播的人羣激增,這種情況更有可能發生。 在此關鍵時刻,CDN可能會一次傳遞太多請求,從而使源伺服器不堪重負。
同一文件的多個請求將被集中以防止出現此問題,並且只向源伺服器發出一個請求。 暫存填充等待時間是一個虛擬等待空間,用於改善源站卸載並應對突發人群。 當單個請求的HTTP響應標頭到達並且一個請求開始從源伺服器接收文件時,可以與所有等待的池用戶共享高速暫存。 實際的“等待時間”(毫秒)是高度可配置的,可以根據特定的源站功能和客戶需求進行微調。
生成缺少的子請求
如果多個用戶請求相同的未暫存內容(如上所述),則第一個客戶端可能在慢速設備上,例如在3G連接上的智慧型手機。 這會損害所有其他客戶端,因爲緩存通常以客戶端吸收內容的速率填充。 為了避免這種情況,我們可以將暫存填充與可能緩慢/故障的第一個客戶端分離,並更快地從原始伺服器填充(以我們的最大速度)。 此功能也更可靠,因爲現在,即使初始客戶端斷開連接或某種原因導致連接斷開,緩存填充仍會繼續。 我們將此行爲描述爲對Miss.的生成子請求 此功能還會觸發整個內容的暫存填充,以滿足不同的位元組範圍請求,只需一次到源伺服器。 「遺漏」和「快取記憶體填滿等候時間」的「衍生子要求」在使用時相互補充,共同加速即時串流並改善影片開始和重新緩衝時間等指標。
其他即時串流CDN最佳化
熱歸檔
隨著直播流的收視率迅速擴大,以前可輕鬆處理500萬觀眾負載的暫存伺服器在幾分鐘內觀看人數翻三倍或四倍時突然不堪重負。 此外,觀眾可能會集中在特定地理區域,通常是熱門體育或政治活動的觀眾。 對於許多體育直播或錦標賽而言,觀眾在參與團隊周圍的市場中的關注度可能會顯著提高。
發生這種情況時,需要將實時流段快速復制到受影響POP內的其他伺服器,以幫助分散負載。
熱歸檔是一種自動檢測極受歡迎的內容並將其復制到多個暫存伺服器(如直播流段)的過程,以處理大量需求。 這是內容交付網路中的常見做法,但這些傳播的速度最終至關重要。 這是Edgio持續關注的一個領域。 我們最近將復制速度從5秒降低到大約1–2秒。 除了直播流外,我們還可以在直播流中製作其他熱門內容,例如廣告。
容量和帶寬
容量和帶寬是指用於滿足直播流不可預測的需求的TAP額外容量。 正如沒有立方英寸可以替代肌肉車一樣,CDN也沒有可替代帶寬。 實施這些和其他高速暫存優化策略需要網路具有處理大規模直播流的容量和帶寬,同時平衡其他用戶對其施加的負載。
目前,我們網路上超過80%的內容是影片,其中很大一部分流量專門用於直播流。 我們在網路上提供了超過125,000場受管直播活動。 隨著直播流的普及,內容質量不斷提高,我們的網路容量將在2019年底達到100 Tbps。 我們的網路擁有140多個全球POP和5,000個互連或最後一英里連接。
一切都能協同工作
直播流媒體的繁重需求將使您的技術達到極限。 要向成千上萬甚至數百萬人提供流暢的流媒體,需要特殊的暫存配置。 源站屏蔽,部分高速暫存共享,高速暫存填充等待時間,生成錯過子請求和熱歸檔的組合是強大的功能,可根據您獨特的實時流基礎設施和需求量身定制。 它們使我們的CDN能夠為實時流式傳輸事件提供最佳性能,而不管對象是已在暫存中,還是只是部分在暫存中,或者暫存填充尚未開始且仍處於待處理狀態—即使是在請求確實是客戶對特定內容的第一個請求的情況下也是如此。
CDN是實時影片基礎設施中的重要組件。 它的分布式伺服器系統將內容交付給用戶,因為它考慮到地理位置和網路位置以及源站本身,以最快,最可靠的方式交付內容。 然而,針對直播交付優化CDN的技術與其他也受益於CDN的應用程式(包括影片點播(VOD))有很大差異。 借助正確的高速暫存優化和充足的擴展空間,CDN能夠應對直播流中固有的波動和可變性。
我們的CDN提供成熟,久經考驗的內容分發功能和優化,可最大限度地減少源站伺服器上的負載,同時向觀眾大規模交付直播流。 我們的直播影片暫存優化功能(其中許多可針對個人客戶進行調整)可協同工作,以保護觀眾的需求,避免您的影片基礎設施受到壓倒。