深圳雲栖大會已經圓滿落幕,在3月29日飛天技術彙-彈性計算、網絡和CDN專場中,阿裡雲CDN進階技術專家周哲為我們帶來了《海量短視訊極速分發》的主題分享,帶領我們從視訊内容采集、上傳、存儲和分發的角度介紹整體方案,并且重點講解短視訊加速的注意事項和使用者體驗優化要點。
講解從三個部分展開:短視訊應用場景、阿裡雲短視訊解決方案、阿裡雲對短視訊使用者體驗的相關優化。
短視訊比圖檔和文字包含更多的資訊,在移動網際網路普及的今天,短視訊應用場景非常廣泛。
使用者可以錄制視訊,進行特效編輯處理,上傳到伺服器,通過社群的方式分享給好友。

商家可以快速拍攝、制作商品的短片,把商品的介紹視訊發給消費者,這樣可以提高購買轉化率。
在交流過程中,通過随拍随傳的短視訊,使用者可以更生動的表達觀點,更真實的傳遞情感
差別于傳統、單一的圖文展示形态,短視訊可以快速收集及釋出新聞,一鍵呈現世界
內建短視訊SDK後,使用者可以在現場實時拍攝和剪輯,生成具有傳播價值的短視訊,通過分享來全網同步賽事
阿裡雲針對短視訊的業務場景,提供了一整套技術解決方案。在主播端,提供了視訊上傳SDK和短視訊SDK,在觀衆端提供視訊播放SDK,在伺服器端提供點播服務、OSS存儲和CDN加速。
對于開發者來說,短視訊解決方案的使用流程是這樣的:首先主播端使用短視訊SDK對使用者的視訊進行錄制、特效處理和剪輯,然後将視訊通過上傳SDK上傳到伺服器端,在伺服器端先通過點播服務進行轉碼以及視訊處理,然後把處理好的視訊存儲到OSS上,做持久化儲存。在播放端內建播放器SDK,播放器會向CDN請求資源,CDN如果有緩存會把緩存的資料發給用戶端。如果CDN緩存沒有資料會去OSS中拉取資料,在傳回給用戶端,并把資料緩存到CDN上。開發者使用這些技術元件,可以快速的開發短視訊業務。
下面,我們逐一介紹解決方案的能力與特點。
解決方案中的視訊SDK,包括短視訊、上傳和播放三個。短視訊SDK包含人臉貼圖、進階美顔的功能,在使用者錄制視訊之後先進行本地美顔再進行上傳,同時也提供專業濾鏡、MV特效和裁剪壓縮、添加音樂的功能,使視訊剪輯大衆化;上傳SDK通過快速通道可以把視訊傳輸到伺服器端,支援斷點續傳、背景上傳、多檔案管理等功能;播放器SDK支援Android、IOS、flash、H5等多個平台、加密播放和安全下載下傳等。
點播和存儲服務,點播服務提供視訊管理相關的功能,比如視訊轉碼,窄帶高清可以在相同的使用者觀感體驗下,節約30%的帶寬;雲剪輯功能可以線上對視訊進行編輯處理;同時點播服務提供豐富的資料統計,開發者利用阿裡雲提供的API通路實時資料。
同時,阿裡雲也在視訊領域開放了AI技術,包括内容稽核,降低違規風險;智能封面,對視訊結構化處理和算法選取最優視訊幀作為視訊封面;标簽預測,通過AI來識别視訊中文字、圖像、人物等資訊,自動生成視訊标簽等。
基于短視訊業務産生的海量資料,阿裡雲也提供了高可靠、強安全、低成本的存儲服務。
為了應對短視訊大規模的業務需求,阿裡雲CDN建設了大量的基礎設施。
首先,阿裡雲CDN擁有全球1200多個節點,分布在全球各個國家和地區,貼近使用者部署,使使用者更快速的通路視訊内容,使視訊體驗更好。同時,為了面對業務的突發流量,阿裡雲提供了超過80TB的帶寬儲備,為持續增長的業務保駕護航。并且,單節點緩存容量超過1PB,通過提供更大的緩存空間,來提升使用者通路速度。
介紹完了解決方案之後,周哲老師又為大家介紹了阿裡雲在短視訊領域的一些優化技術。
一、首屏時間是指在視訊穩定播放期間,從使用者點選播放到視訊開始播放之間的時間差。首屏時間越長,會導緻使用者提前結束播放。
二、播放卡頓是指在播放過程中的不流暢情況,會嚴重影響使用者體驗。
三、播放錯誤是指使用者播放視訊時沒有成功播放,或出現異常導緻提前中斷。
為了解決這些問題,我們對整個架構進行剖析。
首先,終端使用者使用阿裡雲提供的視訊SDK來請求排程伺服器,排程伺服器傳回對應的節點IP,然後播放器通過CDN的節點IP來請求資源,CDN的邊緣節點如果有緩存的話可以從本地發給播放器,如果沒有緩存就去二級節點進行通路,二級節點沒有緩存會去OSS或者使用者源站拉取資料。
阿裡雲CDN有一級節點、二級節點的緩存,二級節點的作用是
第一,做資源收斂,避免相同請求同時回源,減少源站壓力
第二,離邊緣節點接近,在邊緣節點沒命中的時候,能夠更快的從二級節點擷取到資料
第三,提供更大的存儲空間,提高命中。
同時,阿裡雲對于整個播放過程,進行一些使用者體驗相關的資料打點,通過這些資料來進行分析,得到了一些優化點。
播放器是否優化決定了終端使用者的觀看品質。首先,我們對播放器SDK做了相關優化,比如,通過減少首次緩沖時間,可以設定在收到視訊第一個I幀就開始解碼播放;提供動态緩存大小,當出現網絡抖動的時候,可以動态增加緩存大小,對資料進行預加載,通過這種方式來降低卡頓率;針對播放錯誤,播放器SDK實作了網絡重試機制,來提供播放成功率。
使用者在通路邊緣節點的時候,通路排程伺服器,排程伺服器傳回的IP位址是不是最優的網絡鍊路,這個很大程度上影響使用者對于視訊的下載下傳速度。阿裡雲自研了智能排程系統,可以選擇使用者到邊緣節點的最優鍊路,來回報給用戶端。
能夠讓邊緣節點距離使用者更近,來提升使用者通路速度。
在使用者向CDN伺服器擷取資料時,當出現網絡抖動的時候,會有下載下傳速度降低情況産生,阿裡雲CDN針對TCP協定棧進行優化,通過更高效的協定棧算法來提升下載下傳速度。
開發者可以使用阿裡雲提供的窄帶高清功能,來降低播放視訊的帶寬。
使用者在通路邊緣節點的時候,如果請求在邊緣節點MISS會直接回源,響應時間變慢,而如果邊緣節點命中,使用者的下載下傳的速度就和邊緣節點緩存伺服器的性能具有強關聯性了,阿裡雲針對緩存伺服器的性能做了很多優化,通過加大邊緣伺服器的空間和智能優化,來提升通路速率。
阿裡雲也支援全鍊路監控,來提早發現問題,針對性優化,確定穩定服務
這裡詳細介紹一下智能排程的優化,針對排程系統,阿裡雲做了五個方面的優化。
基于第三方IP庫資料、whois平台和淘寶手機使用者在通路資料時的一些經緯度資訊,會對IP庫進行主動探測,基于這些次元的資料,進行計算和生成。IP庫資料的準确性會對排程系統提供資料支撐。
使用者通過localdns請求排程伺服器,會遇到第一個問題是:localdns和使用者ip位置有不比對問題,會出現基于localdns排程時,排程系統看到的用戶端ip和使用者真實ip不一緻,導緻排程不準确。第二個問題是:使用者查詢dns伺服器時,在查詢過程中會出現dns結果被串改的情況
通過httpdns服務,可以解決由于localdns和ip位址不比對問題,同時也可以做到dns結果防串改,使排程更精準。
播放器基于httpdns對dns查詢做預加載,并對結果做緩存,減少dns查詢查詢帶來的首屏時間慢。
會基于使用者的用戶端IP以及使用者到每個節點的網絡情況、目前各個節點的狀态,來進行計算,通過一些機器學習的方式,來預測使用者到哪個節點的網絡鍊路為最優。這樣就確定給使用者IP位址傳回最優的網絡鍊路。
通過目前節點覆寫情況和使用者通路流量趨勢,進行資料預測,去選擇在哪裡建點,并且去計算這些節點覆寫哪些使用者的網絡品質是最優的,為排程系統提供資料支撐。
通過302做内容粒度的排程,把相同URL排程到同一台機器上,提高命中率。
阿裡雲CDN針對緩存系統也做了很多優化。
通過自研的緩存系統,開發基于裸盤的緩存系統。使用記憶體、SSD、SATA三級緩存架構,把最熱的資源存儲到記憶體中,次熱的資源存儲在SSD中,冷的資源存儲在SATA中,并且通過熱點遷移的方式,把SATA中熱的資源遷移到記憶體和SSD中,再通過淘汰算法,把記憶體和SSD中的冷的資源淘汰到SATA盤中。通過這種方式,提供記憶體和SSD的命中率,降低SATA盤的IO讀寫情況,來存儲更多的冷資源,提高邊緣節點使用率。
同時,自研的檔案系統對IO操作做了很多優化,比如說合并IP對齊寫入功能,避免記憶體碎片和磁盤碎片帶來的IO性能嚴重下降。對大檔案進行切片存儲,分片存儲到不同磁盤中,避免因單個視訊檔案過熱導緻磁盤性能下降。
通過以上的優化措施,緩存的平均命中率在95%以上,首位元組時間平均低于10ms。
第一個優化點是基于時間序的丢包發現機制,主要是在TCP協定棧裡去分析TCP發包的時間序列,然後能夠識别出哪些包丢掉了,快速發現丢包和快速重傳。
第二個優化點是主動丢包發現機制,是指我們在發現包的時候去主動探測,避免通過逾時來發現丢包,減少丢包發現的時間,提高進行重傳
第三個是自适應的初始化視窗,針對不同業務場景使用不同初始化視窗大小。
第四個是更激進的擁塞避免算法,針對網絡不好的情況,在協定棧中識别狀态,使用更激進的發包政策,解決下載下傳速度慢的問題。
第五個優化點是使用更小的連結逾時時間,來更早的發現丢包。
基于以上的優化,我們使用第三方檢測平台,對某短視訊業務1.2M檔案,和其他CDN廠商做性能對比測試,相同檔案大小從内容下載下傳時間上看,使用阿裡雲CDN有2%-6%的性能提升。其餘資料也表現優異。
歡迎大家來使用阿裡雲點播服務、CDN和OSS存儲,來搭建短視訊應用。