我們公司主要做視頻在線點播,還有少量視頻下載。比較關(guān)心網(wǎng)絡(luò)加速,首先就是價格,其次是首播時間、流暢率這幾個核心性能指標。目前使用阿里云PCDN也有幾個月了,整體結(jié)果是超預(yù)期、值得安利的。寫這篇文章,希望能通過選型對比、接入過程、效果實現(xiàn)幾個方面的真實感受,給還在猶豫的同行們一些啟發(fā),希望文章內(nèi)容對你們有所幫助。
廢話少說,先直接說效果:每月的
CDN費用比以前少了近50%,首播時間、流暢率略優(yōu)于使用中的2家CDN。這個結(jié)果真是讓人喜大普奔,原以為PCDN價格比CDN低這么多,性能會不好,沒想到這貨不僅價格低,性能比CDN還只好不差,一年能給老板省將近100萬,媽媽再也不用擔心我的年終獎啦。這個羊毛究竟該怎么薅,請聽我一一道來。
先說選型階段,是什么原因讓我們選擇了阿里云PCDN?
上半年公司花大力氣推廣,我們的視頻點播業(yè)務(wù)量增長挺快。業(yè)務(wù)量大了,不僅帶寬成本有壓力,我們也同樣壓力山大,怕產(chǎn)品服務(wù)不穩(wěn)定,怕出各種問題。于是乎,我們一方面找目前使用的CDN公司申請價格折扣,申請服務(wù)質(zhì)量保障;另一方面,也在不斷尋找其他質(zhì)優(yōu)價廉的CDN產(chǎn)品。
現(xiàn)在CDN各家公司競爭也很激烈,基本都能爽快的給一定的折扣,但價格還是不夠理想。找來找去,最后目光落在了P2P上。剛開始看到P2P,其實我內(nèi)心是拒絕的,P2P讓人聯(lián)想到網(wǎng)上各種BT下載工具,這玩意雖然價格低,但性能指標能得到保障嗎?看了幾份P2P CDN的產(chǎn)品資料后,似乎跟我之前印象中的P2P不太一樣,覺得還像那么回事。但深入了解之后,問題來了。要使用P2P CDN,各家都是要在客戶端上集成SDK,SDK集成難度、SDK大小、SDK出bug后是否影響到主APP等各類因素都會可能造成影響。另外,從P2P原理上看,要有一定的P2P分享率,可能需要在終端上傳流量。我們的視頻點播業(yè)務(wù)在OTT盒子和移動端上都有,一旦在終端上傳流量,不僅會占用帶寬影響用戶體驗,而且還要在終端劃一塊存儲空間用于緩存內(nèi)容,頻繁讀寫T卡/ROM也將影響到終端的壽命。這些問題對我們都很致命,如果這些問題真的存在,即使P2P CDN成本低,我們也沒法使用。
細了解下來發(fā)現(xiàn),現(xiàn)在不光CDN競爭激烈,連P2P的競爭也是異常激烈。期間各家P2P CDN公司輪番來宣講產(chǎn)品,吹的天花亂墜。但外行看熱鬧,內(nèi)行看門道,任你把牛皮吹破,我們有自己關(guān)心的點,達不到要求的話,再怎么吹也不會用。下面分別說說吧:
1、騰訊云P2P CDN: 騰訊云目前在大力推廣他家的CDN,價格比較低,性能上還不好說。他家的CDN商業(yè)化時間不長,用到的P2P技術(shù)還不能公開申請,應(yīng)該還處于公測階段吧。主要問題是,如果要使用P2P,必須要終端上傳,這個是無法接受的,只能放棄。
2、星域CDN: 星域CDN其實是迅雷下面的一家做
云計算的公司,P2P技術(shù)來自于迅雷。星域CDN做了賺錢寶這樣的硬件終端,用于收集用戶的家庭出口帶寬。由于有一些這樣的硬件P2P終端節(jié)點的存在,使得客戶端APP可以不用上傳流量即可有P2P分享率。SDK大小適中,可以接受。但是他們?nèi)狈σ曨l點播業(yè)務(wù)的客戶案例,并且他們來介紹產(chǎn)品的人,對于星域CDN在視頻點播上的性能表現(xiàn),看起來也沒有很大的信心。這讓我們比較擔心,我們業(yè)務(wù)體量在快速增長,我們可不愿意當小白鼠,一旦出問題,這鍋我們背不起。
3、阿里云PCDN: 和星域CDN類似,阿里云也在全國各地發(fā)展了很多終端硬件設(shè)備,用戶貢獻帶寬獲得一定的收益,像優(yōu)酷路由寶就是他家自有的設(shè)備,所以也不需要在設(shè)備上傳流量就有P2P效果。而和星域比起來,阿里云對各種業(yè)務(wù)場景的支持比較全面,視頻點播和下載業(yè)務(wù)領(lǐng)域已經(jīng)有不少成熟的案例,并且優(yōu)酷全站都使用了PCDN,這重燃了我們的信心。另外, 它的SDK不僅對接很快,而且大小在100KB左右,集成SDK后幾乎不增大APP體積。SDK中跑具體業(yè)務(wù)的內(nèi)核可以遠程升級,如果出了問題,可以直接停用或者遠程升級,APP不用發(fā)版,這個很炫。
4、云帆加速: 云帆其實是想賣他們的CDN,通過把P2P免費給我們用,從而把CDN價格做的偏高。云帆的P2P必須要在終端設(shè)備上傳流量才會有P2P效果,這個沒法接受。云帆目前還是個創(chuàng)業(yè)公司,他們目前還做了很多其他業(yè)務(wù),對于創(chuàng)業(yè)公司而言,人少而業(yè)務(wù)攤的太多,產(chǎn)品不一定能做精,資源也不能得到很好的保障。我們還是希望跟成熟穩(wěn)定的大公司合作。
最終,我們決定使用阿里云PCDN測試看看效果。
隨之而來的就是非常關(guān)鍵的一步—— 接入,這是最能考驗服務(wù)質(zhì)量和易用性的一步了。
首先在阿里云官網(wǎng)找到PCDN產(chǎn)品,申請開通。PCDN開通后,還要提供阿里云CDN域名和url給他們后臺,說是要匹配規(guī)則,然后就把SDK和對接文檔發(fā)給我們了。阿里云的人專門拉了釘釘群來支持我們的SDK集成和測試,他們的產(chǎn)品技術(shù)同學都在里面,響應(yīng)的還挺及時,碰到問題都能很快解決,這要贊一個。
他們的SDK整體還比較簡單,就三個接口:啟動、停止和地址轉(zhuǎn)換。SDK對接照著他們給的文檔進行就可以了,APP的業(yè)務(wù)邏輯也不需要更改。從開始對接到集成成功,一共就花了不到一個小時,我數(shù)了數(shù),總共也就4行核心代碼,這有點顛覆我以前對SDK集成的認知,沒想到這么簡單。給你們看看我是怎么做到的吧。
和大多數(shù)SDK一樣,啟動APP時啟動SDK,傳入阿里云分配給我們的token,這樣就把PCDN服務(wù)啟動起來了。
1
需要播放視頻時,播放器拿到云端提供的播放url地址后,增加一步調(diào)用SDK獲取PCDN播放地址,然后使用PCDN提供的本地地址播放即可。
2
最后再退出應(yīng)用程序時停止PCDN服務(wù)即可。
3
我們在APP上做了埋點監(jiān)測,比對了首播時間、流暢度等指標,PCDN的指標略優(yōu)于我們使用的CDN,這些關(guān)鍵指標測試下來,效果還是比較滿意的。另外,阿里云PCDN有兩點是超出了我們預(yù)期的。
第一個就是PCDN支持下載限速,我們大部分的業(yè)務(wù)是點播,有少部分的視頻是要下載的,下載都是后臺進行,要求下載的同時還能夠流暢的播放視頻,同時也希望盡量限制在帶寬高峰期下載的速度。這就要求對下載進行限速了,還好阿里云PCDN已經(jīng)支持了下載限速這個功能,下載速度可以由我們靈活控制,這個功能很好的解決了我們的問題。
第二個就是解決視頻被劫持的問題。之前時不時有用戶反映視頻沒法播放,經(jīng)過分析基本都是域名被運營商劫持造成的,這種情況尤其在一些小地方小運營商中出現(xiàn),比較頭疼。給我們提供服務(wù)的CDN公司也能解決域名劫持的問題,但需要在APP上集成SDK,我們是不大愿意單純?yōu)榱诉@一個功能去集成SDK的。剛好阿里云PCDN SDK自帶了HTTPDNS功能,保證了域名解析的正確性,避免域名被劫持的情況,并且HTTPDNS還免費給我們用,簡直太方便太貼心了有木有。
成功接入后,我們就要看看效果了,畢竟老板們對數(shù)字指標是相當關(guān)心啊。
我們內(nèi)部測試驗證了一周左右。從測試情況看,產(chǎn)品穩(wěn)定性不錯,各方面性能指標也都達到了要求。但這畢竟只是實驗室?guī)讉€測試同學的測試,要真正反映產(chǎn)品表現(xiàn),還是要大量數(shù)據(jù)來說話。阿里云PCDN的同學建議我們控制渠道灰度發(fā)布,有較多的用戶使用才會體現(xiàn)出P2P效果來。經(jīng)過跟老板商量,我們挑了個渠道,灰度發(fā)布了版本。幾個小時后,就有幾千的安裝量,幾千個用戶對于驗證PCDN效果也足夠了。
接著又是一周時間,我們持續(xù)觀察了各方面的數(shù)據(jù),首播時間跟CDN不相上下,流暢度方面,使用CDN時流暢度98%左右,使用PCDN時流暢度98.5%左右,下載穩(wěn)定性和完成率也符合要求,整體的表現(xiàn)還是很不錯的。老板看到測試數(shù)據(jù)比較滿意,同時,阿里云PCDN的同學對我們的問題的響應(yīng)和支持都比較及時,老板果斷決定正式上線PCDN產(chǎn)品,在各個渠道逐步全量發(fā)布。
現(xiàn)在,我們使用PCDN有幾個月時間了,新版本的覆蓋率已經(jīng)很高了。產(chǎn)品還是很穩(wěn)定的,即使偶爾有問題也能很快得到解決,這是我們非??粗氐囊稽c,省了很多麻煩。雖然業(yè)務(wù)增長,帶寬量也在增長。但使用PCDN后,每月的帶寬支出卻實實在在的省了不少。照這個情況看,每年就能省將近100萬的帶寬費用了。而這所有的一切,只是花了不到一個小時集成阿里云PCDN SDK,增加了4行核心代碼帶來的成果,真是相見恨晚。