如何用云存儲解決短視頻社交產(chǎn)品錐心之痛
2014年,美拍、GIF快手、小偶、微信視頻等產(chǎn)品相繼出現(xiàn),短視頻行業(yè)呈現(xiàn)大爆發(fā)之勢,帶動了時尚潮流的社交新玩法。然而,這個行業(yè)的創(chuàng)業(yè)者們要做出很好的產(chǎn)品,在整個成長過程中會遇到很多的痛點。第七屆中國云計算大會上,七牛云首席架構(gòu)師李道兵對短視頻產(chǎn)品爆發(fā)的影響因素、數(shù)據(jù)層面會遇到的問題做出了詳細(xì)的分析,并提出了短視頻行業(yè)創(chuàng)業(yè)所需要的產(chǎn)品基礎(chǔ)架構(gòu)與云存儲相結(jié)合的解決方案。本文根據(jù)演講內(nèi)容整理而成。
短視頻同時爆發(fā)于2014的影響因素
一、 帶寬
隨著移動4G的推廣,移動用戶(大約占中國手機(jī)用戶的一大半)的網(wǎng)絡(luò)直接從2G時代轉(zhuǎn)變到4G時代,每月流量從幾十MB上升到幾個GB的水平,帶寬直接從僅能提供較慢的圖片下載,到了能流暢地上傳和下載視頻。此外,家用帶寬也隨之增加,10M、100M已經(jīng)成為家用帶寬主流。
二、 娛樂為王的時代來臨
l 硬件的革新。老的照相機(jī)拍完照洗膠卷要幾天,數(shù)碼相機(jī)用USB傳回分享需要一個小時到幾個小時,而手機(jī)是秒級的。手機(jī)像素逐年增高,照片質(zhì)量也提高了很多。拍攝到分享時間的減少,極大程度上提高了大家從拍攝到分享的體驗。
l 產(chǎn)品方面的革新。社交產(chǎn)品大規(guī)模地用了模板、配樂,以大頭視頻或其他方式分享,增加了快樂。畢竟每個人不都是專業(yè)的攝像師,拍攝的質(zhì)量不是很高,但是在專業(yè)軟件的幫助下拍攝的視頻就能夠很大程度上得到朋友的贊同。
l 從論壇到微博和微信的社交模式的轉(zhuǎn)變。在論壇時代,各個論壇都比較獨(dú)立,之后慢慢地進(jìn)入到了微博和微信時代。這個時代和以前的顯著差異是論壇時代主要采用匿名交友的方式,而在微博微信時代進(jìn)入到實名社交、熟人社交的時代。每個人在微博、微信上分享的每一張圖片和每一段視頻都期望得到朋友的贊同和承認(rèn),也期望跟他們得到很好的互動。從傳播過程看,新的社交方式傳播效應(yīng)更顯著、且質(zhì)量與轉(zhuǎn)發(fā)量成正相關(guān),讓大家努力創(chuàng)作高質(zhì)量內(nèi)容,在高轉(zhuǎn)發(fā)下獲得更高的榮譽(yù)感。
三、 用戶的瘋狂增長
做一個短視頻產(chǎn)品在技術(shù)上究竟會遇到什么問題呢?如果產(chǎn)品做的比較好,用戶使用量會瘋狂地增長。逗拍上線幾天后就成為iOS的免費(fèi)榜第一名,迅速達(dá)到了成百上千萬的視頻上傳量,這么大的增長量勢必會對產(chǎn)品的系統(tǒng)架構(gòu)帶來很大壓力,數(shù)據(jù)庫、緩存、存儲層、上傳層、分發(fā)層、業(yè)務(wù)邏輯層都會受到很大的沖擊。
非數(shù)據(jù)部分的壓力大都來自最底層的數(shù)據(jù)庫,所以應(yīng)盡量使用SSD硬盤(畢竟SSD的IOPS相對傳統(tǒng)硬盤提高了2個數(shù)量級),增大數(shù)據(jù)庫處理能力。
緩存層,低壓力下可以不用,在高壓力下,可以使用Memcache或者Redis進(jìn)行水平擴(kuò)展。
業(yè)務(wù)層比較常規(guī),做到消除業(yè)務(wù)狀態(tài)后,伸縮性就變成一個很簡單、很輕松的事情。只要保證無狀態(tài),上一臺或者十臺、一百臺服務(wù)器對架構(gòu)的影響不大。
接入層,水平擴(kuò)展之后用LVS做高可用,不用考慮任何宕機(jī)帶來的不可用問題。網(wǎng)絡(luò)盡量的用一些高品質(zhì)的BGP(畢竟國內(nèi)的網(wǎng)絡(luò)情況比較復(fù)雜)機(jī)房,很大程度上可以提高用戶體驗和客戶訪問性。在BGP機(jī)房只走元數(shù)據(jù),流量成本還能接受,而使用BGP機(jī)房走視頻數(shù)據(jù),費(fèi)用會變得非常昂貴。顯然,短視頻的應(yīng)用數(shù)據(jù)會特別大,需要一個獨(dú)立的方案來解決短視頻的上傳、存儲、處理和分發(fā)問題。
數(shù)據(jù)層面會遇的問題
l 上傳,怎樣從用戶那兒傳數(shù)據(jù)到服務(wù)器呢?一個簡單的十秒視頻經(jīng)過充分壓縮后是1MB左右,60秒可能是6MB甚至更大的文件。在手機(jī)上上傳這個文件,一次性上傳成功率比較低。所以如何設(shè)計一個好的分片上傳方法,通過分片方式提高上傳成功率就變得比較關(guān)鍵。
視頻的上傳涉及到網(wǎng)絡(luò)覆蓋問題,數(shù)據(jù)存儲機(jī)房不適合使用BGP機(jī)房,畢竟帶寬成本昂貴。如何保證上傳的網(wǎng)絡(luò)覆蓋?選擇便宜的機(jī)房意味著它的覆蓋可能不好,做不到很好的客戶體驗,這里可以通過做緩存代理通道或者在全國布置節(jié)點解決。另外一個問題是域名劫持,特別是省市縣的網(wǎng)絡(luò)不太規(guī)范,解決辦法是準(zhǔn)備多套上傳域名或者通過IP上傳。
l 大量數(shù)據(jù)如何存儲
1) 數(shù)據(jù)增長很快,快速達(dá)到幾百TB或者PB級別,團(tuán)隊第一個需要考慮的問題是是否有足夠的經(jīng)驗來運(yùn)維一個分布式存儲軟件。
2) 第二個問題是這個產(chǎn)品會不會火?預(yù)先要準(zhǔn)備多大存儲?是否在一開始就要準(zhǔn)備1PB的存儲呢?大概需要多少臺機(jī)器?如果準(zhǔn)備70到100臺2U12盤的存儲機(jī),一次性投入300萬,機(jī)器放在機(jī)房,每個月花掉不少的機(jī)柜開銷,是否值得?運(yùn)維團(tuán)隊是否在數(shù)據(jù)進(jìn)行存儲時就已經(jīng)準(zhǔn)備就緒?在面臨大流量沖擊(上傳和下載),大量比較熱門的視頻會被大家瘋狂訪問,這些視頻磁盤能否扛得住?運(yùn)維團(tuán)隊能否很好地應(yīng)對磁盤損壞和更換的處理呢?機(jī)器宕機(jī)怎么辦?網(wǎng)絡(luò)是否搭好架構(gòu)?交換機(jī)出故障的時候能否很好處理?這些都是存儲方面遇到的一些痛點。
3) 短視頻不僅有存儲的壓力,同時面臨有大量的數(shù)據(jù)處理需求,例如一些視頻需要截圖作為封面。截圖上需要打一些水印,做適當(dāng)?shù)牟眉艉涂s放適應(yīng)各種屏幕。這樣就還需要有一個處理集群。視頻打水印要消耗服務(wù)器資源,可以放在客戶端完成,但這會增大低端手機(jī)的壓力。即便用戶能利用接口上傳一些沒有打水印的視頻,但也存在潛在的風(fēng)險。
數(shù)據(jù)處理的另一個問題是審查,用戶如果上傳色情視頻怎么處理?如果選擇將這項工作外包給第三方,但第三方從存儲拖視頻查看會占用大量帶寬,導(dǎo)致審查效率下降。此時,如果能在服務(wù)端轉(zhuǎn)碼集群將視頻轉(zhuǎn)成更小的文件格式做審查更合適。如果視頻比較長,比如幾分鐘的視頻,直接播放時卡殼會比較嚴(yán)重。是不是要用HLS模式來播放?這些問題背后都需要有很強(qiáng)力的數(shù)據(jù)處理集群支撐。但這樣一個處理集群要怎樣架構(gòu)呢?需要多大容量?怎么快速擴(kuò)容?圖片和視頻的處理過程中使用的開源處理軟件或者自己寫的處理軟件是否有漏洞?圖片和視頻轉(zhuǎn)碼軟件是否存在安全漏洞?出現(xiàn)CVE時能否快速響應(yīng)?這些都是將面臨的挑戰(zhàn)。如果有人獲得服務(wù)端的權(quán)限入侵服務(wù)器,服務(wù)器防御不好會導(dǎo)致整個網(wǎng)站的數(shù)據(jù)庫被人拖走或者破壞。
4) 分發(fā)問題。挑選CDN提供商要考察以下幾個方面。
a、有無獨(dú)立的多媒體平臺,如果有視頻體驗會更好。
b、MP4是否支持拖拽,這方面CDN要單獨(dú)做支持,根據(jù)你指定的時間發(fā)對應(yīng)的數(shù)據(jù)段給你,這個需要CDN支持。
c、CDN回源率是多少,同樣的CDN分發(fā)1Gbps流量,回到機(jī)房的流量是多少?是100
還是200Mbps?這里面涉及到不小成本的差異。
d、大文件回源是否有優(yōu)化,用戶訪問大文件時,是將整個請求發(fā)回還是請求一小部分?是否會給存儲集群很大的沖擊?小運(yùn)營商的CDN覆蓋情況怎么樣?這些都是作為一個短視頻應(yīng)用的開發(fā)商需要解決的問題。
總結(jié)一下,短視頻應(yīng)用的用戶快速增長,傳統(tǒng)的架構(gòu)瓶頸在數(shù)據(jù)庫,但隨著SSD的廣泛應(yīng)用,數(shù)據(jù)庫的能力已經(jīng)增長到2~3個數(shù)量級,架構(gòu)瓶頸更容易出在數(shù)據(jù)存儲層面而不是傳統(tǒng)的架構(gòu)層面。在這個層面上,數(shù)據(jù)上傳面臨如何設(shè)計分片、保證網(wǎng)絡(luò)覆蓋、降低流量成本、防止DNS劫持?而存儲數(shù)據(jù)處理層面也面臨使用何種存儲技術(shù)?如何避免一次性投入過高?如何運(yùn)維大規(guī)模集群?以上問題不是研發(fā)團(tuán)隊沒法解決,而是在用戶量急劇增長的情況下,應(yīng)該將最好的技術(shù)人員放在解決產(chǎn)品問題上,還是放在可以外包的基礎(chǔ)服務(wù)層面?
云存儲對應(yīng)的解決方案
l 針對上傳問題
如何設(shè)計分片和保證網(wǎng)絡(luò)覆蓋?很多云存儲的SDK都直接支持分片,而網(wǎng)絡(luò)節(jié)點可以大家公用,這時建設(shè)網(wǎng)絡(luò)節(jié)點的成本就會降低,并保證了更高的覆蓋面。在流量成本方面,大部分云存儲行業(yè)上傳通常免費(fèi),收費(fèi)主要體現(xiàn)在存儲和分發(fā)兩方面。
l 針對數(shù)據(jù)存儲問題
1) 數(shù)據(jù)存在云存儲空間將不再占用自己的服務(wù)器,一次性投入成本降低。而只需要維護(hù)一個比較小的量級,常規(guī)的數(shù)據(jù)庫業(yè)務(wù)邏輯和前端緩存層,不用維護(hù)擁有100到200臺服務(wù)器的大集群。
2) 針對數(shù)據(jù)處理,很多云存儲服務(wù)都提供音視頻處理服務(wù),由于云存儲本身處理容量大,用戶對他們的峰值沖擊很小。云存儲供應(yīng)商有較獨(dú)立的安全團(tuán)隊做安全保障,應(yīng)用無須擔(dān)心安全漏洞攻擊的問題。而音視頻轉(zhuǎn)碼方面,考慮到實際的使用率,其實成本比自建的低。
3) 數(shù)據(jù)處理中遇到審查的問題,七牛會幫助客戶設(shè)計一些審查用的轉(zhuǎn)碼,比如將視頻調(diào)成雙倍速或者三倍速,一分鐘視頻在審查端30秒、20秒就播完。將分辨率調(diào)為150x150,去掉聲音,降低碼率,10秒視頻只要40KB左右。審查員可以在一個網(wǎng)頁上播放多個視頻,整個審查效率大幅提高,同時也降低了做審查的成本。降低碼率之后,整個帶寬大幅下降,審查網(wǎng)頁更流暢,審查員的體驗提升。
4) 數(shù)據(jù)分發(fā)方面,云存儲會幫助做一些挑選CDN的工作,會去做一些智能調(diào)度優(yōu)化CDN,避免CDN故障時服務(wù)不可用。同時提供多域名和IP下載來避免域名劫持的問題。
云存儲的發(fā)展已經(jīng)足夠成熟,圍繞數(shù)據(jù)的大部分需求都能夠解決。一個好的云存儲供應(yīng)商更會針對用戶需求幫助客戶設(shè)計解決方案,一起把問題解決掉,這也是短視頻或者其他一些行業(yè)更傾向于采用云存儲或者其他云平臺的重要原因。
短視頻這波風(fēng)潮恰好趕在移動、寬帶、娛樂的風(fēng)口上。有一定偶然性,也有必然性。帶寬提升改變大家溝通的方式,從文字到圖片、聲音、視頻。隨著技術(shù)的進(jìn)步,也會有更多的溝通方式出現(xiàn),比如虛擬世界和全息投影。新的溝通方式會催生很多新的產(chǎn)品。
每個人產(chǎn)生數(shù)據(jù)的能力越來越強(qiáng),比如拍的照片和錄的視頻、去過的地方、通過智能穿戴設(shè)備產(chǎn)生的身體健康數(shù)據(jù)、車輛狀況等。這些數(shù)據(jù)將有著巨大的潛在價值,保存這些數(shù)據(jù)并利用它們也變得越來越重要。谷歌就利用數(shù)據(jù)處理能力成功的把互聯(lián)網(wǎng)從1.0變成2.0,將收集起來的網(wǎng)頁變成搜索功能來滿足用戶,收集用戶的搜索和訪問行為變成廣告投放引擎來滿足客戶。這些都是數(shù)據(jù)價值的體現(xiàn)。
未來數(shù)據(jù)只會越來越重要,你能不能貸款買房決定的不是你的客戶經(jīng)理,而是你背后的信用數(shù)據(jù)和行為數(shù)據(jù)。同樣,做一個網(wǎng)站或者一個應(yīng)用,獲取用戶的能力不僅僅決定你自己的智慧或者直覺,更多決定的是你的數(shù)據(jù)挖掘能力。公司盈利提升,更多取決與你在數(shù)據(jù)挖掘上面走的多深,幫助你更多的盈利。
我相信下一波互聯(lián)網(wǎng)的增長會來自于數(shù)據(jù)的增長和數(shù)據(jù)價值的增長,我也希望七牛云存儲的一站式數(shù)據(jù)平臺能夠在其中起到重要的作用,體現(xiàn)我們的價值。