歡迎你們前往雲+社區,獲取更多騰訊海量技術實踐乾貨哦~web
由 騰訊技術工程官方號 發佈在雲+社區
藍光和4k視頻正逐漸普及,4K視頻峯值碼率超10Mbit/s。架構平臺部TVideo平臺從資源,鏈路、緩存、接入進行調優,有效解決4k高碼率視頻的二次緩衝問題,播放體驗全面領先競品。算法
隨着音視頻編解碼、超分辨率、VR/AR等技術的發展,iPhone八、4K電視、VR眼鏡等終端設備的更新換代,高碼率高分辨率片源(4K視頻、360°全景視頻等)的層出不窮,多媒體用戶觀看體驗正在逐步升級,整個行業生態鏈正在快速向高品質內容切換。後端
就分辨率而言,上面提到的4K視頻指分辨率達4096*2160的片源,對比其它分辨率還有2K(2560*1440)、1080P(1920*1080,目前騰訊視頻藍光的分辨率)等。騰訊視頻在2017年下半年爲進一步提高用戶體驗推出「杜比特權」,引進4K片源(見圖1)。緩存
分辨率的提高必然伴隨着碼率的提高。相比藍光視頻的3Mbit/s碼率,杜比特權4K視頻峯值超過10Mbit/s,這對後臺下載(Tvideo平臺)帶來巨大挑戰,爲提供至少10Mbit/s下載速度,須要在網絡延時、緩存IO、回源速率等方面進行優化升級。服務器
騰訊視頻Tvideo平臺運營着公司內部各項重要音視頻業務,除騰訊視頻外,還爲空間視頻、QQ音樂等提供支撐。擁有16T+自建帶寬,億級別的視頻庫。網絡
i多線程
Tvideo採起多層緩存,冷熱分類架構。音視頻文件上傳到Tvideo後臺源站,源站存儲模塊爲每一個文件加入特徵信息,防止惡意用戶盜鏈,分析文件熱度,按不一樣優先級將文件推送到中間源;中間源緩存按業務進行軟件隔離,保障每一個業務有獨立存儲空間;城域點負載邊緣加速,經過調度、鏈路加速等措施保障數據快速傳輸到用戶終端。架構
當前高碼率視頻面臨着網絡延時,緩存IO不均,接入/回源耗時帶來的卡頓等一系列問題,如杜比視界4K節目,碼率峯值高達10Mbit/s,一部電影高達10GB存儲,如何保障後臺服務質量,提高用戶觀看體驗?併發
針對上述問題,Tvideo平臺在鏈路、緩存、接入等作了多項優化,解決緩存負載、鏈路卡頓、播放高延時等問題。負載均衡
客戶端播放媒體過程當中,沒有出現任何卡頓稱之爲無緩衝,反之稱之爲二次緩衝,無緩存佔比越高,說明後臺服務越好,鏈路加速重點解決用戶播放音視頻卡頓的問題。
引發卡頓的因素不少,如後臺網卡降速,傳輸網絡波動、跨省&運營商訪問速度跟不上、小片請求形成IO碎片等。Tvideo經過以下策略,解決鏈路帶來的卡頓:
對於文件在邊緣節點不命中場景,分爲熱點不命中和普通文件不命中,鏈路加速策略分別使用極速分發和回源加速,實現邊緣節點「100%命中」。
極速分發指的是將文件從源站快速分發到邊緣節點,解決源站、中間源等繁忙鏈路擁堵的狀況,極速分發經過P2P組網、分級削峯、智能識別碼率等方式,實現秒級內將一個切片視頻推送到全網,在騰訊視頻熱劇搶先看、熱點突發、會員保障等場景,發揮着重要的做用。因爲分發網絡節點間熱點互通,將全網TOP(k)高碼率熱點文件分發到邊緣節點,實現熱點視頻邊緣命中,減小鏈路延時。
對於普通普通不命中場景,採起回源加速策略,每次回源記錄回源速度,高碼率視頻使用回源速度大於碼率3倍以上的回源IP,沒法滿狀況下,採起多回源IP併發分片回源。
杜比視界4K視頻採起fmp4分片,因爲fmp4切片文件太小,每次回源請求小分片形成鏈路速度達不到預期,Tvido採起進行多分片合併回源下載策略,減小鏈路延時。
上圖測試音頻小文件多個分片合併的回源速度,能夠看到,在TCP沒有創建起來的狀況下,將多個小分片合併回源速度效果明顯。
固然後臺鏈路加速還包括對客戶端訪問區分優先級,當客戶端進行緊急下載,後端使用多鏈接加速;對於慢速請求,則選擇協議棧加速等,經過上述優化,最大限度縮減耗時,保障鏈路下載速度。
緩存是Tvideo的核心模塊,包括緩存按業務管理策略,熱點文件&分片界定算法,冷文件淘汰、全局負載均衡等算法。
image.png
上圖所示爲Tvideo平臺城域點機房集羣架構,其中中心索引模塊維護集羣中全部文件的索引信息,下載HTTP模塊負責業務請求的接入,數據存儲模塊負責冷熱數據管理。
冷熱數據存儲模塊和內存緩存統稱爲緩存,熱點分級是緩存模塊的分級是緩存模塊的核心,對於普通視頻熱點統計策略相對簡單:下載HTTP模塊在接入階段經過邊緣計算,快速處理70%左右的熱點請求;而相對冷的請求,經過中心索引模塊計算,經過以上熱點統計分級計算,實現熱點快速統計。
而對於高碼率視頻,除了使用上述常規方法,另外對緩存進行了特定的分級,包括根據機房維度分級,根據訪問模型分級,根據碼率進行IO分級和熱點擴散分級。
Tvideo平臺每一個機房質量存在必定差別,這樣能夠把資源分爲優質資源和普通資源,經過現網訪問流水分析獲得不一樣機房質量狀況後,將整個平臺的緩存資源池按碼率進行劃分,對於普通機房,緩存更多的低碼率視頻,優質機房用於緩存高碼率視頻。經過機房調度完成優質機房服務高碼率請求,避免高碼率視頻請求命中低質量機房的狀況。
優質資源在文件淘汰過程當中,保障高碼率文件每次淘汰數量小於標準淘汰值(如高碼率每次淘汰5%,普通視頻每次淘汰10%),保障機房更多的空間存儲高碼率視頻;而對於普通機房,通常只覆蓋低碼率業務,只有在資源不夠的時候纔會用上,能夠空出更多存儲供普通視頻等業務使用。經過上述物理介質的分級,保障業務質量。
根據客戶端訪問模型,能夠將客戶端下載過程分爲快速階段、漸進式階段、P2P階段。因爲客戶端每一個階段要求的下載速度不同,後端緩存須要可以區分不一樣階段,從而進行特殊處理。
用戶觀看一部影片,從客戶端播放邏輯看,在剛開始播放時,客戶端進入快速下載階段。該階段客戶端播放器緩衝區沒有數據,要求快速填滿播放器緩衝區,以便減小網絡抖動等因素帶來的卡頓。當客戶端緩衝區填滿後,客戶端進入漸進式P2P階段,該階段客戶端中止向後臺下載,採起P2P下載,若是P2P速度過慢,當緩存的內容過少時,再次向後臺Tvideo下載,此過程叫漸進式下載。簡單舉個例子,客戶端首次播放,快速下載180秒將緩衝區填滿,播放器開始播放,同時進入P2P下載,因爲P2P下載速度達不到高碼率要求,當客戶端緩衝區小於90秒後,客戶端會向後臺Tvideo平臺繼續下載,直到將緩衝區填滿。
上述三個階段對Tvideo後臺速度要求不同,後臺根據邊緣計算,探測到快速下載階段的請求後,進行緩存內存加速,將部分數據預拉到內存。而漸進式下載過程當中,後臺根據文件VID進行預測,將文件預熱到高速緩存介質上。在P2P補洞階段,進行緩存負載均衡,保障機房內緩存負載相對平衡。
當前Tvideo平臺機房集羣採起SATA和SSD存儲混搭模型,解決回源較高問題,如SATA統一使用4T盤,保障邊緣節點有足夠的存儲,可以擋住熱點,根據訪問熱度,逐步向高速介質SSD上擴散。因爲SATA單盤只能支持120Mbit/s,暫不考慮其它請求,若一個機房同時有大於12個用戶訪問同一個4K文件(10Mbit/s)時,SATA單盤將沒法支撐全部用戶的下載,須要快速將文件擴散到SSD上備份。
因爲普通視頻和高碼率視頻對機房集羣內熱點擴散的需求不一樣,特別是4k視頻這類音視頻分開存儲,高碼率視頻對下載速度敏感業務,按碼率和IO頻率分級,向SSD和內存擴散,解決因爲磁盤速度不夠,帶來的卡頓問題。
接入優化主要解決跨省、跨運營商、資源不足等狀況形成的卡頓,經過合理分配資源,解決因爲資源不夠,帶來的卡頓。
客戶端每次播放前,經過Tvideo調度平臺接口獲取具體下載地址,調度平臺根據客戶端的IP、碼率等信息,選擇一個合適的機房,經過負載均衡算法,選擇機房的一個能夠下載地址返回給客戶端,客戶端獲取到下載地址後,向機房進行訪問。簡單的能夠理解爲,一個上海電信的用戶請求播放,首先會訪問Tvideo調度平臺,而後Tvideo返回上海電信0001機房的一個下載地址給客戶端,客戶端向上海0001機房請求數據。
針對高峯期資源緊張、高碼率視頻卡頓率高,訪問質量得不到保證的狀況,進行調度分級策略:將VIP、高碼率視頻儘可能本地覆蓋,而低碼率、音頻、離線下載等業務,調度到二級資源或者區域資源,保障播放質量。如上表,當晚高峯,上海市區資源不夠,將VIP高碼率的調度到上海本地,而VIP低碼率的調度到二級覆蓋,而離線下載調度到區域覆蓋如華東資源空閒的地方。
針對小運營商多出口問題,經過調度特徵串,進行二次調度,解決跨網帶來的卡頓。如上海移動用戶經過Tvideo調度平臺調度到了上海電信0001機房,客戶端訪問上海電信0001機房的下載服務器,下載服務器發現客戶端IP不是電信的,返回302,讓用戶跳轉到移動IP,進行訪問。
從資源,鏈路、緩存、接入進行調優,並經過碼率分級、IO分級、業務分級等多角度優化,有效解決藍光、4k高碼率視頻的二次緩衝問題。下圖是自建和外包的無緩衝率的對比,經過上述優化,高碼率無緩衝率提高1.5%。
此文已由做者受權雲加社區發佈,轉載請註明原文出處