深度剖析短視頻分發過程當中的用戶體驗優化技術點

在剛落幕的2018深圳雲棲大會飛天技術匯-彈性計算、網絡和CDN專場中,阿里雲CDN高級技術專家周哲爲咱們帶來了《海量短視頻極速分發》的主題分享,帶領咱們從視頻內容採集、上傳、存儲和分發的角度的技術方案,而且重點講解短視頻加速的注意事項和用戶體驗優化要點。算法

短視頻比圖片和文字包含更多的信息,在移動互聯網普及的今天,短視頻應用場景很是普遍。針對短視頻的業務場景,提供了一整套技術解決方案。在主播端,提供了視頻上傳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作了相關優化,好比,經過減小首次緩衝時間,能夠設置在受到視頻第一個P幀就開始解碼播放;提供動態緩存大小,當出現網絡抖動的時候,能夠動態增長緩存大小,對數據進行預加載,經過這種方式來下降卡頓率;針對播放錯誤,播放器SDK實現了網絡重試機制,來提供播放成功率。

第二個優化是針對調度系統,用戶在訪問邊緣節點的時候,訪問調度服務器,調度服務器返回的IP地址是否是最優的網絡鏈路,這個很大程度上影響用戶對於視頻的下載速度。阿里雲自研了智能調度系統,能夠選擇用戶到邊緣節點的最優鏈路,來反饋給客戶端。

第三是阿里雲提供很是多的網絡節點覆蓋,讓邊緣節點距離用戶更近,來提高用戶訪問速度。

第四個優化點是在用戶向CDN服務器獲取數據時,當出現網絡抖動的時候,會有下載速度下降狀況產生,阿里雲CDN針對TCP協議棧進行優化,經過更高效的協議棧算法來提高下載速度。

第五個優化點是開發者可使用阿里雲提供的窄帶高清功能,來下降播放視頻的帶寬。

第六是用戶在訪問邊緣節點的時候,若是請求在邊緣節點MISS會直接回源,應時間變慢,而若是邊緣節點命中,用戶的下載的速度就和邊緣節點緩存服務器的性能具備強關聯性了,阿里雲針對緩存服務器的性能作了不少優化,經過加大邊緣服務器的空間和智能優化,來提高訪問速率。

第七,阿里雲也支持全鏈路監控,來提前發現問題,針對性優化,確保穩定服務

 

智能調度系統優化

這裏詳細介紹一下智能調度的優化,針對調度系統,阿里雲作了五個方面的優化,第一個是精準的IP數據庫會持續更新,基於第三方IP庫數據、whois平臺和淘寶手機用戶在訪問數據時的一些經緯度信息,會對IP庫進行主動探測,基於這些維度的數據,進行計算和生成。IP庫數據的準確性會對調度系統提供數據支撐。

第二個是提供HTTPDNS服務,用戶經過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協議棧裏去分析TCP發包的時間序列,而後可以識別出哪些包丟掉了,快速發現丟包和快速重傳。
第二個優化點是主動丟包發現機制,是指咱們在發現包的時候去主動探測,避免經過超時來發現丟包,減小丟包發現的時間,提升進行重傳
第三個是自適應的初始化窗口,針對不一樣業務場景使用不一樣初始化窗口大小。
第四個是更激進的擁塞避免算法,針對網絡很差的狀況,在協議棧中識別狀態,使用更激進的發包策略,解決下載速度慢的問題。
第五個優化點是使用更小的連接超時時間,來更早的發現丟包。


基於以上的優化,咱們使用第三方檢測平臺,對某短視頻業務1.2M文件,和其餘CDN廠商作性能對比測試,相同文件大小從內容下載時間上看,使用阿里雲CDN有2%-6%的性能提高。其他數據也表現優異。

相關文章
相關標籤/搜索