金琦
編者按:深度學(xué)習(xí)是新一代機器學(xué)習(xí)技術(shù),深度學(xué)習(xí)技術(shù)的不斷發(fā)展對自然語言處理技術(shù)產(chǎn)生了深遠(yuǎn)的影響。本期我們將討論傳統(tǒng)自然語言處理技術(shù)和以深度學(xué)習(xí)為基礎(chǔ)的新一代自然語言處理技術(shù)基本方法,并分析利用深度學(xué)習(xí)技術(shù)實現(xiàn)自然語言處理應(yīng)用案例。
近年來,隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)帶寬提升帶來的互聯(lián)網(wǎng)用戶數(shù)、互聯(lián)網(wǎng)應(yīng)用種類等都呈現(xiàn)出爆炸式的增長,圖像、音頻、視頻服務(wù)所占的比重越來越大。以正進(jìn)行數(shù)字化轉(zhuǎn)型的教育行業(yè)為例,視頻媒體技術(shù)作為數(shù)字化轉(zhuǎn)型的重要部分在教育領(lǐng)域得到廣泛的應(yīng)用,如遠(yuǎn)程教育和泛在教育等新的教育形式都依賴于視頻媒體技術(shù)的發(fā)展,教師和學(xué)生對視頻的呈現(xiàn)形式和質(zhì)量提出了越來越高的要求,而在這些服務(wù)的背后,都離不開一個重要的角色:內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,簡稱CDN)?;ヂ?lián)網(wǎng)上的大部分業(yè)務(wù)都離不開CDN的支持,可以說如果沒有CDN,就不會有現(xiàn)今互聯(lián)網(wǎng)的繁華。本期我們將對CDN的工作原理及主要技術(shù)知識點進(jìn)行介紹。
● 什么是CDN
在互聯(lián)網(wǎng)起源之初,設(shè)計的目標(biāo)是實現(xiàn)端到端之間的通信,早在20世紀(jì)90年代,萬維網(wǎng)創(chuàng)始人伯納斯·李就預(yù)見這種單純的端到端數(shù)據(jù)通信模式架構(gòu)難以適應(yīng)未來以發(fā)布和獲取信息為主的互聯(lián)網(wǎng)快速增長流量,網(wǎng)絡(luò)擁塞將成為互聯(lián)網(wǎng)發(fā)展的最大障礙。對此,他提出了一個學(xué)術(shù)難題:希望發(fā)明一種全新的、從根本上解決問題的方法來實現(xiàn)互聯(lián)網(wǎng)內(nèi)容的無擁塞分發(fā)。這項學(xué)術(shù)難題最終催生出一種革新性的互聯(lián)網(wǎng)服務(wù)——CDN,并且由伯納斯·李的同事湯姆·萊頓教授與其他幾位科學(xué)家一起將其產(chǎn)業(yè)化,成立了世界上第一家CDN公司——Akamai公司。CDN是一種將單一中心結(jié)構(gòu)變?yōu)榉植际降木W(wǎng)絡(luò)系統(tǒng),即組成該系統(tǒng)的硬件服務(wù)器可以分布在全球的每個角落,只要通過網(wǎng)絡(luò)實現(xiàn)互連,就可以實現(xiàn)將訪問目的服務(wù)器的資源按照一定的規(guī)則有選擇性地復(fù)制到最接近用戶網(wǎng)絡(luò)的邊緣服務(wù)器上,提高用戶所獲取業(yè)務(wù)的服務(wù)體驗,其實質(zhì)是在互聯(lián)網(wǎng)上構(gòu)建一個覆蓋網(wǎng)絡(luò)。邊緣服務(wù)器的選擇主要依賴于先進(jìn)的負(fù)載均衡技術(shù)。在用戶訪問網(wǎng)絡(luò)資源時,系統(tǒng)會自動為用戶定向到網(wǎng)絡(luò)延遲最小的服務(wù)器上,使用戶可以在最短的時間內(nèi)取得所需要的資源。CDN技術(shù)在原理上很清晰,然而要實現(xiàn)高性能訪問仍有很大難度,它涉及負(fù)載均衡、內(nèi)容分發(fā)、存儲管理等諸多技術(shù)難點。CDN一般按照三級架構(gòu)進(jìn)行部署,分別是中心層、區(qū)域?qū)雍瓦吘墝?,中心層和區(qū)域?qū)佑址Q為骨干節(jié)點,邊緣層又稱為邊緣節(jié)點。節(jié)點是CDN的基本單元,由緩存設(shè)備和本地主機構(gòu)成。用一句簡單的話來概括:CDN是一個經(jīng)過策略性部署的整體系統(tǒng),讓用戶實現(xiàn)了對資源的就近或有效率的訪問。
接下來用功能實例來說明,假設(shè)用戶需要獲取目的網(wǎng)站中某個視頻資源,在沒有CDN的情況下,所有的用戶請求都需要到目的網(wǎng)站處理,并從目的網(wǎng)站下載資源,功能簡示如下頁圖1所示。
在這種場景下會帶來幾個問題:首先是跨運營商的網(wǎng)絡(luò)影響,當(dāng)前我國除三大網(wǎng)絡(luò)通信運營商外,還有各地大大小小的運營商。在跨運營商的網(wǎng)絡(luò)互訪過程中,往往會出現(xiàn)較大的延遲,從而帶來網(wǎng)絡(luò)性能的下降。其次是跨地域的問題,互聯(lián)網(wǎng)業(yè)務(wù)往往是面向全國乃至全世界的用戶,而隨著用戶到目的網(wǎng)站距離的增加,數(shù)據(jù)的往返時間也會隨著增加,并可能影響到業(yè)務(wù)的使用體驗。最后,當(dāng)大量的用戶請求都通過目的網(wǎng)站進(jìn)行處理時,無疑會給目的網(wǎng)站點帶來巨大的負(fù)載,嚴(yán)重的情況下甚至可能讓站點拒絕服務(wù)。
而在使用CDN的場景中,對于目的網(wǎng)站的資源請求會被分配到CDN位于各地的邊緣節(jié)點,用戶根據(jù)就近訪問原則到分配的節(jié)點去請求資源,從而獲得最優(yōu)的訪問效率,功能簡示如圖2所示。
我們?nèi)绾沃酪粋€網(wǎng)站是否用到了CDN?用了多少?部署在哪里?可以做一個簡單實驗來認(rèn)識一下:以筆者家的網(wǎng)絡(luò)(浙江金華中國電信)和劉宗凡老師家的網(wǎng)絡(luò)(廣東肇慶中國移動)分別訪問央視網(wǎng)站www.cctv.cn為例來具體分析,并通過nslookup工具來查看結(jié)果。
筆者從家中網(wǎng)絡(luò)(浙江金華的中國電信)訪問央視網(wǎng)站,解析出了兩個地址,這兩個地址都屬于浙江溫州的中國電信網(wǎng)絡(luò),由此可知央視網(wǎng)站在浙江的中國電信網(wǎng)絡(luò)部署的CDN就在浙江溫州(如圖3);劉老師從家中網(wǎng)絡(luò)(廣東肇慶的中國移動)訪問央視網(wǎng)站,解析出了3個地址,這3個地址都屬于廣東廣州的中國移動,由此可知央視網(wǎng)站在廣東的中國移動網(wǎng)絡(luò)部署的CDN就在廣東廣州(如圖4)。筆者和劉老師在不同的地域通過不同的運營商對央視網(wǎng)站解析出的地址完全不同,這就形象地說明了CDN就近訪問。
接下來我們對一個沒有使用CDN的網(wǎng)站進(jìn)行測試(如圖5):最近筆者學(xué)校教師都在填報全國教師管理信息系統(tǒng),由于同時填報人數(shù)較多,不管在家中還是學(xué)校填報都比較卡慢,經(jīng)過nslookup命令查詢在Addresses這行只有一個地址,說明全國教師管理信息系統(tǒng)沒有使用CDN,建議主管部門可嘗試使用CDN或DCDN(下文會提及)產(chǎn)品,這樣教師填報體驗會提升。
● CDN的工作原理
CDN的技術(shù)實現(xiàn)需要DNS的支持,這里涉及與DNS有關(guān)的兩個名詞:A紀(jì)錄與Cname紀(jì)錄。
A紀(jì)錄:即Address記錄,它并不是單一的IP或者域名,我們可以把它理解為一種指向關(guān)系,用于指定域名與對應(yīng)的IP地址記錄,假設(shè)www.a.com --> 10.10.10.10。當(dāng)訪問這類記錄的域名時,DNS服務(wù)器會直接解析出相應(yīng)的IP地址,并返回給到訪問客戶端。
Cname紀(jì)錄:我們可以把CNAME記錄叫做別名記錄,通俗地說就是“小名”,用于指定域名與另外一個域名的解析關(guān)系,假設(shè)www.a.com --> www.b.com。當(dāng)訪問這類域名時,DNS首先會將域名解析為對應(yīng)的別名記錄,然后再通過該別名去解析對應(yīng)的IP地址,最后返回給到訪問客戶端。該類型的用途在于可以將自身域名委托給到第三方做解析,這在CDN等場景中會經(jīng)常用到。
在不使用CDN的情況下,我們通常是在DNS上配置A記錄,即將域名解析到目的網(wǎng)站IP。此時,當(dāng)客戶端訪問域名時,將使用以下的流程:
(1)用戶在自己瀏覽器中輸入要訪問目的網(wǎng)站的域名,瀏覽器若發(fā)現(xiàn)本機DNS緩存或者h(yuǎn)osts文件沒有對應(yīng)域名和IP記錄,則瀏覽器向本地DNS請求對該域名的解析。
(2)本地DNS服務(wù)器中如果緩存有這個域名的解析結(jié)果,則直接響應(yīng)用戶的解析請求。
(3)本地DNS服務(wù)器中如果沒有關(guān)于這個域名的解析結(jié)果的緩存,則以迭代方式向整個DNS系統(tǒng)請求解析,同時將該解析結(jié)果保存到自己的緩存中。
(4)本地DNS將解析結(jié)果IP地址返還給用戶瀏覽器,經(jīng)過標(biāo)準(zhǔn)的TCP握手流程,建立TCP連接。服務(wù)器將用戶請求內(nèi)容傳送給瀏覽器,功能簡示如圖6所示。
而在使用CDN系統(tǒng)優(yōu)化后的數(shù)據(jù)傳輸發(fā)生根本的變化,目的網(wǎng)站域名解析將配置為Cname,即將域名解析到CDN域名,此時CDN系統(tǒng)通過在精心挑選的網(wǎng)絡(luò)各處放置節(jié)點服務(wù)器,從而將網(wǎng)站的內(nèi)容放置到離用戶最近的地方,即最終由CDN廠商的GSLB分配IP,避免了上述影響互聯(lián)網(wǎng)傳輸性能的“一公里”(CDN業(yè)界的一種形象說法,包括與訂購CDN服務(wù)的網(wǎng)站服務(wù)器網(wǎng)絡(luò)間隔;訪問者到離他最近的 CDN服務(wù)器的網(wǎng)絡(luò)間隔;數(shù)據(jù)從進(jìn)入CDN網(wǎng)絡(luò)到出CDN網(wǎng)絡(luò)的網(wǎng)絡(luò)間隔)和“主干網(wǎng)間互聯(lián)瓶頸”等各個環(huán)節(jié),提高了用戶訪問速度。此時基于CDN網(wǎng)絡(luò)的用戶訪問步驟如下:
(1)用戶在自己的瀏覽器輸入要訪問網(wǎng)站的域名,瀏覽器若發(fā)現(xiàn)本機DNS緩存或者h(yuǎn)osts文件沒有對應(yīng)域名和IP記錄,則瀏覽器向本地DNS請求對該域名的解析。
(2)如果本地DNS服務(wù)器沒有相應(yīng)域名的緩存,則本地DNS系統(tǒng)會將域名的解析權(quán)交給CNAME指向的CDN專用DNS服務(wù)器。用戶向CDN的全局負(fù)載均衡設(shè)備發(fā)起URL訪問請求。
(3)CDN的DNS服務(wù)器將CDN的全局負(fù)載均衡設(shè)備IP地址返回給用戶。用戶向CDN的全局負(fù)載均衡設(shè)備發(fā)起URL訪問請求。
(4)CDN全局負(fù)載均衡設(shè)備根據(jù)用戶IP地址,以及用戶請求的URL,選擇一臺用戶所屬區(qū)域的區(qū)域負(fù)載均衡設(shè)備,并將請求轉(zhuǎn)發(fā)到此設(shè)備上。
(5)根據(jù)用戶IP地址遠(yuǎn)近、各個邊緣節(jié)點當(dāng)前的負(fù)載情況、用戶所請求的URL中包含的文件內(nèi)容類型等因素綜合考量,區(qū)域負(fù)載均衡設(shè)備會選擇一個最優(yōu)的緩存服務(wù)器節(jié)點,并從緩存服務(wù)器節(jié)點處得到緩存服務(wù)器的IP地址,最終將得到的IP地址返回給全局負(fù)載均衡設(shè)備。節(jié)點中的緩存服務(wù)器響應(yīng)用戶的請求提供相關(guān)內(nèi)容。如該節(jié)點已有用戶請求的內(nèi)容,則直接響應(yīng),如沒有用戶請求的內(nèi)容,則該節(jié)點會回到最原始的目的網(wǎng)站服務(wù)器獲得,并保存在緩存中,響應(yīng)隨后的用戶請求,功能簡示如圖7所示。
由上述可知,CDN的加速功能實現(xiàn),主要由GSLB(全局負(fù)載均衡器)與緩存系統(tǒng)兩個主要功能系統(tǒng)來處理。
1.GSLB
GSLB系統(tǒng)可以基于智能的DNS技術(shù)來實現(xiàn),相比于傳統(tǒng)DNS具有功能更加強大、更加智能的特點。GSLB根據(jù)預(yù)先配置好的策略,為用戶分配最適合的節(jié)點地址。以下幾種為GSLB常見的調(diào)度策略:①基于Local DNS的靜態(tài)調(diào)度。該策略會根據(jù)Local DNS的IP地址(或者終端機器的IP地址),在配置里面找到IP所對應(yīng)的區(qū)域,返回該區(qū)域最適合的CDN節(jié)點地址給到訪問客戶端。②基于RTT的調(diào)度。RTT(Round-Trip Time)指節(jié)點到目標(biāo)之間數(shù)據(jù)的往返時延,類似大家常說的Ping值,該策略會根據(jù)Local DNS的IP地址,將候選的CDN節(jié)點與該地址的RTT進(jìn)行比較,并將其中RTT小的節(jié)點調(diào)度給訪問客戶端。③基于成本和帶寬的調(diào)度。成本方面主要從CDN廠商角度考慮,如在某些業(yè)務(wù)少的地區(qū),調(diào)度器會將部分請求調(diào)度給到其他區(qū)域的節(jié)點處理,這樣可以減少在該區(qū)域的節(jié)點部署。而基于帶寬的調(diào)度則會根據(jù)CDN節(jié)點的出口帶寬大小計算權(quán)重,分配訪問請求。④基于服務(wù)等級的調(diào)度。該策略基于目標(biāo)域名的服務(wù)等級,通常會將質(zhì)量更好的節(jié)點分配給等級更高或更迫切場景(如疫情期間要保證醫(yī)療和線上教學(xué))的客戶,以便給相關(guān)用戶提供更好的服務(wù)。
以上幾種為常見的調(diào)度策略,CDN廠商通常會將這幾種方式結(jié)合起來使用,在成本和帶寬滿足的情況下,盡量提供就近選擇的節(jié)點資源。當(dāng)然,CDN廠商還會完善和定制自身策略,如阿里用其業(yè)務(wù)中數(shù)據(jù)“包裹記錄”來校準(zhǔn)阿里CDN的IP地址庫,以此來優(yōu)化Local DNS調(diào)度策略。
2.緩存系統(tǒng)
緩存(Cache)說到底就是用空間換時間,通過使用多余的空間,獲取更快的速度。CDN緩存系統(tǒng)最基本的工作單元就是眾多的Cache節(jié)點(緩存服務(wù)器),Cache節(jié)點負(fù)責(zé)直接響應(yīng)最終用戶的訪問請求,把緩存在本地的內(nèi)容快速提供給用戶。同時,Cache節(jié)點也會與目的網(wǎng)站進(jìn)行內(nèi)容同步,把更新的內(nèi)容以及本地沒有的文件內(nèi)容從目的網(wǎng)站點獲取并保存在本地。
CDN緩存系統(tǒng)可能存在著多層級的架構(gòu),以圖8來簡要說明:邊緣節(jié)點作為最接近用戶的節(jié)點,提供給用戶進(jìn)行就近訪問。當(dāng)邊緣節(jié)點未命中資源時,會向上層節(jié)點請求。如果在中心節(jié)點仍未命中,則會回源到目的網(wǎng)站進(jìn)行獲取。
● CDN應(yīng)用場景
1.網(wǎng)站加速
主要針對門戶網(wǎng)站、在線影視、電商、在線教學(xué)等業(yè)務(wù)場景。這類站點往往有著非常多的靜態(tài)內(nèi)容文件(視頻、圖片等),CDN可對其進(jìn)行加速處理,從而顯著改善頁面響應(yīng)時間,提升用戶的使用體驗。其中最典型的就是流媒體加速(如抖音、優(yōu)酷等),流媒體加速包含直播和點播兩種,其方式是通過將流媒體內(nèi)容推送到離用戶最近的邊緣節(jié)點,使得用戶可以就近獲取內(nèi)容,從而提高視頻傳輸質(zhì)量,縮短訪問時間,節(jié)省骨干網(wǎng)絡(luò)的流量。此類模式適用于各類音視頻網(wǎng)站和應(yīng)用。
2.文件下載加速
文件下載加速是CDN的一項重要功能,常見的場景有軟件補丁包發(fā)布、鏡像文件獲取等,這類文件容量大,下載的過程中容易給目的網(wǎng)站帶來性能和帶寬壓力。通過CDN的方式,可以有效分擔(dān)這些壓力,并提高客戶端的下載效率。
3.全站加速
讀到這里,讀者可能會有疑問:CDN加速的本質(zhì)是緩存加速。將您服務(wù)器上存儲的靜態(tài)內(nèi)容(視頻、圖片、壓縮包)緩存在CDN節(jié)點上,當(dāng)您訪問這些靜態(tài)內(nèi)容時,無需訪問服務(wù)器目的網(wǎng)站,就近訪問CDN節(jié)點即可獲取相同內(nèi)容,從而達(dá)到加速的效果,同時減輕服務(wù)器目的網(wǎng)站的壓力。那諸如“數(shù)據(jù)庫交互請求、讀取API接口”動態(tài)網(wǎng)站資源怎么辦呢?的確,傳統(tǒng)的CDN無法緩存實時變化的動態(tài)內(nèi)容。對于動態(tài)內(nèi)容請求,傳統(tǒng)CDN節(jié)點只能轉(zhuǎn)發(fā)回您的服務(wù)器目的網(wǎng)站,沒有加速效果。如果您的網(wǎng)站或App應(yīng)用有較多動態(tài)內(nèi)容,如需要對各種API接口進(jìn)行加速,Web2.0互動等各種服務(wù)加速,則需要使用CDN廠商提供的全站加速DCDN(Dynamic Route for Content Delivery Network)。全站加速能同時加速動態(tài)和靜態(tài)內(nèi)容,加速方式如下:傳統(tǒng)的靜態(tài)內(nèi)容使用CDN加速;以應(yīng)用和服務(wù)為主的動態(tài)內(nèi)容通過CDN廠商平臺在傳統(tǒng)的CDN技術(shù)上又增加了壓縮、流量整形、智能路由和協(xié)議優(yōu)化等動態(tài)加速技術(shù),提升客戶端到目的網(wǎng)站的網(wǎng)絡(luò)效率,便于快速獲取動態(tài)資源,從而達(dá)到全站加速的效果。
● CDN帶來的收益
1.節(jié)約成本投入
CDN通過廣泛部署的節(jié)點對流量進(jìn)行分?jǐn)偺幚?,對于資源內(nèi)容的命中率通常達(dá)到90%以上,這極大地減少了目的網(wǎng)站的帶寬及服務(wù)器資源需求,可較大地降低使用單位的業(yè)務(wù)成本投入。另外,對于互聯(lián)網(wǎng)類型的單位而言,業(yè)務(wù)流量往往會有較大的波動性,如學(xué)校會在新冠疫情期間較頻繁地開展遠(yuǎn)程教學(xué),而平時使用度會下降;電商企業(yè)在做活動的時候,當(dāng)天流量可能達(dá)到平時的數(shù)倍,而在活動過后則會下降較多。在不使用CDN的場景下,往往需要準(zhǔn)備足夠應(yīng)付流量波峰的資源來應(yīng)對,這樣會造成資源的較大浪費。而CDN使用按量付費的模式,可有效降低這種資源浪費的情況?;诖?,各大運營商和內(nèi)容提供商都已經(jīng)開始積極探索和部署各自的CDN網(wǎng)絡(luò)。
2.提升用戶訪問體驗
互聯(lián)網(wǎng)有一個著名的8秒原則,用戶在訪問網(wǎng)頁時,如果時間超過8秒就會感到不耐煩,如果下載需要太長時間,他們就會放棄訪問。隨著網(wǎng)民數(shù)量的日益增長,以及網(wǎng)頁服務(wù)和網(wǎng)絡(luò)固有的延遲,網(wǎng)絡(luò)寬帶面臨著巨大的壓力,大大影響了用戶的體驗度。如何縮減網(wǎng)頁訪問延遲、改善WWW服務(wù)質(zhì)量已經(jīng)成為改善Internet應(yīng)用環(huán)境的主要目標(biāo)。而CDN技術(shù)的出現(xiàn),及時解決了網(wǎng)絡(luò)響應(yīng)速度的問題。
CDN服務(wù)解決了跨區(qū)域、跨運營商等造成的網(wǎng)絡(luò)阻礙等常見問題,通過智能分配、就近接入的模式,可以有效提升用戶對相關(guān)資源的下載效率,從而極大地提升用戶訪問體驗。
3.增加安全性
當(dāng)前,在互聯(lián)網(wǎng)上的黑客攻擊并不少見,如最常見的DDoS攻擊,DDoS代表分布式拒絕服務(wù),攻擊者將很多臺電腦集中起來,發(fā)出指令,讓很多臺電腦對同一個網(wǎng)站進(jìn)行請求,一旦這些電腦數(shù)量眾多,就很容易將目的網(wǎng)站的資源耗盡:服務(wù)器上行帶寬占滿;服務(wù)器CPU、內(nèi)存占滿;服務(wù)器忙于處理攻擊源的請求,對其他正常用戶的請求無暇顧及。CDN通過Cname的方式,屏蔽了目的網(wǎng)站的IP信息,這使得攻擊者無法對目的網(wǎng)站地址進(jìn)行直接攻擊,不同地域發(fā)起攻擊的電腦會就近讀取CDN節(jié)點上的緩存數(shù)據(jù),不會實時回源,所以目的網(wǎng)站壓力得到緩解,此時攻擊流量就分散掉了,而且CDN有著廣泛分布的節(jié)點,可以有效減少攻擊的危害性。但由于CDN本質(zhì)上還是基于IP網(wǎng)絡(luò),我們還是要從網(wǎng)絡(luò)層、系統(tǒng)層、應(yīng)用層和管理層等方面考慮,采用分層的安全防護(hù)策略,為CDN系統(tǒng)構(gòu)建多層安全防線。不同的安全防線采用不同的安全策略,當(dāng)網(wǎng)絡(luò)中某個安全防線被攻破后,其他網(wǎng)絡(luò)節(jié)點依然能夠?qū)υ摪踩{實施有效的防護(hù)機制,確保網(wǎng)絡(luò)的安全運行。
4.降低運維復(fù)雜性
CDN廠商通常會提供一站式的服務(wù),主要代表廠家就是阿里云、騰訊云等,提供了配套的監(jiān)控告警、服務(wù)分析、軟件工具等。除了CDN服務(wù)以外,還包括域名注冊、網(wǎng)站開發(fā)、IDC、云通信、移動服務(wù)、云安全、監(jiān)控與管理等綜合化一站式服務(wù),可以讓用戶較好地降低運維的復(fù)雜性,便于把更多精力投入到自身專業(yè)業(yè)務(wù)中。
● 體驗使用CDN的靜態(tài)資源內(nèi)容的范例
可能有的讀者會說我們學(xué)校網(wǎng)站的訪問量和數(shù)據(jù)量不會達(dá)到諸如在線視頻點播網(wǎng)站的訪問級別,為什么要考慮CDN呢?其實學(xué)校在開發(fā)一些小應(yīng)用時,前端頁面常直接使用到一些類似JS、CSS、image、swf等公共庫資源,我們完全可以引用一些CDN公共庫以達(dá)到快速開發(fā)目的。同時,在有了CDN概念后,我們會注意通過不同的CDN供應(yīng)商,比較讀取靜態(tài)資源內(nèi)容公共庫速度來篩選不同的CDN。目前,開發(fā)者經(jīng)常引用的CDN公共庫有百度(http://cdn.code.baidu.com/)、360(http://libs.useso.com)、七牛云(https://www.staticfile.org)等。下面筆者以所在學(xué)校一個小應(yīng)用“讀取釘釘運動API來個性定制的教師釘釘運動步數(shù)排行”為例,用加載兩個不同的JS/CSS CDN加速公共庫的URL來體驗一下訪問速度。
http://ding.ourschool.cn/dingsport/weeklist(加載“七牛云”的JS/CSS CDN公共庫)和http://ding.ourschool.cn/dingsport/testweeklist (加載一個讀取速度一般的JS/CSS CDN公共庫)。讀者可以參照如圖9所示的代碼),使用CDN公共庫加載JS、CSS資源。
然后測試一下,從不同的CDN讀取資源的速度,方法很簡單,在Chrome瀏覽器上按F12打開開發(fā)者工具,監(jiān)控“全部”,在清除瀏覽器緩存的前提下,分別讀取兩個URL,可以發(fā)現(xiàn)讀取靜態(tài)資源內(nèi)容速度從“十毫秒”級(如圖10)到“百毫秒”級(如圖11),相差非常大。
讀者也可以訪問以上兩個測試URL,分別右鍵單擊查看瀏覽器解析后源代碼來驗證,可以看到JS和CSS是來自不同的JS/CSS CDN提供商(如圖12)。
通過以上簡單有效的實驗可以發(fā)現(xiàn),在開發(fā)單位網(wǎng)站時,選擇好的JS/CSS CDN加速公共庫會讓訪問者訪問網(wǎng)站的體驗更好,這是日常開發(fā)要注意的。
● CDN與云技術(shù)相融合
在信息化高速發(fā)展的背景下,互聯(lián)網(wǎng)行業(yè)一直在進(jìn)行重大技術(shù)革新,并且相關(guān)技術(shù)不斷融合,以滿足人們?nèi)找嬖鲩L的需求?,F(xiàn)在很多云計算和云存儲平臺在對外提供服務(wù)時不可避免地會與CDN相融合,如Iass類型的云計算平臺可以把基礎(chǔ)資源虛擬化為共享的資源池,提供給CDN使用;Paas類型的云計算平臺提供了開發(fā)環(huán)境和開放的應(yīng)用服務(wù)環(huán)境,使得CDN可以在云計算平臺上直接發(fā)布自己的應(yīng)用和策略。云存儲平臺可以提供透明的服務(wù)和彈性的存儲資源,用戶在使用云存儲平臺時可以不考慮設(shè)備的型號、傳輸協(xié)議、接口等細(xì)節(jié),同時云存儲平臺提供優(yōu)于普通存儲方案和數(shù)據(jù)安全性,并且使用云存儲的容量擴展非常方便,當(dāng)CDN容量需要擴充時,只需在新增的服務(wù)器節(jié)點上部署分布式中間件并進(jìn)行必要的網(wǎng)絡(luò)配置,即可快速將該節(jié)點加入CDN存儲集群的管理體系中。所以,云技術(shù)平臺和CDN是相輔相成、密不可分的,隨著未來網(wǎng)絡(luò)對資源存儲和加速服務(wù)的需求越來越大,可以相信CDN在云技術(shù)的支持和相互融合下,其貢獻(xiàn)值與發(fā)展?jié)摿κ强梢云诖摹?/p>