TOP100summit【分享實錄-網易】構建雲直播分發網絡

本篇文章內容來自2016年TOP100summit網易視頻雲、網易杭州研究院服務端技術專家邵峯的案例分享。
編輯:Cynthia數據庫

邵峯:網易視頻雲、網易杭州研究院服務端技術專家
浙江大學計算機專業博士畢業。
自畢業之後從事數據庫、分佈式存儲等領域研究,有十年左右的服務端開發經驗。
目前在網易視頻雲負責產品化研發工做,在服務端開發、存儲/數據庫開發等方面有豐富的實戰經驗。網絡

導讀:在網易視頻雲直播產品開發中,研發團隊遇到了直播卡頓難題。如何提供穩定、流暢、無卡頓的直播服務,是當時迫切須要解決的問題。經過客戶端分析、網絡統計等手段,定位卡頓問題的根源在於直播分發網絡不佳。可否提供一套可靠的直播分發網絡,決定了直播是否有卡頓,也最終決定了用戶的直播體驗。
爲了流暢的直播體驗,保證基本無卡頓,技術團隊採用了一種融合式分發網絡架構。經過該融合分發網絡,直播雲服務基本解決了卡頓問題,保證了流暢的直播體驗。本文將介紹網易雲直播分發網絡架構的構建及優化過程。架構

1、問題的提出框架

直播業務迅猛發展,但其背後的直播技術門檻較高,爲了下降技術門檻,讓產品開發者迅速開發出直播產品,就出現了直播雲服務的概念。直播雲服務,爲直播提供了端到端的解決方案,包括:直播端採集-編碼-播放、網絡端轉碼-分發、播放端解碼-播放等。其中每一個環節都涵蓋大量技術,同時也影響着直播質量的高與低。
網易視頻雲就是爲開發者用戶提供這種直播雲服務。咱們在直播雲服務的建設過程當中,發現直播網絡體驗是全部直播產品的痛點,穩定、流暢、無卡頓是全部直播產品的共同訴求。那如何把咱們的直播雲服務作到體驗好、無卡頓呢?起初,咱們採用了一系列音視頻技術,對主播和播放兩端進行了優化,體驗未獲得實質性改善。分析後,咱們把焦點集中於網絡端,所以上述問題被轉化爲:如何優化分發網絡,從而保證直播無卡頓、體驗好?
在網絡分發端,起初咱們採用了一個傳統第三方CDN網絡,但第三方CDN在帶寬配置和節點部署上存在諸多限制,並且直播線路調整採用人工手段,所以沒法知足咱們的優化需求。接着咱們自建了一套分發網絡,但因爲節點數不足,分發性能要求也不甚理想。後續,咱們又接入了多家第三方CDN網絡,但每一家都不能徹底知足咱們的「無卡頓、體驗好」的要求。最後,咱們考慮可否在已有的單CDN分發網絡基礎上,構建一個融合式直播分發網絡,達到穩定流暢要求?所以,咱們開始了一趟融合分發網絡的構建旅程。分佈式

2、實踐過程性能

咱們的雲直播分發網絡構建,從時間維度分爲三階段:單CDN階段、多CDN階段和融合CDN階段。各階段是漸進式發展的。測試

2.1 單CDN階段優化

單CDN-構建階段編碼

咱們爲雲直播服務選用了一個傳統的第三方CDN分發網絡。經過封裝調用第三方CDN的分發網絡接口,構築了一套完整的分發網絡服務,其基本架構如圖1所示。線程


圖1. 單CDN分發網絡

單CDN分發網絡的優勢是實現簡單,能快速封裝實現。在咱們雲服務發展初期,該方案能幫咱們迅速實現產品,而且應用於實際場景。
但缺點很明顯:網絡不穩定、卡頓率較高,而且線路調優較爲麻煩。

單CDN-優化階段

當咱們的用戶量達到必定規模時,單個CDN的問題就集中體現出來了,首先網絡不穩定,常常出現卡頓掉線等狀況,並且對國內運營商網絡存在差別化支持,例如電信、聯通線路較好,而移動線路較差等問題。

經過與第三方CDN排查問題,發現其本質緣由爲:節點覆蓋不足、帶寬資源提供不足。

