商業(yè)CDN回歸初心:專注細(xì)節(jié),最大限度提升分發(fā)效率
10月20日Live video Stackcon2017音視頻大會在京舉行,音視頻行業(yè)技術(shù)精英齊聚一堂,探討2017年這一年里音視頻的技術(shù)演進(jìn)發(fā)展以及未來的趨勢。CDN作為音視頻內(nèi)容分發(fā)的重要一環(huán),自然不能缺席,Akamai、網(wǎng)宿、云帆加速等均出席了此次盛會。云帆加速聯(lián)合創(chuàng)始人&CTO扶凱在此次大會受邀作了題為《大視頻時代的CDN》的技術(shù)分享。
2017音視頻大會——云帆加速扶凱演講現(xiàn)場
CDN初心還在?
眾所周知,90年代互聯(lián)網(wǎng)發(fā)展之初,CDN便伴隨著互聯(lián)網(wǎng)的發(fā)展應(yīng)運而生,解決了“世界在等待”的局面,這即是CDN最初存在的意義,也是CDN行業(yè)誕生的初心——服務(wù)于互聯(lián)網(wǎng)企業(yè),做互聯(lián)網(wǎng)背后的強大支撐。如今視頻行業(yè)在直播、VR、4k等技術(shù)的更新迭代中出現(xiàn)了爆炸式增長,CDN作為視頻領(lǐng)域的剛需在這個大環(huán)境下進(jìn)入了火拼狀態(tài),藍(lán)海市場漸入紅海,各家拼盡全力突圍,CDN價格一降再降,但這背后初心是否還在?視頻企業(yè)理想的CDN服務(wù)究竟是怎樣的?
云帆加速聯(lián)合創(chuàng)始人&CTO扶凱
扶凱,作為一個擁有15年從業(yè)經(jīng)驗的資深CDN專家,并有著在土豆、音悅臺等多家甲方企業(yè)擔(dān)任架構(gòu)師、CTO的履歷。此次分享,結(jié)合了他甲方公司和云帆加速的創(chuàng)業(yè)經(jīng)歷從甲乙兩方介紹CDN企業(yè)該如何做好視頻企業(yè)的技術(shù)服務(wù),回歸初心。
視頻企業(yè)爆發(fā)式增長之煩惱:文件存儲和用戶體驗
視頻企業(yè)在爆炸式增長過程中也是不斷經(jīng)歷曲折,雖然中國視頻技術(shù)水平整體已經(jīng)提升了很多,但根據(jù)廣泛的市場調(diào)研所知,仍有兩個行業(yè)的最重要的“老大難”問題:文件存儲和用戶體驗,而這兩個問題也是關(guān)乎視頻企業(yè)生死的大事。
首先,文件存儲是視頻網(wǎng)站系統(tǒng)容量最基本也是最關(guān)鍵的模塊。隨著UGC的發(fā)展,對于大型視頻網(wǎng)站而言,每天都會有海量的文件數(shù)據(jù)從用戶端上傳至網(wǎng)站上后,轉(zhuǎn)碼成不同清晰程度, 這時一個視頻會變成多份, 像高清,標(biāo)清,流暢。這對網(wǎng)站服務(wù)器的存儲空間而言,形成了極為嚴(yán)峻的挑戰(zhàn),視頻所需要的存儲空間在快速的上升。
一般而言,文件處理過程涉及層次較多,對文件的分類及定義尤其重要。如下大型視頻網(wǎng)站的文件處理過程:
在存儲方面,扶凱表示用戶上傳的文件會經(jīng)過轉(zhuǎn)碼和審核后本身就會生成不同的清晰程度,然后***種轉(zhuǎn)碼后不同清晰程度的視頻文件, 會存儲在至少3個機房內(nèi)如A/B/C,這無疑更加大了存儲器的負(fù)擔(dān)和空間占用,但為了可用性考慮這又是必須的,當(dāng)任何 A or B or C 的機房異常時都可以有另外的二個機房正常工作, 當(dāng)存儲三份可以最少保證有二個機房異常時能正常的工作。
扶凱提到在用戶體驗方面,上傳而來的文件, 在后期用戶訪問幾次以后,大數(shù)據(jù)分析系統(tǒng)會根據(jù)這些訪問記錄,將文件定義為冷門文件和熱點文件,然后熱門文件會被推送至邊緣節(jié)點以供就近調(diào)用,而冷門文件依然存儲在上層服務(wù)器中,調(diào)用的時候從上層直接調(diào)取,另外網(wǎng)站編輯本身也會根據(jù)需要給某個文件標(biāo)記為熱門。
以上提到的存儲體驗一體化解決方案看似***,其實存在著一些問題:邊緣存儲空間可能存在的浪費,有的文件并不一定能訪問到,小運營商或特定地區(qū)訪問的性能問題。例如,所有網(wǎng)站新上傳的文件列表中,究竟推多少文件到邊緣?而且對文件訪問而言,本身又具有地域特性,北京網(wǎng)友與上海網(wǎng)友在觀看習(xí)慣上絕對會有差異。小運營商也是完全不同,而冷熱文件的定義是算法算出來的,具有普遍性,如同平均值并不能展示地域性的個性化特點,所以會引起大量的上層節(jié)點的訪問。
商業(yè)CDN回歸初心:專注細(xì)節(jié),***限度的提升分發(fā)效率
扶凱詳細(xì)介紹了商業(yè)CDN 加速在這方面的處理方式:首先商業(yè)CDN的存在是對超大型視頻網(wǎng)站內(nèi)容分發(fā)上的補充和支持,運行原理則是“用空間換流量,用回源換空間”。所以較之視頻網(wǎng)站,在架構(gòu)上具有更加分明的層級。
CDN架構(gòu)中,用戶在就近訪問最邊緣的節(jié)點,節(jié)點中的存儲空間內(nèi)的文件服務(wù)用戶,過程是用空間換流量,但由于邊緣服務(wù)器存儲空間有限,會讓部分冷點文件用回源方式進(jìn)行重新獲取。商業(yè)CDN作為超大型視頻企業(yè)內(nèi)容分發(fā)的補充,做為這點,可以補充具有地域特征文件訪問,另外上一層依然使用自己的,更加保證了源站的安全。
定制交換機,EdgeControl用來邏輯處理,Cache軟件用來管理存儲
而CDN單個節(jié)點主要是解決存儲和速度的問題,云帆加速定制了ospf交換機用來批量管理、批量配置機房,可以隨時屏蔽宕機機器。
在實際用戶訪問過程中,每個客戶的特性都不一樣,邏輯(需求)也是千奇百怪。所以邊緣節(jié)點分成二個部分,EdgeControl用來做邏輯的處理,Cache用來存儲,通過7層 hash將每個文件在節(jié)點上只存儲一份。因為只存儲一份, 這時有大量并發(fā)的熱點時很容易異常, 所以當(dāng)熱的請求發(fā)過來時, 云帆會使用熱點遷移,云帆加速在技術(shù)使用的是隊列,即將URL做成隊列,當(dāng)URL的 隊列值達(dá)到一定的數(shù)量會立刻存儲到所有邊緣,提高處理效率。
在Cache處理文件存儲時,并不是整個文件來存儲,而是將文件分割成1M的存儲塊,然后存儲到我們的文件系統(tǒng)。所以整個硬盤的塊存儲都是物理上真實按一塊塊存儲到硬盤上的分塊, 但當(dāng)用戶的 HTTP 來請求時響應(yīng)所發(fā)出來是一個邏輯的完整的文件。所以這些物理分塊都是安排平均分布在硬盤里進(jìn)行,帶來的好處分為以下幾方面;
1、當(dāng)有大量的IO在一個文件上的時候,能保證所有的IO都是一致的;
2、當(dāng)其中一個硬盤出現(xiàn)故障,只需要去上層重新取這一個硬盤上的文件過來,放在其它盤上,能有效避免宕機,有效提升硬盤數(shù)據(jù)處理效率,就算“歸國四子”同時公布戀情都能扛得住。
3、即便是某個硬盤宕機了,也不會影響文件的傳輸,云帆加速可以通過回源調(diào)取分布在宕機硬盤里存儲模塊,平均分布在其他硬盤里。
4、按需存儲,按需回源,拖動效率高。比如用戶在看戰(zhàn)狼2,按照觀看習(xí)慣,片頭和片尾被跳過的幾率是很高的,所以存儲的時候片頭和片尾都會存儲在上層并取下來, 因為沒有訪問,而正片部分存儲在邊緣。
5、進(jìn)行文件刪除時,因為是將文件分成若干模塊遍布在各個硬盤之中,刪除時也不會占用IO只對文件在內(nèi)存的記錄中去掉。
另外,扶凱重點提到了云帆加速在文件存儲的一個細(xì)節(jié)——目錄刷新,也做了一個質(zhì)的突破。基本上,文件路徑在存儲上一經(jīng)修改,可立即全網(wǎng)生效,這個在行業(yè)內(nèi)是領(lǐng)先的。而且云帆加速在業(yè)務(wù)語言上有根據(jù)本身接觸的業(yè)務(wù)做了進(jìn)一步的優(yōu)化,客戶可以按照自己的習(xí)慣定制業(yè)務(wù)語言,而這直接大幅度縮減了程序上來回反復(fù)的步驟,運維不需要提交工單,直接根據(jù)業(yè)務(wù)語言代碼定位問題所在。
CDN怎樣幫助視頻企業(yè)提升用戶體驗?
CDN存在之初就是為了解決“世界在等待”的問題,所以行業(yè)需要解決的就是分發(fā)效率,盡可能的縮短內(nèi)容抵達(dá)觀眾那一頭所需的時間。
這里就要提到智能調(diào)度,而云帆加速調(diào)度系統(tǒng)分為:流量調(diào)度和邊緣化調(diào)度兩個部分。
一般來講,調(diào)度都是全局調(diào)度,擁有一個調(diào)度中心來協(xié)調(diào)所有的調(diào)度請求,但是在實際處理問題的時候發(fā)現(xiàn),這種調(diào)度在接收請求很大時,很容易因為動態(tài)的請求,需要查詢很多相關(guān)系統(tǒng),所以處理能力低下,而導(dǎo)致調(diào)度失敗,用戶請求文件也將無法順利抵達(dá)用戶端,用戶將進(jìn)入持久的等待。所以云帆加速在調(diào)度上做了一個新的嘗試,也將調(diào)度邊緣化,采取無中心的調(diào)度。所有的cache都是調(diào)度服務(wù)器,有多少cache服務(wù)器就有多少調(diào)度器。當(dāng)訪問到調(diào)度器上時,調(diào)度器會區(qū)分出來這是調(diào)度請求還是用戶最終訪問請求,然后再根據(jù)這個結(jié)果來處理,不但302可以這樣調(diào),甚至連DNS都是如此。“為了防止DNS被打死,每一臺機器也都是DNS的服務(wù)器。”
同樣在在動態(tài)回源的過程中有一個經(jīng)典的場景,在這個結(jié)構(gòu)里面,邊緣的用戶請求就近的節(jié)點,就近的節(jié)點回就近的上層源。但有時遇到邊緣節(jié)點沒辦法訪問上層的問題。在這種結(jié)構(gòu)內(nèi)部,任何一個點或者邊緣的點都可以立即切換其它邊緣做為代理上層, 在云帆的架構(gòu)中所有節(jié)點都可以同時作為上層或者下層,不用擔(dān)心誰是上層誰是下層,讓文件傳輸路徑暢通無阻,一觸即達(dá)。
CDN的未來趨勢
扶凱作為從業(yè)15年的業(yè)內(nèi)資深CDN專家,見證過CDN的從無到有的成長。在他眼里,未來CDN的發(fā)展勢必會朝向差異化路線發(fā)展,比如CDN+P2P的方式。云帆加速與國內(nèi)外多家知名公司的合作中都有P2P的合作,另一方面云帆在大力推行自己的安全服務(wù)比如抗DDOS服務(wù)、流量清洗服務(wù)、WAF服務(wù),還可以做很多AI的事情,比如自己數(shù)據(jù)中心機器的連接數(shù),IO占用等信息送到大數(shù)據(jù)里面學(xué)習(xí),自動校驗, 用于自動發(fā)現(xiàn)故障和異常等。
扶凱提出,以前大部分人都把CDN當(dāng)一個靜態(tài)的服務(wù),但是其實它是最前端通用的網(wǎng)關(guān)接口呢?它離用戶最近,能做的事非常多。相信在未來, 企業(yè)會需要更多類似云帆加速針對網(wǎng)絡(luò)傳輸所做的細(xì)小創(chuàng)新,“精致而美麗”才是CDN企業(yè)與客戶長久陪伴的“初心”與追求。