ut聊天交友網站七牛雲於6月底發布了一個針對視頻直播的實時流網絡LiveNet和完整的直播雲解決方案,很多開發者對這個網絡和解決方案的細節和使用場景非常感興趣。
結合該實時流網絡LiveNet和直播雲解決方案的實踐,我們將用七篇文章,更系統化地介紹當下大熱的視頻直播各環節的關鍵技術,幫助視頻直播創業者們更全面、深入地了解視頻直播技術,更好地技術選型。
本系列文章大綱如下:
(一)採集
(二)處理
(四)推流和傳輸
(五)現代播放器原理
(六)延遲優化
(七)SDK性能測試模型
在上一期的處理篇中,我們介紹了講解編碼和封裝。本篇是《解密視頻直播技術》系列之四:推流和傳輸。推流是直播的第一公里,直播的推流對這個直播鏈路影響非常大,如果推流的網絡不穩定,無論我們如何做優化,觀眾的體驗都會很糟糕。所以也是我們排查問題的第一步,如何系統地解決這類問題需要我們對相關理論有基礎的認識。
推送協議
下面就先介紹一下都有哪些推送協議,他們在直播領域的現狀和優缺點。
RTMP
WebRTC
基於UDP的私有協議
1RTMP
RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的首字母縮寫。該協議基於TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協議,主要用來在Flash/AIR平台和支持RTMP協議的流媒體/交互伺服器之間進行音視頻和數據通信。支持該協議的軟體包括Adobe MediaServer/Ultrant Media Server/red5等。
RTMP是目前主流的流媒體傳輸協議,廣泛用於直播領域,可以說市面上絕大多數的直播產品都採用了這個協議:
優點
CDN支持良好,主流的CDN廠商都支持
協議簡單,在各平台上實現容易
缺點
基於TCP,傳輸成本高,在弱網環境丟包率高的情況下問題顯著
不支持瀏覽器推送
Adobe私有協議,Adobe已經不再更新
2WebRTC
WebRTC,名稱源自網頁即時通信(英語:Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的API。它於2011年6月1日開源並在Google、Mozilla、Opera支持下被納入全球資訊網聯盟的W3C推薦標準。
目前主要應用於視頻會議和連麥中,協議分層如下:
UT聊天室- UThome網際空間, ut聊天室-, ut聊天室, ut聊天大廳室, ut聊天大廳南部, ut聊天大廳北部人, ut聊天大廳中部, ut聊天大廳
W3C標準,主流瀏覽器支持程度高
Google在背後支撐,並在各平台有參考實現
底層基於SRTP和UDP,弱網情況優化空間大
可以實現點對點通信,通信雙方延時低
ICE,STUN,TURN傳統CDN沒有類似的服務提供
3基於UDP的私有協議
有些直播應用會使用UDP做為底層協議開發自己的私有協議,因為UDP在弱網環境下的優勢通過一些定製化的調優可以達到比較好的弱網優化效果,但同樣因為是私有協議也勢必有現實問題:
更多空間進行定製化優化
開發成本高
CDN不友好,需要自建CDN或者和CDN達成協議
獨立作戰,無法和社區一起演進
傳輸網絡
我們推送出去的流媒體需要傳輸到觀眾,整個這個鏈路就是傳輸網絡,類比貨運物流就是從出發地到目的地見的所有路程了,如果道路的容量不夠,會引發堵車也就是網絡擁塞,這時我們會改變路程也就是所謂的智能調度,但是傳輸網絡會站在全局的角度進行調度,所以會比原子世界的調度有更好的效果,可以想像有一個上帝在天空中俯視出發地和目的地間的所有的路況信息,而且還是實時的,然後給出你一條明路,何等的神奇,但這些我們在LiveNet中都已經實現了。
這裡先回顧一下傳統的內容分髮網絡。
為什麼要有內容分髮網絡,內容分髮網絡的由來
網際網路起源於美國軍方的一個內部網絡,Tim Berners-Lee是網際網路發明者之一,他很早就預見到在不久的將來網絡擁塞將成為網際網路發展的最大障礙,於是他提出了一個學術難題,要發明一種全新的、從根本上解決問題的方法來實現網際網路內容的無擁塞分發,這項學術難題最終催生出一種革新性的網際網路服務——CDN。當時Berners-Lee博士隔壁是TomLeighton教授的辦公室,一位麻省理工學院應用數學教授,他被Berners-Lee的挑戰激起了興趣。Letghton最終解決了這個難題並開始自己的商業計劃,成立了Akamai公司,成為世界上第一家CDN公司。
傳統CDN的架構
上圖是一個典型的CDN系統的三級部署示意圖,節點是CDN系統中的最基本部署單元,分為三級部署,中心節點、區域節點和邊緣節點,最上面一級是中心節點,中間一級是區域節點,邊緣節點地理位置分散,為用戶提供就近的內容訪問服務。
下面介紹一下CDN節點的分類,主要分成兩大類,骨幹節點和POP節點,骨幹節點又分為中心節點和區域節點:
骨幹節點
中心節點
區域節點
POP節點
邊緣節點
邏輯上來講,骨幹節點主要負責內容分發和邊緣節點未命中時進行回源,POP節點主要負責提供給用戶就近的內容訪問服務。但如果CDN網絡規模較大,邊緣節點直接向中心節點回源會給中間層的核心設備造成的壓力過大,在物理上引入區域節點,負責一個地理區域的管理,保存部分熱點數據。
直播傳輸網絡有別於傳統CDN的痛點
隨著Live時代的到來,直播成為當前CDN廠商的又一個主要的戰場,那麼Live時代CDN需要支持什麼樣的服務呢?
流媒體協議的支持,包括RTMP、HLS、HTTP-FLV等。
首屏秒開,從用戶點擊到播放控制在秒級以內
1~3延遲控制,從推流端到播放端,延遲控制在1~3秒之間
全球全網智能路由,可以利用整個CDN網絡內的所有節點為某一單一用戶服務,不受地域限制。隨著全球一體化進程不斷推進,跨區域、跨國家、跨洲的直播正變為常態,很可能主播在歐美,而用戶在亞洲。
天級別的節點按需增加,中國公司出海已成大勢,CDN需要更多的海外節點,如今比拼的更多的是海外節點可以快速部署,從提出節點增加需求到節點入網提供服務,需要達到一天之內,對CDN運維和規劃提出非常高的要求。原有的月級別規劃和入網滿足不了先進的要求。
傳統CDN的鏈路路由
CDN基於樹狀網絡拓撲結構,每一層都有GSLB(Global Server Load Balancing)用於同一層內的多個CDN節點負載均衡,這樣有什麼好處呢?
前面提到的眾多CDN的應用場景中,網頁加速、視頻加速、文件傳輸加速,都是同時依賴GSLB和Cache系統的,Cache系統是整個CDN系統中的成本所在,設計樹形結構可以最大化的節省Cache系統的資本投入。因為只有中心節點需要保持機會所有的Cache副本,向下逐級減少,到了邊緣節點只需要少量的熱點Cache就可以命中大部分CDN訪問請求,這樣極大的降低了CDN網絡的成本,也符合當時CDN用戶的需求,可謂雙贏。但是到了Live時代,直播業務是流式業務,很少涉及到Cache系統,基本都是播完就可以釋放掉存儲資源,即使因為政策原因有存儲的需求也都是冷存儲,對於存儲的投入相對非常低廉,而且不要求存儲在所有節點中,只要保證數據可回溯,可用即可。
我們看看樹狀網絡拓撲,用戶的鏈路選擇數量是有限的,如下圖,用戶在某一個區域內可選擇的鏈路數是:2*5=10
用戶在某一區域內,則GSLB(通常在邊緣節點這一層是Smart DNS)會把用戶路由到該區域內的某個邊緣節點,上一層又會路由到某個區域節點(這裡的GSLB通常是內部的負載均衡器),最後又回溯到中心節點,中心節點會連結源站。
這裡的假設是:
用戶能訪問的最快節點一定是該區域內的邊緣節點,如果該區域沒有邊緣節點則最快的一定是邏輯相鄰的區域內的邊緣節點。
邊緣節點能訪問的最快節點一定是該區域內的區域節點,一定不會是其他區域的節點。
區域節點到中心節點一定是最快的,這個鏈路的速度和帶寬都是最優的。
但實際真的如此麼?引入了如此多的假設真的正確麼?
實際上就算理論上我們可以證明以上假設有效,但是節點規劃和區域配置大都依賴於人的設計和規劃,我們知道人多是不靠譜的,而且就算當時區域規劃正確,誰能保證這些靜態的網絡規劃不會因為鋪設了一條光纖或者因為某些IDC壓力過大而發生了改變呢?所以我們可以跳出樹狀網絡拓撲結構的桎梏,探索新的適合直播加速的網絡拓撲結構。
為了簡璁陪酊疑鼽蘢竷挼u路限制,激活整理網絡的能力,我們可以把上述的節點變成網狀網絡拓撲結構:
我們看到一旦我們把網絡結構改成了網狀結構,則用戶的可選擇鏈路變為:無向圖的指定兩點間的所有路徑,學過圖論的同學都知道,數量驚人。
系統可以通過智能路由選擇任何一個最快的鏈路而不用依賴於系統部署時過時的人工規劃,無論是某些鏈路間增加了光纖或者某個IDC壓力過大都可以實時的反映到整理網絡中,幫助用戶實時推倒出最優鏈路。這時我們可以去掉前面的一些假設,通過機器而不是人類來時實時規劃網絡的鏈路路由,這種實時大規模的計算任務天生就不是人類的強項,我們應該交給更適合的物種。
CDN的擴容
前面提到中國公司的出海已成大勢,CDN海外節點的需求越來越大,遇到這種情況需要CDN廠商在新的區域部署新的骨幹網和邊緣節點,需要做詳細的網絡規劃。時代發生變化,原來CDN用戶都是企業級用戶,本身業務線的疊代周期較長,有較長時間的規劃,留給CDN廠商的時間也比較多。而網際網路公司講究的是速度,雙周疊代已成常態,這裡面涉及到成本和響應速度的矛盾,如果提前部署節點可以更好的為這些網際網路公司服務,但是有較高的成本壓力,反之則無法響應這些快速發展的網際網路公司。
理想情況是,用戶提出需求,CDN廠商內部評估,當天給出反饋,當天部署,客戶當天就可以測試新區域的新節點。怎麼解決?
答案是基於網狀拓撲結構的對等網絡,在網狀拓撲結構中每個節點都是Peer,邏輯上每個節點提供的服務對等,不需要按區域設計複雜的網絡拓撲結構,節點上線後不需要複雜的開局過程,直接上線註冊節點信息,就可以對用戶提供服務了,結合虛擬化技術前後時間理論上可以控制在一天之內。
回歸本質:LiveNet
我們知道最早的網際網路就是網狀拓撲結構,後來才慢慢加入了骨幹網來解決各種各樣的問題,我們是時候該回歸本質,擁抱下一代Live分髮網絡:LiveNet。總結前面的討論,我們發現Live時代我們需要的內容分髮網絡是:
對Cache的要求沒有以前那麼高
對實時性的要求非常高
對節點運維的要求高,要更智能,儘量減少人工干預
對擴容這種運維事件響應度要求非常高
要做到如上幾點,我們需要:
去中心化,網狀拓撲
全球全網調度
節點無狀態,節點對等
智能運維
以上這些就是LiveNet設計時候的斟酌,讓運維更自動化,系統運行高度自治,依賴機器計算而不是人工判斷,下面分別介紹一下。
去中心,網狀拓撲
網狀拓撲結構是設計的根本和基礎,只有看清了我們對Cache需求的降低,網狀拓撲結構才更有優勢。
基於全球一張網,不在受限於區域網絡調度,將調度的範圍從區域網絡擴展到全球,全網內的節點都可以響應用戶的請求,參與鏈路路由,不再先由人工假設選定一部分節點進行路由,去掉人工干預,讓整個系統更智能。
LiveNet節點無狀態和節點對等都方便了運維,去掉了區域概念後的全球一張網讓整個拓撲結構變的異常複雜,如果各個節點間有先後依賴關係,勢必讓運維成為噩夢,需要專有的服務編排系統,同時也給擴容帶來困難,需要運維人員設計複雜的擴容方案,需要預演多次才敢在複雜的網絡拓撲中擴容。當時如果節點本身對等且無狀態,則運維和擴容都變的容易很多。
但整個系統在運行過程中還是會一些狀態和數據需要保持,比如某些Live內容需要落地回放的需求,這些通過久經考驗的七牛雲存儲來存儲。
智能運維建立在以上的「網狀拓撲結構的對等網絡」的基礎上會變的容易的多。可以方便的下線有問題的節點而不影響整個LiveNet網絡,可以方便快速的上線新節點,提升系統容量。通過節點的數據分析可以更好的了解整個網絡的整體狀態。
下面列舉部分LiveNet採用的智能運維方案,讓內容分髮網絡再次升級,以符合Live時代的要求。
監控節點健康狀況,實時下線有問題的節點
Failover機制,保證服務一直可用
快速擴容
LiveNet VS P2P
最後我們和P2P網絡做一個對比:
LiveNetP2PCDN網狀結構網狀結構樹狀結構對等網絡對等網絡異構網絡自有節點混合節點,部分自有自有節點鏈路多,穩定鏈路特別多,不穩定鏈路少,穩定擴容周期短擴容周期短擴容周期長節點可管理性強節點可管理性弱節點可管理性強節點質量好節點質量參差不齊節點質量好我們發現P2P方案,節點的可控性和鏈路的穩定性上還有很大提升空間,比較適合在實時性要求不高的場景使用、適合長尾需求,在Live的場景下面多是對實時性要求比較高的重度用戶,無法忍受頻繁的FailOver和節點質量參差不齊帶來的網絡抖動,但是如果是文件分發就比較適合用這種混合方案,可以有效降低CDN廠商成本,利用共享經濟提高資源利用率。
這篇介紹了推送和傳輸網絡部分,我們已經把流媒體送到了觀眾的終端中,下一步就是把它展現在螢幕上了,想了解這部分內容請繼續關注我們的下一篇內容。
ut聊天交友網站-視頻直播技術詳解之推流和傳輸
ut聊天交友網站七牛雲於6月底發布了一個針對視頻直播的實時流網絡LiveNet和完整的直播雲解決方案,很多開發者對這個網絡和解決方案的細節和使用場景非常感興趣。
結合該實時流網絡LiveNet和直播雲解決方案的實踐,我們將用七篇文章,更系統化地介紹當下大熱的視頻直播各環節的關鍵技術,幫助視頻直播創業者們更全面、深入地了解視頻直播技術,更好地技術選型。
本系列文章大綱如下:
(一)採集
(二)處理
(四)推流和傳輸
(五)現代播放器原理
(六)延遲優化
(七)SDK性能測試模型
在上一期的處理篇中,我們介紹了講解編碼和封裝。本篇是《解密視頻直播技術》系列之四:推流和傳輸。推流是直播的第一公里,直播的推流對這個直播鏈路影響非常大,如果推流的網絡不穩定,無論我們如何做優化,觀眾的體驗都會很糟糕。所以也是我們排查問題的第一步,如何系統地解決這類問題需要我們對相關理論有基礎的認識。
推送協議
下面就先介紹一下都有哪些推送協議,他們在直播領域的現狀和優缺點。
RTMP
WebRTC
基於UDP的私有協議
1RTMP
RTMP是Real Time Messaging Protocol(實時消息傳輸協議)的首字母縮寫。該協議基於TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協議,主要用來在Flash/AIR平台和支持RTMP協議的流媒體/交互伺服器之間進行音視頻和數據通信。支持該協議的軟體包括Adobe MediaServer/Ultrant Media Server/red5等。
RTMP是目前主流的流媒體傳輸協議,廣泛用於直播領域,可以說市面上絕大多數的直播產品都採用了這個協議:
優點
CDN支持良好,主流的CDN廠商都支持
協議簡單,在各平台上實現容易
缺點
基於TCP,傳輸成本高,在弱網環境丟包率高的情況下問題顯著
不支持瀏覽器推送
Adobe私有協議,Adobe已經不再更新
2WebRTC
WebRTC,名稱源自網頁即時通信(英語:Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的API。它於2011年6月1日開源並在Google、Mozilla、Opera支持下被納入全球資訊網聯盟的W3C推薦標準。
目前主要應用於視頻會議和連麥中,協議分層如下:
UT聊天室- UThome網際空間, ut聊天室-, ut聊天室, ut聊天大廳室, ut聊天大廳南部, ut聊天大廳北部人, ut聊天大廳中部, ut聊天大廳
優點
W3C標準,主流瀏覽器支持程度高
Google在背後支撐,並在各平台有參考實現
底層基於SRTP和UDP,弱網情況優化空間大
可以實現點對點通信,通信雙方延時低
缺點
ICE,STUN,TURN傳統CDN沒有類似的服務提供
3基於UDP的私有協議
有些直播應用會使用UDP做為底層協議開發自己的私有協議,因為UDP在弱網環境下的優勢通過一些定製化的調優可以達到比較好的弱網優化效果,但同樣因為是私有協議也勢必有現實問題:
優點
更多空間進行定製化優化
缺點
開發成本高
CDN不友好,需要自建CDN或者和CDN達成協議
獨立作戰,無法和社區一起演進
傳輸網絡
我們推送出去的流媒體需要傳輸到觀眾,整個這個鏈路就是傳輸網絡,類比貨運物流就是從出發地到目的地見的所有路程了,如果道路的容量不夠,會引發堵車也就是網絡擁塞,這時我們會改變路程也就是所謂的智能調度,但是傳輸網絡會站在全局的角度進行調度,所以會比原子世界的調度有更好的效果,可以想像有一個上帝在天空中俯視出發地和目的地間的所有的路況信息,而且還是實時的,然後給出你一條明路,何等的神奇,但這些我們在LiveNet中都已經實現了。
這裡先回顧一下傳統的內容分髮網絡。
為什麼要有內容分髮網絡,內容分髮網絡的由來
網際網路起源於美國軍方的一個內部網絡,Tim Berners-Lee是網際網路發明者之一,他很早就預見到在不久的將來網絡擁塞將成為網際網路發展的最大障礙,於是他提出了一個學術難題,要發明一種全新的、從根本上解決問題的方法來實現網際網路內容的無擁塞分發,這項學術難題最終催生出一種革新性的網際網路服務——CDN。當時Berners-Lee博士隔壁是TomLeighton教授的辦公室,一位麻省理工學院應用數學教授,他被Berners-Lee的挑戰激起了興趣。Letghton最終解決了這個難題並開始自己的商業計劃,成立了Akamai公司,成為世界上第一家CDN公司。
傳統CDN的架構
UT聊天室- UThome網際空間, ut聊天室-, ut聊天室, ut聊天大廳室, ut聊天大廳南部, ut聊天大廳北部人, ut聊天大廳中部, ut聊天大廳
上圖是一個典型的CDN系統的三級部署示意圖,節點是CDN系統中的最基本部署單元,分為三級部署,中心節點、區域節點和邊緣節點,最上面一級是中心節點,中間一級是區域節點,邊緣節點地理位置分散,為用戶提供就近的內容訪問服務。
下面介紹一下CDN節點的分類,主要分成兩大類,骨幹節點和POP節點,骨幹節點又分為中心節點和區域節點:
骨幹節點
中心節點
區域節點
POP節點
邊緣節點
邏輯上來講,骨幹節點主要負責內容分發和邊緣節點未命中時進行回源,POP節點主要負責提供給用戶就近的內容訪問服務。但如果CDN網絡規模較大,邊緣節點直接向中心節點回源會給中間層的核心設備造成的壓力過大,在物理上引入區域節點,負責一個地理區域的管理,保存部分熱點數據。
直播傳輸網絡有別於傳統CDN的痛點
隨著Live時代的到來,直播成為當前CDN廠商的又一個主要的戰場,那麼Live時代CDN需要支持什麼樣的服務呢?
流媒體協議的支持,包括RTMP、HLS、HTTP-FLV等。
首屏秒開,從用戶點擊到播放控制在秒級以內
1~3延遲控制,從推流端到播放端,延遲控制在1~3秒之間
全球全網智能路由,可以利用整個CDN網絡內的所有節點為某一單一用戶服務,不受地域限制。隨著全球一體化進程不斷推進,跨區域、跨國家、跨洲的直播正變為常態,很可能主播在歐美,而用戶在亞洲。
天級別的節點按需增加,中國公司出海已成大勢,CDN需要更多的海外節點,如今比拼的更多的是海外節點可以快速部署,從提出節點增加需求到節點入網提供服務,需要達到一天之內,對CDN運維和規劃提出非常高的要求。原有的月級別規劃和入網滿足不了先進的要求。
傳統CDN的鏈路路由
CDN基於樹狀網絡拓撲結構,每一層都有GSLB(Global Server Load Balancing)用於同一層內的多個CDN節點負載均衡,這樣有什麼好處呢?
前面提到的眾多CDN的應用場景中,網頁加速、視頻加速、文件傳輸加速,都是同時依賴GSLB和Cache系統的,Cache系統是整個CDN系統中的成本所在,設計樹形結構可以最大化的節省Cache系統的資本投入。因為只有中心節點需要保持機會所有的Cache副本,向下逐級減少,到了邊緣節點只需要少量的熱點Cache就可以命中大部分CDN訪問請求,這樣極大的降低了CDN網絡的成本,也符合當時CDN用戶的需求,可謂雙贏。但是到了Live時代,直播業務是流式業務,很少涉及到Cache系統,基本都是播完就可以釋放掉存儲資源,即使因為政策原因有存儲的需求也都是冷存儲,對於存儲的投入相對非常低廉,而且不要求存儲在所有節點中,只要保證數據可回溯,可用即可。
我們看看樹狀網絡拓撲,用戶的鏈路選擇數量是有限的,如下圖,用戶在某一個區域內可選擇的鏈路數是:2*5=10
UT聊天室- UThome網際空間, ut聊天室-, ut聊天室, ut聊天大廳室, ut聊天大廳南部, ut聊天大廳北部人, ut聊天大廳中部, ut聊天大廳
用戶在某一區域內,則GSLB(通常在邊緣節點這一層是Smart DNS)會把用戶路由到該區域內的某個邊緣節點,上一層又會路由到某個區域節點(這裡的GSLB通常是內部的負載均衡器),最後又回溯到中心節點,中心節點會連結源站。
這裡的假設是:
用戶能訪問的最快節點一定是該區域內的邊緣節點,如果該區域沒有邊緣節點則最快的一定是邏輯相鄰的區域內的邊緣節點。
邊緣節點能訪問的最快節點一定是該區域內的區域節點,一定不會是其他區域的節點。
區域節點到中心節點一定是最快的,這個鏈路的速度和帶寬都是最優的。
但實際真的如此麼?引入了如此多的假設真的正確麼?
實際上就算理論上我們可以證明以上假設有效,但是節點規劃和區域配置大都依賴於人的設計和規劃,我們知道人多是不靠譜的,而且就算當時區域規劃正確,誰能保證這些靜態的網絡規劃不會因為鋪設了一條光纖或者因為某些IDC壓力過大而發生了改變呢?所以我們可以跳出樹狀網絡拓撲結構的桎梏,探索新的適合直播加速的網絡拓撲結構。
為了簡璁陪酊疑鼽蘢竷挼u路限制,激活整理網絡的能力,我們可以把上述的節點變成網狀網絡拓撲結構:
UT聊天室- UThome網際空間, ut聊天室-, ut聊天室, ut聊天大廳室, ut聊天大廳南部, ut聊天大廳北部人, ut聊天大廳中部, ut聊天大廳
我們看到一旦我們把網絡結構改成了網狀結構,則用戶的可選擇鏈路變為:無向圖的指定兩點間的所有路徑,學過圖論的同學都知道,數量驚人。
系統可以通過智能路由選擇任何一個最快的鏈路而不用依賴於系統部署時過時的人工規劃,無論是某些鏈路間增加了光纖或者某個IDC壓力過大都可以實時的反映到整理網絡中,幫助用戶實時推倒出最優鏈路。這時我們可以去掉前面的一些假設,通過機器而不是人類來時實時規劃網絡的鏈路路由,這種實時大規模的計算任務天生就不是人類的強項,我們應該交給更適合的物種。
CDN的擴容
前面提到中國公司的出海已成大勢,CDN海外節點的需求越來越大,遇到這種情況需要CDN廠商在新的區域部署新的骨幹網和邊緣節點,需要做詳細的網絡規劃。時代發生變化,原來CDN用戶都是企業級用戶,本身業務線的疊代周期較長,有較長時間的規劃,留給CDN廠商的時間也比較多。而網際網路公司講究的是速度,雙周疊代已成常態,這裡面涉及到成本和響應速度的矛盾,如果提前部署節點可以更好的為這些網際網路公司服務,但是有較高的成本壓力,反之則無法響應這些快速發展的網際網路公司。
理想情況是,用戶提出需求,CDN廠商內部評估,當天給出反饋,當天部署,客戶當天就可以測試新區域的新節點。怎麼解決?
答案是基於網狀拓撲結構的對等網絡,在網狀拓撲結構中每個節點都是Peer,邏輯上每個節點提供的服務對等,不需要按區域設計複雜的網絡拓撲結構,節點上線後不需要複雜的開局過程,直接上線註冊節點信息,就可以對用戶提供服務了,結合虛擬化技術前後時間理論上可以控制在一天之內。
UT聊天室- UThome網際空間, ut聊天室-, ut聊天室, ut聊天大廳室, ut聊天大廳南部, ut聊天大廳北部人, ut聊天大廳中部, ut聊天大廳
回歸本質:LiveNet
我們知道最早的網際網路就是網狀拓撲結構,後來才慢慢加入了骨幹網來解決各種各樣的問題,我們是時候該回歸本質,擁抱下一代Live分髮網絡:LiveNet。總結前面的討論,我們發現Live時代我們需要的內容分髮網絡是:
對Cache的要求沒有以前那麼高
對實時性的要求非常高
對節點運維的要求高,要更智能,儘量減少人工干預
對擴容這種運維事件響應度要求非常高
要做到如上幾點,我們需要:
去中心化,網狀拓撲
全球全網調度
節點無狀態,節點對等
智能運維
以上這些就是LiveNet設計時候的斟酌,讓運維更自動化,系統運行高度自治,依賴機器計算而不是人工判斷,下面分別介紹一下。
去中心,網狀拓撲
網狀拓撲結構是設計的根本和基礎,只有看清了我們對Cache需求的降低,網狀拓撲結構才更有優勢。
全球全網調度
基於全球一張網,不在受限於區域網絡調度,將調度的範圍從區域網絡擴展到全球,全網內的節點都可以響應用戶的請求,參與鏈路路由,不再先由人工假設選定一部分節點進行路由,去掉人工干預,讓整個系統更智能。
節點無狀態,節點對等
LiveNet節點無狀態和節點對等都方便了運維,去掉了區域概念後的全球一張網讓整個拓撲結構變的異常複雜,如果各個節點間有先後依賴關係,勢必讓運維成為噩夢,需要專有的服務編排系統,同時也給擴容帶來困難,需要運維人員設計複雜的擴容方案,需要預演多次才敢在複雜的網絡拓撲中擴容。當時如果節點本身對等且無狀態,則運維和擴容都變的容易很多。
但整個系統在運行過程中還是會一些狀態和數據需要保持,比如某些Live內容需要落地回放的需求,這些通過久經考驗的七牛雲存儲來存儲。
智能運維
智能運維建立在以上的「網狀拓撲結構的對等網絡」的基礎上會變的容易的多。可以方便的下線有問題的節點而不影響整個LiveNet網絡,可以方便快速的上線新節點,提升系統容量。通過節點的數據分析可以更好的了解整個網絡的整體狀態。
下面列舉部分LiveNet採用的智能運維方案,讓內容分髮網絡再次升級,以符合Live時代的要求。
監控節點健康狀況,實時下線有問題的節點
Failover機制,保證服務一直可用
快速擴容
LiveNet VS P2P
最後我們和P2P網絡做一個對比:
LiveNetP2PCDN網狀結構網狀結構樹狀結構對等網絡對等網絡異構網絡自有節點混合節點,部分自有自有節點鏈路多,穩定鏈路特別多,不穩定鏈路少,穩定擴容周期短擴容周期短擴容周期長節點可管理性強節點可管理性弱節點可管理性強節點質量好節點質量參差不齊節點質量好我們發現P2P方案,節點的可控性和鏈路的穩定性上還有很大提升空間,比較適合在實時性要求不高的場景使用、適合長尾需求,在Live的場景下面多是對實時性要求比較高的重度用戶,無法忍受頻繁的FailOver和節點質量參差不齊帶來的網絡抖動,但是如果是文件分發就比較適合用這種混合方案,可以有效降低CDN廠商成本,利用共享經濟提高資源利用率。
這篇介紹了推送和傳輸網絡部分,我們已經把流媒體送到了觀眾的終端中,下一步就是把它展現在螢幕上了,想了解這部分內容請繼續關注我們的下一篇內容。