CDN高級技術專家周哲:深度剖析短視頻分發過程中的用戶體驗優化技術點

来源:https://www.cnblogs.com/jewel0516/archive/2018/04/03/8710090.html
-Advertisement-
Play Games

深圳雲棲大會已經圓滿落幕,在3月29日飛天技術匯-彈性計算、網路和CDN專場中,阿裡雲CDN高級技術專家周哲為我們帶來了《海量短視頻極速分發》的主題分享,帶領我們從視頻內容採集、上傳、存儲和分發的角度介紹整體方案,並且重點講解短視頻加速的註意事項和用戶體驗優化要點。 講解從三個部分展開:短視頻應用場 ...


深圳雲棲大會已經圓滿落幕,在3月29日飛天技術匯-彈性計算、網路和CDN專場中,阿裡雲CDN高級技術專家周哲為我們帶來了《海量短視頻極速分發》的主題分享,帶領我們從視頻內容採集、上傳、存儲和分發的角度介紹整體方案,並且重點講解短視頻加速的註意事項和用戶體驗優化要點。

講解從三個部分展開:短視頻應用場景、阿裡雲短視頻解決方案、阿裡雲對短視頻用戶體驗的相關優化。

短視頻應用場景

短視頻比圖片和文字包含更多的信息,在移動互聯網普及的今天,短視頻應用場景非常廣泛。

一、 社群分享場景

用戶可以錄製視頻,進行特效編輯處理,上傳到伺服器,通過社區的方式分享給好友。

image

二、 電商場景

商家可以快速拍攝、製作商品的短片,把商品的介紹視頻發給消費者,這樣可以提高購買轉化率。

三、 IM聊天場景

在交流過程中,通過隨拍隨傳的短視頻,用戶可以更生動的表達觀點,更真實的傳遞情感

四、 新媒體場景

區別於傳統、單一的圖文展示形態,短視頻可以快速收集及發佈新聞,一鍵呈現世界

五、 體育賽事場景

集成短視頻SDK後,用戶可以在現場實時拍攝和剪輯,生成具有傳播價值的短視頻,通過分享來全網同步賽事

阿裡雲針對短視頻的業務場景,提供了一整套技術解決方案。在主播端,提供了視頻上傳SDK和短視頻SDK,在觀眾端提供視頻播放SDK,在伺服器端提供點播服務、OSS存儲和CDN加速。

image

對於開發者來說,短視頻解決方案的使用流程是這樣的:首先主播端使用短視頻SDK對用戶的視頻進行錄製、特效處理和剪輯,然後將視頻通過上傳SDK上傳到伺服器端,在伺服器端先通過點播服務進行轉碼以及視頻處理,然後把處理好的視頻存儲到OSS上,做持久化保存。在播放端集成播放器SDK,播放器會向CDN請求資源,CDN如果有緩存會把緩存的數據發給客戶端。如果CDN緩存沒有數據會去OSS中拉取數據,在返回給客戶端,並把數據緩存到CDN上。開發者使用這些技術組件,可以快速的開發短視頻業務。

image

下麵,我們逐一介紹解決方案的能力與特點。

解決方案中的視頻SDK,包括短視頻、上傳和播放三個。短視頻SDK包含人臉貼圖、高級美顏的功能,在用戶錄製視頻之後先進行本地美顏再進行上傳,同時也提供專業濾鏡、MV特效和裁剪壓縮、添加音樂的功能,使視頻剪輯大眾化;上傳SDK通過快速通道可以把視頻傳輸到伺服器端,支持斷點續傳、後臺上傳、多文件管理等功能;播放器SDK支持Android、IOS、flash、H5等多個平臺、加密播放和安全下載等。

點播和存儲服務,點播服務提供視頻管理相關的功能,比如視頻轉碼,窄帶高清可以在相同的用戶觀感體驗下,節約30%的帶寬;雲剪輯功能可以線上對視頻進行編輯處理;同時點播服務提供豐富的數據統計,開發者利用阿裡雲提供的API訪問實時數據。

image

同時,阿裡雲也在視頻領域開放了AI技術,包括內容審核,降低違規風險;智能封面,對視頻結構化處理和演算法選取最優視頻幀作為視頻封面;標簽預測,通過AI來識別視頻中文字、圖像、人物等信息,自動生成視頻標簽等。

基於短視頻業務產生的海量數據,阿裡雲也提供了高可靠、強安全、低成本的存儲服務。

為了應對短視頻大規模的業務需求,阿裡雲CDN建設了大量的基礎設施。

image

首先,阿裡雲CDN擁有全球1200多個節點,分佈在全球各個國家和地區,貼近用戶部署,使用戶更快速的訪問視頻內容,使視頻體驗更好。同時,為了面對業務的突發流量,阿裡雲提供了超過80TB的帶寬儲備,為持續增長的業務保駕護航。並且,單節點緩存容量超過1PB,通過提供更大的緩存空間,來提升用戶訪問速度。

介紹完瞭解決方案之後,周哲老師又為大家介紹了阿裡雲在短視頻領域的一些優化技術。

短視頻用戶體驗的關鍵指標有首屏時間、播放卡頓和播放錯誤。

