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