直播CDN原理 解決延時 連麥問題

2022-01-12 20:18:59 字數 3038 閱讀 8618

正如上圖所示,整個直播流程分為以下幾個關鍵步驟:

那麼接下來了解一下cdn的技術原理。

cdn的全稱為content delivery network,即內容分發網路,是乙個策略性部署的整體系統,主要用來解決由於網路頻寬小、使用者訪問量大、網點分布不均勻等導致使用者訪問**速度慢的問題。

cdn的技術原理見上圖,具體實現是通過在現有的網路中,增加一層新的網路架構,將**的內容發布到離使用者最近的網路節點上,這樣使用者可以就近獲取所需的內容,解決之前網路擁塞、訪問延遲高的問題,提高使用者體驗。

對於直播來說,則將web伺服器換作主播客戶端,如下圖所示。

另外,cdn直播中常用的流**協議包括rtmp、hls、http flv等。

http flv則是將rtmp封裝在http協議之上的,可以更好的穿透防火牆等。

cdn架構設計比較複雜,並且不同的cdn廠商,對其架構進行不斷的優化,所以架構也不能統一而論。這裡只是對一些基本的架構進行簡單的剖析。

cdn主要包含源站、快取伺服器、智慧型dns、客戶端等幾個主要組成部分。

源站是指發布內容的原始站點。新增、刪除和更改**的檔案,都是在源站上進行的;另外快取伺服器所抓取的物件也全部來自於源站。對於直播來說,源站為主播客戶端。

快取伺服器是直接提供給使用者訪問的站點資源,由一台或數台伺服器組成;當使用者發起訪問時,他的訪問請求被智慧型dns定位到離他較近的快取伺服器。如果使用者所請求的內容剛好在快取裡面,則直接把內容返還給使用者;如果訪問所需的內容沒有被快取,則快取伺服器向鄰近的快取伺服器或直接向源站抓取內容,然後再返還給使用者。

智慧型dns是整個cdn技術的核心,它主要根據使用者的**,以及當前快取伺服器的負載情況等,將其訪問請求指向離使用者比較近且負載較小的快取伺服器。通過智慧型dns解析,讓使用者訪問同服務商下、負載較小的伺服器,可以消除網路訪問慢的問題,達到加速作用。

客戶端即發起訪問的普通使用者。對於直播來說,就是觀眾客戶端。

對於直播來說,cdn整體架構如下圖:

主要流程為:

主播開始進行直播,向智慧型dns傳送解析請求;

智慧型dns返回最優cdn節點ip位址;

智慧型dns返回最優cdn節點ip位址;

說了這麼多cdn的技術和原理,不知道您看累了沒,那麼cdn直播是否萬事大吉了呢?接下來分析一下cdn的難點和解決方案。

假設在該鏈路上有快取,時間為tmax_cache ,那麼從主播到觀眾的延時tdelay為:

另外,資料傳輸過程中還涉及到邏輯上的互動,例如包的重傳以及確認,以及快取上的一些邏輯等,會在這個基礎上又增加很多。

那麼來簡單估算一下大概的網路延時。眾所周知,光在真空中的速度約為300,000km/s,而在其他介質中光速會大大降低,所以在普通光纖中,工程上一般認為傳輸速度是200,000km/s。從現實上來說,可以參考如下:

路線 距離(km) 往返時延(ms)

北京到上海 1,200 12

北京到紐約 11,000 110

赤道周長 40,000 400

所以說,在節點較少、網路情況較好的情況下,那麼網路延時對應也是最小,加上一定的快取,可以控制延時在1s~2s左右。但是節點多、網路差的情況下,網路延時會對應增大,經驗來說延時可以達到15s以上。

cdn直播中用到的rtmp、hls、http flv等協議都是在tcp的基礎之上。tcp乙個很重要的特性是可靠性,即不會發生資料丟失的問題。為了保證可靠性,tcp在傳輸過程中有3次握手,見下圖。首先客戶端會向服務端傳送連線請求,服務端同意後,客戶端會確認這次連線。這就是3次握手。接著,客戶端就開始傳送資料,每次傳送一批資料,得到服務端的「收到」確認後,繼續傳送下一批。tcp為了保證傳到,會有自動重傳機制。如果傳輸中發生了丟包,沒有收到對端發出的「收到」訊號,那麼就會自動重傳丟失的包,一直到超時。

解決方案

直播中,主播如果要與使用者互動,常見有兩種方式:

由於連麥方式比較複雜,這裡進行詳細分析。

前面提到,rtmp是目前主播中最常用的協議,使用rtmp協議,可以實現最簡單的一種連麥方式,如下圖。

當有連麥者時,則主播端和連麥者端,都分別推一路rtmp流到cdn,cdn再將這兩路rtmp流傳送給觀眾端,觀眾端將兩路rtmp流合成為乙個畫面。這種方式的優點是實現簡單,但缺點比較多:

這樣看來,這種方式弊大於利,基本不可取。

這種方式的優點有兩個,一是主播和連麥者之間使用p2p,網路質量較好,延遲較小,保證了兩者之間互動不會有非常大的延時;二是可以解決聲音的干擾問題,消除回聲。缺點是:

綜合來說,p2p方式在一定程度上可以解決連麥的問題。

這種方式的優缺點如下:

優點沒有聲音干擾問題;

可以支援多個連麥者連麥;

缺點cdn合圖後的布局難控制;

據目前所知,還沒有cdn支援這種方案;

解決方案

**自:

直播軟體搭建技術原理 CDN 與直播

直播軟體搭建技術原理 cdn 與直播 很多直播都是基於 cdn 來實現的。而通過聲網的服務,或基於聲網sdk與 cdn 結合,還可以實現在直播中的連麥互動 白板同步等強調實時性的場景。本文源自社群投稿,介紹了該場景下的一些基礎知識。如大家存有疑問,可以與作者交流。所以為了確認範圍,可以先了解排查下b...

CDN原理解析

首先,讓我們來看一下傳統的internet網路的基本結構和資料傳輸情況,如下圖所示。internet 網路基本結構及資料傳輸方式 根據傳統的網路結構,使用者的訪問流程基本如下 1.使用者在自己的瀏覽器中輸入要訪問的 的網域名稱 2.瀏覽器向本地dns請求對該網域名稱的解析 3.本地dns將請求發到 ...

cdn原理的理解

今天要做個小筆記,一下對cdn的一些理解,在工作中我們經常用到cdn 訪問,那他的原理是什麼不知道大家有沒有考慮過 cdn的基本原理是廣泛採用各種快取伺服器,將這些快取伺服器分布到使用者訪問相對集中的地區或網路中,在使用者訪問 時,利用全域性負載技術將使用者的訪問指向距離最近的工作正常的快取伺服器上...