[51CTO.com原創(chuàng)手稿]目前,我們正處于信息迅速發(fā)展的碎片化閱讀時代,綜合圖文優(yōu)點的短視頻越來越受歡迎。
2017年,各大互聯(lián)網(wǎng)巨頭陸續(xù)進軍短視頻領域,短視頻的火爆超出很多人的預期。短視頻真正較量的是內容和用戶體驗。一下科技旗下的秒拍和小咖秀作為短視頻行業(yè)的先行者,截至目前,日播放量峰值突破30億次,日上傳量峰值達200萬。它們是如何做到用戶體驗不受上傳和播放質量影響的呢?近日,51CTO 在以“Tech Neo”為主題的技術沙龍第十五期中邀請到來自一下科技的架構師賈朝藤。他于2014年加入秒拍,推進了秒拍上云,可視化日志分析,基礎架構改造和服務化改造、服務調優(yōu)等工作。并熱衷各種基礎設施實踐,性能調優(yōu),高并發(fā)場景下服務全鏈路的可用性保障。從他的分享中,我們可以了解到秒拍在播放鏈路方面的優(yōu)化實踐。
秒拍后端服務的技術架構
我們先來看看秒拍后端服務基本的技術架構,從上至下分為四層,如下圖所示:
最上層是Web、APP及微博和其他合作方的合作。它們直接面向用戶,為用戶提供最直接的產品服務。
第二層是直接面向服務的業(yè)務邏輯API,提供活動和視頻列表、用戶列表等直觀體現(xiàn)產品和業(yè)務邏輯的數(shù)據(jù)展現(xiàn)。
第三層是用戶、視頻等一系列細分、相對獨立于業(yè)務邏輯的服務。
第四層是基礎服務,如關系服務、計數(shù)服務、搜索服務、Push服務、推薦服務、敏感詞過濾服務、Feed、存儲等。
在整個服務流程中,上傳和播放是很核心的業(yè)務。如下圖,是播放之前資源上傳的流程:
由客戶端向業(yè)務邏輯服務器發(fā)出上傳申請,業(yè)務邏輯服務器告知采用哪個上傳點進行上傳。
七?;蛐吕薙3分別負責存儲上傳的分片,再由上傳端請求合并,由業(yè)務服務器接收視頻傳完之后的回調,進行狀態(tài)的更新,此時整個視頻從物理資源到業(yè)務狀態(tài)處理完畢。
緊接著進行轉碼和截圖處理,進入上傳后的服務處理流程。
其中,存儲主要是依賴第三方,視頻截圖、視頻轉碼等服務主要采用自研服務。
這里值得注意的是,資源上傳過程中需要做很多優(yōu)化。
當前,手機端的功能很強大,足以支撐用戶隨意預覽,更換各種特效。比如特效的預覽,將視頻特效編輯和預覽放到手機端進行,一方面客戶可以直觀體驗視頻效果,另一方面可以充分利用客戶端運算資源,減少服務轉碼的處理壓力。還有視頻拍攝與編輯完后的轉碼壓縮,也會在客戶端做初步處理,再向業(yè)務服務器上傳,然后轉碼服務再做二次處理,借此來進行視頻文件瘦身,降低用戶流量消耗,提升用戶上傳速度。
在視頻生產端,我們有對拍攝、編輯、客戶端轉碼、上傳進行打點上報等相關統(tǒng)計,用于對生產端各環(huán)節(jié)的效率監(jiān)測,推進各環(huán)節(jié)不斷優(yōu)化,以及每個環(huán)節(jié)優(yōu)化后從數(shù)據(jù)上可見的效果改進。
播放&調度歷史演進
綜上是播放之前資源上傳的一些優(yōu)化方式方法,接下來,我們來聊聊播放&調度。秒拍的播放&調度共經歷了三個比較大的版本:
業(yè)務邏輯直接返回播放地址,是播放流程最簡化版
這也是最初的版本,在業(yè)務上線初期,從視頻上傳量到播放量都處于積累期,上傳和播放效率是我們比較關心的問題,但當前最大的痛點是產品形態(tài)必須符合市場需求。這一版主要是由客戶端直接請求業(yè)務API返回的視頻資源地址,基于HTTP協(xié)議,下載之后直接播放。
基于探測點,CDN日志離線計算CDN質量,調度切量,是播放流程的進化版
隨著業(yè)務發(fā)展,視頻日上傳量和播放量越來越大,播放效率變得尤為重要,因為會直接影響到用戶對產品的體驗。
這時,我們新增了不同地域加探測點探測播放及下載質量,采集數(shù)據(jù)點進行質量分發(fā),同時我們也會拿來CDN的下載請求日志進行分析和調度,這一版調度由離線運算判斷最優(yōu)結果,然后業(yè)務邏輯API返回播放地址,客戶端直接進行播放。
第三版是獨立調度服務,實時+離線判斷播放質量,進行調度。
基于上一版的研究,我們基于Nginx+Lua抽出來相對獨立的調度服務,非常輕的處理邏輯,采集端上的播放質量,對用戶所處省、市、地區(qū)、運營商的不同家CDN質量進行比對,然后給用戶最終最優(yōu)的CDN地址。
除播放質量外,還會采集失敗率、播放量之類的一系列參數(shù)和指標,進行分析或故障快速恢復、轉移,防止合作CDN廠商的節(jié)點負載過高,對播放速度造成影響。
另外調度服務還會做一些業(yè)務策略上的處理,比如涉嫌違規(guī)的視頻,在返回播放地址時做出判斷,同時刪除源站視頻及清理CDN緩存。
進化版還在自有IP庫及IP庫數(shù)據(jù)更新維護、防劫持與數(shù)據(jù)上報&日志分析等方面進行了迭代調優(yōu)。
如下,是當前秒拍正在使用的調度系統(tǒng)簡化圖:
在播放調度方面,我們與多家CDN廠商合作,進行質量調度,實現(xiàn)快速接入,進而達到快速返回、弱業(yè)務邏輯、輕量,高效、靈活可控。
不可預測的黑天鵝
在業(yè)務發(fā)展和服務演進過程中一定會遇到不可預測的黑天鵝,如業(yè)務內網(wǎng)中斷,七牛寧波光纖被挖斷等。
為了避免源站出故障影響服務的正常進行,我們采用了多個源站方案,當某源站出現(xiàn)問題,可隨時進行切換,同時各源站之間能夠實現(xiàn)跨源站備份。
在上傳方面,也布設了多上傳點,靈活分配上傳點,保證用戶可以正常上傳。
在播放方面,對服務進行可用性檢測,更及時地調度節(jié)點反饋。對于播放質量調度,可根據(jù)質量服務,調用最優(yōu)的CDN。
海量日志分析和監(jiān)控
秒拍日志的構成主要有:serveraccess log、error log、service log、app log、用戶 log 等。
傳統(tǒng)日志分析的痛點有以下幾方面:
日志量太大、單日志分析太慢、日志分布在不同服務集群、不同節(jié)點無法快速定位服務節(jié)點。
上下游狀態(tài)不可知、定位問題、場景分析效率太低。
故障之后驚群效應、一處反饋、多個組(部門)響應排查、耗費精力。
針對傳統(tǒng)日志分析的痛點,秒拍布設了實時日志分析系統(tǒng),如下圖是部分細節(jié)展示:
ELK實時日志分析系統(tǒng)的主要作用是,當業(yè)務日志進來之后可以直接對其進行分析,以圖表化的方式,快速反饋各項服務狀態(tài)和一些統(tǒng)計信息。當出現(xiàn)問題時可快速感知,同時還有基于ELK的服務監(jiān)控。
結合ELK,系統(tǒng)整合內部監(jiān)控與告警平臺,實現(xiàn)整個視頻拍攝、編輯、上傳、轉碼、分發(fā)、播放的可視化指標對比,保證整個鏈路的效率,與對相關metric的實時告警,保證服務的穩(wěn)定性與可用性。
播放業(yè)務不可缺少的一環(huán)
視頻和圖片在編碼、轉碼的質量,對播放會產生直接的影響。轉碼服務是播放業(yè)務不可缺少的一環(huán),如下圖是整個轉碼服務的流程圖:
當用戶上傳視頻之后,不同業(yè)務端會通過在線或離線的方式提交轉碼任務,由轉碼服務進行異步轉碼,轉出不同規(guī)格的視頻或封面,提供給不同的合作方、不同的列表頁形態(tài)下進行展示。
視頻規(guī)格有多碼流、16:9、webp、隱水印等,轉碼過程要在不影響視頻清晰度、視頻質量的同時把文件大小、碼率等參數(shù)控制在最優(yōu)。這樣一來,從流量、加載速度等方面都可以持續(xù)調優(yōu),讓用戶流暢清晰地看視頻,也能節(jié)省很多流量。
在多碼流這一塊,秒拍采用了變碼率方案,根據(jù)視頻內容去適配碼率,來控制視頻編碼。
寫在最后:
秒拍于2013年8月上線發(fā)展至今,占領了一定的國內市場。在未來,秒拍會在數(shù)據(jù)節(jié)點上發(fā)力,進行異地多活的部署、會針對云廠商不可依賴,會隱藏很多數(shù)據(jù)信息,出現(xiàn)問題不好查找源頭的問題,考慮混合云的改造、還會對自建 CDN 節(jié)點的融入、災備建設和監(jiān)控統(tǒng)計等方面進行完善。當前,短視頻競爭日趨激烈的局面下,希望秒拍在未來的日子里不斷突破創(chuàng)新,越走越遠。讓我們共同期待高速成長的短視頻行業(yè)未來樣子。
【嘉賓簡介】
賈朝藤,下科技(秒拍、小咖秀、一直播)架構師。2014年加入秒拍,推進秒拍上云,可視化日志分析,基礎架構改造和服務化改造,服務調優(yōu)。熱衷各種基礎設施實踐,性能調優(yōu),高并發(fā)場景下服務全鏈路可用性保障。
【51CTO原創(chuàng)稿件,合作站點轉載請注明原文作者和出處為51CTO.com】
1.《每日數(shù)億視頻播放量,秒拍播放鏈路優(yōu)化實踐》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡信息知識,僅代表作者本人觀點,與本網(wǎng)站無關,侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《每日數(shù)億視頻播放量,秒拍播放鏈路優(yōu)化實踐》僅供讀者參考,本網(wǎng)站未對該內容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉載時請保留本站內容來源地址,http://f99ss.com/gl/3359511.html