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