作為技術(shù)決策者在選擇使用 CDN 服務(wù)時最關(guān)心的三個問題是:一,哪家的 CDN 更快(速度快,用戶體驗好)。二, 哪家 CDN 功能最全,即使現(xiàn)在用不到也不會給將來業(yè)務(wù)發(fā)展挖坑。三,怎么付費最劃算。本文通過分析對國內(nèi) CDN 市場占有率靠前的十家服務(wù)商的網(wǎng)絡(luò)環(huán)境和技術(shù)服務(wù),希望給大家提供一些啟發(fā)和建議。
哪家的 CDN 更快?
CDN 服務(wù)商經(jīng)常引用獨立第三方公司的撥測數(shù)據(jù)來證明自己的 CDN 服務(wù)更好。雖然這些數(shù)據(jù)在某個區(qū)域或時間段也許是準確的,實際卻是盲人摸象,無法證明全時段和全網(wǎng) CDN 服務(wù)的真實性能。也許從 CDN 服務(wù)商所處的網(wǎng)絡(luò)環(huán)境和提供的技術(shù)功能入手,會是更科學和公平的對比方法。
國內(nèi)用戶普遍使用互聯(lián)網(wǎng)提供商 (ISP) 的寬帶上網(wǎng),具體訪問流程如下圖:
圖 1
用戶終端訪問 CDN 的過程分兩個步驟, 一是用戶通過 DNS 找到最近的 CDN 邊緣節(jié)點 IP; 二是數(shù)據(jù)在網(wǎng)絡(luò)中的送達用戶終端。整個過程中,有三個方面會影響用戶訪問 CDN 的體驗。
一,擁有 DNS 優(yōu)化策略的 CDN 提供商,會有更好的用戶體驗。
從圖 1 可見, 客戶終端的 DNS Resolver 負責告訴瀏覽器到哪里去找 CDN 的資源。理論上 ISP 的 DNS 服務(wù)器會選擇離用戶最近 CDN 節(jié)點 IP 并返回給用戶,但是實際情況并不是這么簡單。國內(nèi)的大城市的 ISP 業(yè)務(wù),除了一些區(qū)域性的 ISP,基本被聯(lián)通、電信和移動這樣的大運營商所壟斷。由于各運營商之間存在著網(wǎng)間費用結(jié)算,運營商會想盡一切辦法將用戶的訪問在自己的網(wǎng)內(nèi)解決掉。比如,廣州聯(lián)調(diào)寬帶的用戶想訪問的內(nèi)容在聯(lián)通北京的 CDN 節(jié)點, 盡管在廣東移動的 CDN 節(jié)點有用戶想訪問的資源,聯(lián)通的 DNS 還是會返回聯(lián)通北京 CDN 節(jié)點的 IP。
另外,一些 ISP 為了節(jié)省網(wǎng)間流量,未經(jīng) CDN 服務(wù)商同意,自己針對一些 CDN 文件做了一層 CDN 緩存,通過“DNS 劫持”把用戶訪問 CDN 資源的請求都指到自己網(wǎng)內(nèi)的非法 CDN 緩存服務(wù)器。很多時候這些緩存的內(nèi)容不能及時和 CDN 節(jié)點同步更新,會造成使用該 ISP 的用戶終端出現(xiàn)訪問 CDN 資源緩慢,失敗等現(xiàn)象。同時,國內(nèi)嚴重的 DNS 污染問題也影響了用戶的上網(wǎng)體驗。
因此,如果能使用一些技術(shù)優(yōu)化用戶 DNS 查詢,會大幅度提高用戶的體驗。目前優(yōu)化 DNS 的技術(shù)主要是:
HttpDNS :客戶端基于 Http 協(xié)議向 CDN 服務(wù)商指定的 DNS 服務(wù)器發(fā)送域名解析請求,從而避免 LocalDNS 造成的域名劫持和跨網(wǎng)訪問。如圖 2
圖 2
Http 302 跳轉(zhuǎn): CDN 廠商維護 CDN 域名 IP 庫,根據(jù)用戶訪問終端的 IP 和 CDN 邊緣節(jié)點的狀態(tài),選擇最合適的 CDN 節(jié)點,發(fā)出 HTTP 的 302 返回碼,將用戶的請求跳轉(zhuǎn)到合適的 CDN 邊緣節(jié)點。例如騰訊的下載直通車就使用類似技術(shù)。 圖 3
圖 3
二,擁有自治系統(tǒng)(Autonomous system, AS)的 CDN 提供商,數(shù)據(jù)包跨越最少的網(wǎng)絡(luò)邊界,能獲得更快的傳輸速度。
在 BGP 協(xié)議中,IP 包從一個 AS 向另一個 AS 傳輸時,需要經(jīng)過邊界路由器,如果由于網(wǎng)絡(luò)問題造成 IP 包不可達,則需要邊界路由器重新規(guī)劃線路。如果 CDN 服務(wù)商自己擁有自治系統(tǒng),AS 內(nèi)部擁有同樣的選路策略,數(shù)據(jù)就能在 CDN 服務(wù)商自己的 AS 中高效傳輸,理論上最終送達用戶所花的時間也會最小。 就好比我們開車在省內(nèi)玩,肯定要比跨多個省經(jīng)過多個收費站耗時要少。
三, CDN 服務(wù)商所在自治系統(tǒng) AS 的相鄰 AS 越多,離運營商骨干網(wǎng)越近,數(shù)據(jù)傳輸也會更有優(yōu)勢。
CDN 服務(wù)商所在的 AS 離運營商骨干網(wǎng) AS 越近,理論上數(shù)據(jù)包傳輸所花時間也越少。另外, CDN 廠商如果同時租用了多個運營商品牌的帶寬線路,其服務(wù)器的 IP 就會同時屬于這幾家運營商的 AS,跨運營商的數(shù)據(jù)傳輸時間也會比只有一個運營商的相對快些。就如同有多個高速公路的通行證,數(shù)據(jù)在傳輸過程中從一家的路面后就可直達用戶,而不用來回在多個道路上切換,避免了不必要的時間損耗。
對比結(jié)果選取 IDC 評述網(wǎng)排名前十的 CDN 服務(wù)商,采用以下方法收集數(shù)據(jù):
瀏覽 CDN 服務(wù)商的網(wǎng)站,收集關(guān)于 CDN 加速的功能介紹,得到對比項一。
通過 nslookup 查詢他們域名對應(yīng)的 IP,使用美國 Hurricane Electric 公司提供的網(wǎng)頁工具查尋 AS 號碼和其相關(guān)聯(lián)的相鄰域所屬的運營商得到對比項二和三。
以上數(shù)據(jù)收集方法存在如下假設(shè):
CDN 廠商把自己的主站建在和自己 CDN 同一個 AS 內(nèi),沒有租用其它廠商的主機。如果廠商連自己的主站都不使用自己的產(chǎn)品,只能說明他們對自己的產(chǎn)品都沒有信心。
CDN 廠商把對于 DNS 優(yōu)化的功能都公布在互聯(lián)網(wǎng)上。在競爭激烈的 CDN 行業(yè),廠商都希望對外宣傳自己的亮點,不存在酒香不怕巷子深的說法。
注:第 9 位的世紀互聯(lián)的網(wǎng)站對其 CDN 服務(wù)的介紹很少,無法獲取需要的信息,增補了第 11 位的京東云。
對比結(jié)果如下表 1:
表 1
阿里云,騰訊云和網(wǎng)宿科技由于支持 HttpDNS 在技術(shù)上有領(lǐng)先優(yōu)勢,可以列為第一梯隊。第二梯隊的是百度云,藍訊,Ucloud 和網(wǎng)易云。它們所在 AS 和兩個以上運營商主干網(wǎng) AS 相鄰,也具有一定優(yōu)勢。剩下的金山云,七牛云和京東云排在第三梯隊。金山云所在 AS 只和電信骨干網(wǎng) AS 相連,使用其它運營商的用戶訪問其 CDN 節(jié)點理論上會相對電信的慢一些。七牛云和京東云其網(wǎng)絡(luò)屬于北京電信通的 AS,需要穿過兩個 AS 才接入骨干網(wǎng),理論上速度也會比其他 CDN 服務(wù)商稍慢。
哪家 CDN 功能最全CDN 服務(wù)的功能點非常多,為了比較方便選擇了 11 個常用的功能,主要覆蓋加速優(yōu)化,監(jiān)控和安全三個方面:
加速優(yōu)化
HTTP2.0 加速
HTTP2.0 和現(xiàn)在的 HTTP1.1 相比,做了很大的改動和優(yōu)化,例如頭部壓縮、服務(wù)端推送等。因為它要求服務(wù)器端和瀏覽器端都得支持 HTTP2.0 協(xié)議,所以在國內(nèi)獲得普遍支持還有一段時間。不過作為互聯(lián)網(wǎng)下一代 HTTP 協(xié)議,即使我們現(xiàn)在用不上,也應(yīng)考慮為將來的系統(tǒng)升級留下余地。
文件壓縮
目前 CDN 節(jié)點使用的 WEB 服務(wù)器端普遍支持 GZIP 協(xié)議的壓縮, 當用戶瀏覽器訪問靜態(tài)資源,并且支持 Gzip 壓縮時, 服務(wù)器端可以把資源壓縮打包發(fā)送給瀏覽器,由瀏覽器進行解壓, 減少文件在互聯(lián)網(wǎng)傳輸?shù)臄?shù)據(jù)量和時間。
源站推送
為了避免傳統(tǒng)的 CDN 節(jié)點同時去源站拉數(shù)據(jù),造成訪問洪峰壓垮源站的帶寬和服務(wù)器。 CDN 廠商使用源站推送功能將源站內(nèi)容提前推送給邊緣 CDN 節(jié)點,提前進行刷新預熱。
點播加速
CDN 對音視頻等流媒體文件進行加速,其背后是一套復雜的技術(shù)方案,包括上傳,轉(zhuǎn)碼,分發(fā),以及 CDN 邊緣節(jié)點根據(jù)用戶終端支持協(xié)議的情況下發(fā)合適的流媒體格式。不同 CDN 服務(wù)商對點播加速的技術(shù)實現(xiàn)方案不同,不好做量化比較,只用是否支持播加速功能來比較。
直播加速
直播加速如何解決播放延時、連麥時多路音視頻的合并、以及突發(fā)熱點對帶寬的沖擊等這些技術(shù)挑戰(zhàn),對 CDN 服務(wù)商的技術(shù)、硬件和網(wǎng)絡(luò)條件都有很高的要求。也用是否支持直播加速來比較。
監(jiān)控統(tǒng)計
實時監(jiān)控
CDN 服務(wù)商提供圖形化工具,對 CDN 的使用情況,例如點擊量,命中率,公網(wǎng)下行流量等進行統(tǒng)計和監(jiān)控。方便客戶對于 CDN 使用效率和結(jié)果進行評估,及時發(fā)現(xiàn)問題和調(diào)整網(wǎng)絡(luò)帶寬預算。
原始日志
提供所有客戶終端訪問 CDN 服務(wù)的原始日志 (access log),這些日志看似沒用,其實很有價值。例如,可以通過分析原始日志的數(shù)據(jù)包總量估算出 CDN 實際的下行流量,作為支付 CDN 服務(wù)費的參考。也可以通過分析這些日志的響應(yīng)時間,結(jié)合客戶端 IP,評估各地區(qū)終端用戶實際訪問 CDN 的情況。
安全
防盜鏈
CDN 服務(wù)商防盜鏈的手段很多,例如常用的 http Referer 防盜鏈,其原理是利用 http header 中的 referer 屬性,判斷用戶提交信息的網(wǎng)站 IP 地址,然后和真正的源站端的地址相比較,如果一致則表明是站內(nèi)提交,或者為自己信任的站點提交,否則視為盜鏈。
IP 黑白名單
黑白名單是我們可以根據(jù)業(yè)務(wù)需要對用戶請求的源 IP 訪問進行管理,為我們提供了主動防御的能力。使用 IP 黑名單的功能,可以有效的幫助我們阻止盜鏈,和惡意攻擊。
SNI ( 服務(wù)器名稱指示 Server Name IndicaTIon )
網(wǎng)站使用 SSL/TSL 協(xié)議校驗是目前防止盜鏈,和解決 “DNS 劫持”最好的方式。目前國內(nèi)外大型網(wǎng)站都已經(jīng)換成了基于該協(xié)議的 HTTPS 通信方式。早期的 SSL 協(xié)議默認每個 IP 地址上只能用一個證書。TLSv1z 增加了服務(wù)器名稱指示(SNI)功能,通過發(fā)送虛擬主機名作為 TLS 協(xié)商的一部分這使得服務(wù)器可以在握手階段選擇正確虛擬域,并發(fā)送對應(yīng)證書。這樣每個 IP 上可以部署多張證書,對于運行很多虛機和域名的用戶會非常節(jié)省資源。如果 CDN 服務(wù)商支持該項功能,說明 CDN 服務(wù)支持 HTTPS 和 TSL v1 以上版本。
OCSP 裝訂(OCSP STAPLING)
使用 SSL 認證時,客戶端會在 TLS 握手階段,去發(fā)證機構(gòu)對實時查詢 OCSP (Online CerTIficate Status Protocol,在線證書狀態(tài)協(xié)議)接口,來判斷服務(wù)器端的證書是否作廢。在獲得獲得 OCSP 結(jié)果前會阻塞后續(xù)流程,通常發(fā)證機構(gòu)都在國外,客戶端的訪問會延遲整個 TLS 握手的時間。而 OCSP Stapling 功能,是指服務(wù)端在證書鏈中封裝了發(fā)證書機構(gòu)對證書的 OCSP 查詢結(jié)果,從而讓客戶端瀏覽器跳過自己去驗證的過程。如果 CDN 服務(wù)商支持該功能,說明其 CDN 服務(wù)支持 HTTPS 加速比較好。
對比結(jié)果對前文的十家 CDN 服務(wù)商進行打分,結(jié)果如下表:
表 2
騰訊云和網(wǎng)宿科技得分最高,其它廠商各有優(yōu)劣。 9 分以上的廠商占了前 50%,分別是騰訊云,網(wǎng)宿科技,阿里云,百度云藍汛。后 50% 的廠商分數(shù)在 8-7 分之間。
哪家的性價比更高計費方式:
目前業(yè)內(nèi)普遍使用的 CDN 計費方式有兩種:每按帶寬峰值和按流量。
帶寬峰值計費
每 5 分鐘統(tǒng)計一個帶寬峰值(單位 Mbps),每日得到 288 個峰值,取當日帶寬峰值作為結(jié)算標準。計費周期普遍采用按日計費,每日零點扣費。
按流量計費
按照每月使用的實際流量作為結(jié)算標準。價格普遍采用階梯定價。計費周期普遍采用按月計費,每月最后一天零點扣費。也有一些廠商采用按日計費或按小時計費和扣費。
對比結(jié)果
各廠商收費標準如下表:
表 3
注:有些 CDN 廠商會對包月的大客戶提供優(yōu)惠,本文不做對比。
按峰值計費 10 家廠商有 6 家支持,3 家不支持,1 家網(wǎng)上沒有公開價格。500M-5G 帶寬平均市場價格在 0.69 元 Mbps。峰值帶寬計費低于 0.69 元的廠商有 4 家,分別是阿里云,騰訊云,百度云和金山云。按流量計費的 9 家支持,1 家網(wǎng)上沒有公開價格,10T-50T 階梯的平均流量價格是 0.25 元 /G。流量計費低于 0.25 元 /G 的廠家有 5 家,分別是阿里云,騰訊云,藍汛,金山云和七牛云。
哪種計費方式更合算以 1Mbps 帶寬作為計算如下:
1Mbps = 128KB/s.
128KB/s = 7680KB/minute (7.5MB/minute)。
7680KB/minute = 460800KB/hour (450MB/hour)。
460800KB/hour = 11059200KB/day (10.54gb/day)
通過計算,1Mbps 帶寬的網(wǎng)絡(luò),一天 24 小時跑滿的話可以消耗約 10.5G 的流量。以網(wǎng)絡(luò)利用率占峰值的 10%,20%,25%, 30% 為參數(shù)計算使用峰值帶寬和按流量計費的花費對比,結(jié)果如下表:
表 4
通常大家都會選擇按流量計費。但是如果帶寬的實際利用率大于 30% 后,實際花費的錢是小于實際消耗的流量計費模式的。 例如我們使用 50Mbps 峰值帶寬每天花費 34.5 元。 如果 CDN 利用率大于 30%,使用的實際流量為 131.25G 對應(yīng)流量計費要花費 39.38 元,按峰值寬帶計費會更劃算。
單鏈鏈接限速
使用峰值寬帶計費大家普遍的擔心是被惡意攻擊造成短時間內(nèi)巨大的峰值,以峰值來計算整天的費用非常不劃算。使用單鏈接限速可以避免這樣的問題。所謂單鏈接限速,就是在 CDN 邊緣節(jié)點的 WEB 服務(wù)器上,設(shè)置限制單連接的下載速度,使其最高速度限定在預設(shè)值內(nèi)。該功能可在保障用戶訪問體驗的同時,在一定程度上平滑帶寬值,合理節(jié)省帶寬成本。不過國內(nèi)現(xiàn)在只有網(wǎng)宿科技宣稱支持該功能,其它 CDN 廠商還不支持。
總結(jié)回答了關(guān)于 CDN 服務(wù)商的速度、功能和價格三個問題,哪家的性價比最高呢?最后做一個綜合比較:
速度評分中,第一梯隊的記 3 分,以此類推第二梯隊 2 分,第三梯隊 1 分。
功能評分中,大于 9 分的 CDN 服務(wù)商得 1 分,其他不得分。
價格評分中,峰值帶寬計費 500M-5G 帶寬低于平均市場價格 0.69 元的 CDN 服務(wù)商得 1 分,流量計費低于 0.25 元 /G 的得 1 分。
結(jié)果如下:
表 5
阿里云和騰訊云 6 分并列第一,在 CDN 服務(wù)上優(yōu)勢明顯。百度,網(wǎng)宿科技,藍訊都是 4 分并列第二,百度價格有優(yōu)勢,網(wǎng)宿科技在訪問速度上有勢,藍訊各方面比較平均。金山云列第三。其他 CDN 服務(wù)商得分小于 3 分,不到總分(6 分)的 50%,在 CDN 行業(yè)的競爭中處于劣勢。