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