經過讓CDN廠商加節點資源、優化線路,部分解決了卡頓流暢性問題,可是沒法從本質上解決網絡覆蓋等問題。

2.2 多CDN階段

多CDN-構建階段

針對第三方CDN的問題,咱們考慮採用多CDN方案加以解決。經過對不一樣的幾個CDN廠商進行基調測試後,發現每一個CDN廠商都有局部優點和劣勢,例如CDN廠商A對移動線路支持較好,而CDN廠商B對電信/聯通線路支持較好。針對該特色,咱們接入了多家CDN進行節點及線路互補。對於一些特殊區域,例如小運營商、海外節點等狀況,咱們經過部署自有節點,開發了一套簡單的自研CDN進行區域覆蓋。最終咱們造成了一個多CDN分發網絡系統,架構如圖2所示。


圖2. 多CDN分發網絡

多CDN-優化階段

在多CDN分發網絡中,由雲管理中心爲主播選擇分發線路。在卡頓率分析時,咱們發現上行推流的穩定性起着決定做用。所以咱們根據主播端的IP,查詢推流源位置信息,而後選擇最佳CDN進行流分發。

舉例說明,主播A爲北京移動線路,咱們就選擇上行較優的CDNⅡ進行分發;主播B爲上海電信線路,選擇電信較優的CDNⅠ進行分發。選擇策略在雲管理中心進行配置。選擇策略根據,基調測試結果或線上結果反饋,按期調整。

2.3 融合CDN階段

融合CDN構建階段

多CDN分發網絡極大地下降了卡頓率,但運行一段時間後,咱們發現多CDN分發網絡,還存在一些缺陷,例如第三方CDN上行線路沒法達到最優化;下行觀衆端拉流沒法選擇最佳CDN;直播線路沒法臨時調優等。

爲此,咱們重構了分發網絡,提出了一種融合CDN架構,如圖3所示。融合CDN分發網絡,在多CDN的基礎上,主要增長了兩大功能:接流源站和智能雲調度中心。
● 經過自建接流源站,咱們能最大限度的優化直播上行線路。
● 經過智能雲調度中心,咱們能自適應網絡環境,根據網絡變化,動態的調整上下性線路。


圖3. 融合CDN分發網絡

融合CDN優化階段

當前咱們處於融合CDN使用階段,但咱們還將對該分發網絡進行優化。考慮下行線路,第三方CDN廠商沒法徹底覆蓋全部區域,而自研分發網絡構建/維護成本太高。所以,考慮對於CDN廠商沒法覆蓋的下行區域,若是用戶訪問密度高,咱們將在下行邊緣作一層服務轉發。

這樣帶來的好處有兩點:
● 增長邊緣覆蓋率,同時下降CDN流量成本;
● 路由判斷更加精準,避免CDN廠商路由漂移狀況。

其框架如圖4所示,咱們正處於該優化階段的建設過程當中。


圖4. 融合CDN分發網絡-改進

直播分發網絡構建中,融合CDN分發網絡的設計/建設最爲關鍵。

接下來將具體描述其兩大關鍵模塊的設計思路:接流源站、智能調度中心。

接流源站

在最初的設計中,源站的目的性很明確,用於接收主播的推流,並轉發CDN。因爲直播流採用rtmp協議,所以源站主要實現了rtmp協議處理。在內部,源站架構分爲三層:接口協議層、邏輯處理層和網絡分發層。
● 接口層接收解析rtmp流協議;
● 處理層進行流媒體處理;
● 網絡分發層進行rtmp轉發。

須要注意的是:每路推流轉發一路給不一樣的CDN網絡,這樣觀衆就能從不一樣的CDN網絡獲取流信息。

隨着雲直播業務的擴展,互動直播以及直播連麥等需求也引入到了直播框架中,所以咱們對源站進行了擴展,提供了一種多協議源站。引入的協議爲RTP類協議,有交互性要求或實時性要求較高的直播形式,都走RTP類協議,其底層走UDP通道。而對廣播式要求,咱們經過RTMP轉封裝和混屏處理,無縫對接現有CDN。總體框架如圖5所示。


圖5. 多協議源站

源站調度

