CDN高階技術專家周哲: 深度剖析短影片分發過程中的使用者體驗最佳化技術點
2018深圳雲棲大會已經圓滿落幕,在飛天技術匯-彈性計算、網路和CDN專場中,阿里雲CDN高階技術專家周哲為我們帶來了《海量短影片極速分發》的主題分享,帶領我們從影片內容採集、上傳、儲存和分發的角度介紹整體方案,並且重點講解短影片加速的注意事項和使用者體驗最佳化要點。
講解從三個部分展開:短影片應用場景,阿里雲短影片解決方案,阿里雲對短影片使用者體驗最佳化的相關最佳化。
短影片應用場景
短影片比圖片和文字包含更多的資訊,在移動網際網路普及的今天,短影片應用場景非常廣泛。
一、 社群分享場景
使用者可以錄製影片,進行特效編輯處理,上傳到伺服器,透過社群的方式分享給好友。
二、 電商場景
商家可以快速拍攝、製作商品的短片,把商品的介紹影片發給消費者,這樣可以提高購買轉化率。
二、 IM聊天場景
在交流過程中,透過隨拍隨傳的短影片,使用者可以更生動的表達觀點,更真實的傳遞情感
三、 新媒體場景
區別於傳統、單一的圖文展示形態,短影片可以快速收集及釋出新聞,一鍵呈現世界
四、 體育賽事場景
整合短影片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做了相關最佳化,比如,透過減少首次緩衝時間,可以設定在受到影片第一個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%的效能提升。其餘資料也表現優異。
歡迎大家來使用阿里雲點播服務、CDN和OSS儲存,來搭建短影片應用。
講解從三個部分展開:短影片應用場景,阿里雲短影片解決方案,阿里雲對短影片使用者體驗最佳化的相關最佳化。
短影片應用場景
短影片比圖片和文字包含更多的資訊,在移動網際網路普及的今天,短影片應用場景非常廣泛。
一、 社群分享場景
使用者可以錄製影片,進行特效編輯處理,上傳到伺服器,透過社群的方式分享給好友。
二、 電商場景
商家可以快速拍攝、製作商品的短片,把商品的介紹影片發給消費者,這樣可以提高購買轉化率。
二、 IM聊天場景
在交流過程中,透過隨拍隨傳的短影片,使用者可以更生動的表達觀點,更真實的傳遞情感
三、 新媒體場景
區別於傳統、單一的圖文展示形態,短影片可以快速收集及釋出新聞,一鍵呈現世界
四、 體育賽事場景
整合短影片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做了相關最佳化,比如,透過減少首次緩衝時間,可以設定在受到影片第一個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%的效能提升。其餘資料也表現優異。
歡迎大家來使用阿里雲點播服務、CDN和OSS儲存,來搭建短影片應用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29779867/viewspace-2152549/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 阿里雲高階技術專家空見: CDN的資料化之路阿里
- 騰訊遊戲學院專家:UE高階效能剖析技術之RHI遊戲
- CDN技術發展
- 影片CDN的技術原理是什麼?
- 奇樂短影片開發功能丨奇樂短影片直播系統開發技術丨python技術語言Python
- 1269道Java技術答疑,阿里技術專家幫你Java技術進階Java阿里
- 需求分析過程中 專案裡可能需要的技術點記錄
- 【技術乾貨】聽阿里雲CDN安防技術專家金九講tengine+lua開發阿里
- DartVM GC 深度剖析|得物技術DartGC
- CTF記憶體高階利用技術記憶體
- 阿里巴巴高階技術專家章劍鋒:大資料發展的 8 個要點阿里大資料
- 聊聊技術管理(一)入行之技術管理和技術專家
- 【技術乾貨】聽阿里雲CDN安防技術專家金九講SystemTap使用技巧阿里
- 奇樂直播短影片系統模式開發技術分析模式
- 「分散式技術專題」剖析一個SQL的解析及執行過程分散式SQL
- 幽默:軟體開發技術中的縮寫短語 - Eleftheria
- 阿里高階技術專家:如何結構化地思考、做事、成長?阿里
- 工業產品開發過程中的PDM技術
- 音影片處理技術中的IP組播技術
- 面試高頻題:講講專案中的技術難點?面試
- 蘇寧影片雲高階技術經理:漫談前端系統架構的演變歷程(中)前端架構
- 理想的技術面試過程面試
- 短視訊技術詳解:Android端的短視訊開發技術Android
- 研發高階能力之「技術規劃」
- 奇樂短影片開發系統丨奇樂社交短影片技術開發案例丨DAPPAPP
- Android高階模糊技術Android
- 高併發技術
- 智慧CDN(中):CDN的系統構成和核心技術
- 愛奇藝短影片軟色情識別技術解析
- 醫療防“統方”技術原理深度剖析
- 奇樂短影片開發技術丨奇樂直播短影片系統程式設計開發詳情程式設計
- 深度解析:分投趣fintoch模式系統開發技術(成熟合約技術)模式
- UNIX find 命令的高階技術 (轉)
- 抖音短影片開發,SDK包含的功能及技術實現方式
- 什麼是cdn技術
- TOKTOK短影片系統DAPP開發丨去中心化短影片丨技術分析APP中心化
- 開發Webview的技術,小的技術知識點WebView
- 七、Spring MVC高階技術SpringMVC