一、首屏時間是指在視頻穩定播放期間,從用戶點擊播放到視頻開始播放之間的時間差。首屏時間越長,會導致用戶提前結束播放。

二、播放卡頓是指在播放過程中的不流暢情況,會嚴重影響用戶體驗。

三、播放錯誤是指用戶播放視頻時沒有成功播放,或出現異常導致提前中斷。

用戶體驗優化剖析

為瞭解決這些問題,我們對整個架構進行剖析。

首先,終端用戶使用阿裡雲提供的視頻SDK來請求調度伺服器,調度伺服器返回對應的節點IP,然後播放器通過CDN的節點IP來請求資源,CDN的邊緣節點如果有緩存的話可以從本地發給播放器,如果沒有緩存就去二級節點進行訪問,二級節點沒有緩存會去OSS或者用戶源站拉取數據。

image

阿裡雲CDN有一級節點、二級節點的緩存,二級節點的作用是
第一,做資源收斂,避免相同請求同時回源,減少源站壓力
第二,離邊緣節點接近,在邊緣節點沒命中的時候,能夠更快的從二級節點獲取到數據
第三,提供更大的存儲空間,提高命中。

同時,阿裡雲對於整個播放過程,進行一些用戶體驗相關的數據打點,通過這些數據來進行分析,得到了一些優化點。

第一就是播放器

播放器是否優化決定了終端用戶的觀看質量。首先,我們對播放器SDK做了相關優化,比如,通過減少首次緩衝時間,可以設置在收到視頻第一個I幀就開始解碼播放;提供動態緩存大小,當出現網路抖動的時候,可以動態增加緩存大小,對數據進行預載入,通過這種方式來降低卡頓率;針對播放錯誤,播放器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。

image

基於用戶體驗的TCP協議棧優化

第一個優化點是基於時間序的丟包發現機制,主要是在TCP協議棧里去分析TCP發包的時間序列,然後能夠識別出哪些包丟掉了,快速發現丟包和快速重傳。

第二個優化點是主動丟包發現機制,是指我們在發現包的時候去主動探測,避免通過超時來發現丟包,減少丟包發現的時間,提高進行重傳
第三個是自適應的初始化視窗,針對不同業務場景使用不同初始化視窗大小。

第四個是更激進的擁塞避免演算法,針對網路不好的情況,在協議棧中識別狀態,使用更激進的發包策略,解決下載速度慢的問題。

第五個優化點是使用更小的鏈接超時時間,來更早的發現丟包。

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

image

歡迎大家來使用阿裡雲點播服務、CDN和OSS存儲,來搭建短視頻應用。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. # cd /usr/local/src 2. # tar -zxvf redis-3.0.6.tar.gz 3. # cd redis-3.0.6 4.# make 5.# make PREFIX=/usr/local/redis install 6.cd /usr/local 有redis目 ...
  • 一、以單機模式啟動成員節點 有時候出於維護的需要,需要以單機模式啟動某個節點而不是一個副本集成員身份。 1).首先查詢伺服器命令行參數 2).關閉當前副本 3).以單機模式啟動副本 這裡需要指定副本原先的db路徑,為了避免可能的其它連接這裡可以指定一個新的port啟動;也可以直接使用原先的配置文件啟 ...
  • 1、如果要實現文件的拖放就必須安裝lrzsz 2、解壓(看命令就可以) 3、刪除一些不必要的文件 4、修改配置文件 ...
  • 1、修改本機上的YUM源配置文件,將源指向自己 cd /etc/yum.repos.d/ 備份原有的YUM源的配置文件 rename .repo .repo.bak * rename CentOS-Media.repo.bak CentOS-Media.repo * 修改配置文件 2、掛載光碟 在m ...
  • 一、storm何許人也?Storm 是Twitter的一個開源框架。Storm一個分散式的、容錯的實時計算系統,它被托管在GitHub上,遵循 Eclipse Public License 1.0。Storm是由BackType開發的實時處理系統,BackType現在已在Twitter麾下。GitH ...
  • 問題: 127.0.0.1:6379> set name 張泰松OK127.0.0.1:6379> get name"\xe5\xbc\xa0\xe6\xb3\xb0\xe6\x9d\xbe"set name 是中文,但 get 出來的卻不是中文 解決辦法: 127.0.0.1:6379> quit ...
  • 本文目錄:1.創建存儲過程、函數 1.1 存儲過程的IN、OUT和INOUT2.修改和刪除存儲過程、函數3.查看存儲過程、函數信息 在MySQL/MariaDB中,存儲過程(stored procedure)、存儲函數(stored function)、觸發器(trigger)、事件(event)統 ...
  • 今天我們就來分析微社區的基本功能構成吧。首先,每個論壇最主要的是會員在對應的版塊下發帖,或者在感興趣的主題帖下跟帖蓋樓。其次,會員能時時看到帖子或版塊的基本信息。所以主要大塊是: 前臺:會員的註冊登錄,瀏覽版塊,發帖,跟帖,對自己的帖子操作,回覆別人的帖子 後臺:管理員對版塊進行分級管理,添加或修改 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...