咱們在全國二十幾個主要區域部署了源站集羣,在重要區域,例如北京、上海、廣州、杭州等,採用BGP網絡。其餘區域採用多線。從而保證用戶與源站之間網絡的高質量。咱們經過全局調度中心GSLB進行源站調度。調度中心,經過心跳式探活,感知實時狀況。經過配置模塊,動態調整源站的配置,如流量限制,黑白名單限制等。主播在推流以前,從調度中心獲取源站路由。調度中心會根據推流源地址、策略表,最優選擇一個源站。總體框架如圖6所示。


圖6. 源站調度

調度中心智能調優

調度中心是整個分發網絡的核心,它統一調度上行接入點和下行拉流點。調度中心內部最重要的是路由規則表的制定。傳統的規則表是固定配置規則表,跟實際網絡的適配性較差。咱們在融合網絡中,設計了一套智能調優策略,經過網絡實際狀況動態調整規則。調優的流程如圖7所示,採用五步驟循環模式。
● 步驟1,GSLB調度中心獲取/解析用戶地址信息;
● 步驟2,調度中心獲取已有調度規則;
● 步驟3,調度中心生成路由地址,下發客戶端;
● 步驟4,兩端上報卡頓信息到雲統計中心;
● 步驟5,雲統計中心,定時分心數據,觸發規則,調整規則庫。


圖7. 調度中心路由調優

經過這些步驟,調度中心實現了統計式自調優。

3、效果評價

咱們在真實環境對上述分發網絡進行了一系列對比測試,核心測試點就是卡頓率指標。爲增長雲直播產品質量,咱們在卡頓率指標選擇上採用了更爲嚴格的一分鐘卡頓率,而未使用常規的時長卡頓率。

所謂一分鐘卡頓率,就是若是一分鐘以內播放器連續卡兩次,就視爲該一分鐘都爲卡頓。而時長卡頓率,以每秒鐘爲間隔,該秒內播放器卡,視該秒爲卡頓。播放器卡的定義爲:解碼線程每隔3ms從播放器緩衝區獲取數據,若是緩衝器爲空,則定義爲播放器卡。通常意義上,一分鐘卡頓率 = 4 ~ 15倍 × 時長卡頓率。


圖8. 兩週卡頓率比較

如圖8所示,咱們選擇了X、Y、Z三個月的前半個月(兩週)卡頓率數據進行了比較。其中X月運行了單CDN分發網絡;Y月運行了多CDN分發網絡;Z月運行了融合CDN分發網絡。天天給出一個綜合卡頓率數據。各月,雲平臺環境狀況爲:網絡實際流量分別爲日均5TB、12TB和20TB, 98%以上流量運行於國內, 流量無重大區域變化性差別。從圖中,能夠看出卡頓率有了明顯降低,在融合CDN分發網絡中,達到了咱們預約<5%的指標要求。


圖9. 卡頓率優化比例

如圖9所示,給出了單CDN、多CDN和融合CDN的平均卡頓率降低指標。使用多CDN分發網絡比用單CDN分發網絡兩週平均卡頓率降低26%。 使用融合CDN分發網絡比用多CDN分發網絡兩週平均卡頓率降低44%。

所以,咱們根據統計總結出:融合CDN分發網絡,能極大優化網絡分發,並把卡頓率指標降到了小於5%的優質範圍。接下來,爲了達到極致體驗,咱們將繼續改進融合CDN分發網絡,在拉流端考慮進一步優化。

4、推廣建議
● 使用漸進方式,分階段進行網絡優化;
● 網絡框架優化前,必須事先分析,尋找關鍵瓶頸點;
● 網絡數據收集很重要,儘量多收集;
● 必須深挖細節點,每一個小模塊都能作出大文章;
● 國內網絡環境有特殊性,必須考慮運營商和區域性因素;
● 邊緣加速很重要,儘可能靠近用戶;
● 善於使用第三方服務,並能在別人服務基礎上進行優化昇華。

11月9-12日,北京國家會議中心,第六屆TOP100全球軟件案例研究峯會,網易雲通訊與視頻技術專家劉心坤將分享《網絡擁塞控制以及在實時通訊領域中的應用》。

查看日程:www.top100summit.com/schedule/20…

相關文章
相關標籤/搜索