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