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