CDN加速原理

01算法

圖片

什麼是CDN?瀏覽器

CDN(Content Delivery Network)也叫內容分發網絡,此技術旨在下降帶寬消耗,減小延遲,在網絡負載時體現路由的可擴展性。緩存

直觀上體如今應用程序或網頁的提速,改善應用服務器壓力的同時提升用戶體驗。安全



02性能優化

爲何要用CDN?服務器

傳統單一站點,以及流媒體的訪問併發量受帶寬限制和服務器性能等因素限制,無限擴容雖能及時緩解瓶頸壓力,可是治標不治本,還會有資源浪費的嫌疑。所以在網絡「基建」已搭建好的情境下,如何對數據流進行規整,實現既能節省帶寬又能減小對服務器性能依賴成爲了一種新思路。網絡

CDN技術由此應運而生。對源站頁面內容進行緩存,打破跨地域、跨運營商用戶訪問的壁壘,同時緩解了企業帶寬和服務器承載壓力,加快應用的響應速度,爲用戶帶來卓越的交互體驗。架構



03併發

CDN加速原理運維

CDN經過創建多個節點,將源站內容更新並下發、緩存到所有節點。當用戶請求資源時,CDN根據就近原則,將距離用戶最近的節點做爲緩存服務器下發資源。

圖|CDN架構示例

CDN主要從兩點體現加速價值,一是提升網絡的鏈接性,二是從網絡根本的性能上。下面會根據這兩方面分別介紹CDN的功能。

炫酷技術——提升網絡鏈接性

影響網絡鏈接性的因素有不少,能夠把數據傳輸過程想象成排水系統,不一樣類型的數據則能夠理解爲排水系統中不一樣的物質,因此在排水時有兩類問題就須要工廠來明確。


  • 從源頭來考慮:

    排放機制是否須要時時刻刻都進行,仍是在中繼處攢到必定容量再統一排放。

  • 從中間環節來考慮:

    排水系統的大致積物質如果過大是否會堵塞通道,所以也要考慮物質壓縮問題。

這些問題均可以被形象地類比爲數據傳輸中遇到的問題。工廠第一個排放機制的問題等同於HTTP請求的處理,不管是網絡帶寬,仍是瀏覽器可容納的TCP併發量,都是有閥值限制的,所以須要一些手段合理下降客戶端請求數。第二個問題等同於數據傳輸中大文件的處理方式,是要統一進行壓縮仍是增長「排隊」的長度。


值得欣慰的是,當前CDN的技術能夠很好地解決數據傳輸中的問題。下面5點是從CDN在提升網絡鏈接性的方面應用的技術和算法。

1.     對HTTP頭部實現緩存策略

若是相同版本的HTTP頁面一直在被加載,不管對於源站服務器仍是客戶端都等於作了不少「無用功」。所以CDN會自主學習,將該HTTP頁面當成是「靜態頁面」,並緩存到CDN的緩存服務器上。等用戶再請求相同資源的時候,CDN代替源站服務器,直接返回已進行緩存的資源,節省了進行相同運算的處理時間。帶給用戶的直觀感覺就是程序或網頁響應快。

此外,CDN能夠直接重寫HTTP的緩存標頭,對是否緩存、緩存時間、強制緩存,將源站資源緩存在CDN節點上,徹底根據用戶需求進行定製化部署。

2.     減小HTTP請求

從網絡層面講,每請求一個網頁資源就須要發起一個HTTP請求,當請求數過多時就會形成首字節時間(TTFB)的延長。所以頁面元素越多,也就越消耗時間來加載資源。形成的結果就是,用戶打開內容豐富的頁面,反而引發了5s焦慮,所以放棄繼續訪問[]。丟失用戶這對於應用來講,無異因而巨大的損失。


CDN可經過整合資源從而減小資源的HTTP請求,從而加快用戶加載頁面所消耗的時間。


圖片

圖|CDN進行HTTP資源整合示例

3.     HTML內容壓縮

一般HTML會對整個內容進行壓縮,壓縮後的文件越大,瀏覽器在進行解壓縮並傳遞給用戶的時間就會越長,而影響解壓縮時間的因素與採起的壓縮工具備關。在對GZIP、BZIP、LZMA等壓縮方式進行對比以後發現,GZIP對內容的壓縮量相對較大[2],且GZIP的壓縮和解壓縮時間都相對較小[3],所以GZIP爲當前最爲廣泛的壓縮方式。

CDN能夠對HTML進行GZIP壓縮,最大程度優化由於網頁內容的壓縮和解壓縮影響下的TTFB。

4.     圖片加載

常規的圖片壓縮方式分爲三種:

第一種是有損壓縮,將圖片的質量下降,從而減小圖片大小;

第二種是將圖片變成像素模式,並同時將圖片優化,使其看起來更好看而不是所有由像素點構成的圖片,從而減小瀏覽器加載圖片的時間;

第三種是將柵格式的圖片所有變成矢量圖,從根本上減小圖片大小,同時維持高質量的視覺效果。

CDN則利用第三種方式,在無損圖片質量的同時最大程度減小圖片大小。所以圖片越大,越能體現CDN對於圖片處理的優越性。

5.     SSL鏈接

圖|CDN雙向加密示例

① 安全性

數據傳輸固然不可忽視數據加密問題,在使用CDN過程當中涉及兩階段SSL加密過程。優秀的CDN服務商,在用戶和CDN交互過程使用的是CDN提供的經由CA認證的高等級A+證書。所以一般狀況下用戶與CDN節點的緩存數據進行交互過程是安全可控的。而CDN訪問源站的過程是須要自行按需部署SSL證書,因此保證了數據在CDN和源站進行交互的過程也是加密的。

除此以外,CDN還可提供HTTP嚴格傳輸安全協議( HSTS )技術。即CDN可統一對接入的源站域名進行管理,使該域只能經過SSL/TLS進行訪問。可是由於有些應用在https進行訪問後會重定向到http,若應用HSTS,則有可能會影響部分功能,所以HSTS技術仍是根據用戶需求按需部署。

② 高效

當client請求數據的時候,本質上是經過與CDN邊緣節點服務器進行交互,而CDN邊緣節點服務器再按期或根據用戶需求向源站進行數據同步或預取。在用戶與CDN進行數據交互過程當中,CDN提供keep alive機制。當用戶請求資源時,CDN支持短期的開放鏈接,使用戶無需重複與CDN節點創建鏈接,從而減小了SSL反覆創建鏈接過程當中浪費的時間。


穩固地基——改善網絡性能

CDN是否優秀,一方面體如今對於改善網絡鏈接所使用的多種技術。可是不管提供的技術有多智能、多便捷,CDN的立足之本都是節點的物理位置選擇和總體網絡的架構部署。就比如搭建房子,根基穩了才能在上層建築上凸顯個性。所以CDN的根基主要是從網絡的數據傳輸方式、路由策略和運營商的選擇來衡量的。

1.     拯救運維工程師睡眠的技術——任意播(Anycast)

網絡環境中,數據從客戶端到服務器的通訊方式有多種選擇,常見爲單播、組播、廣播。

  • 單播(Unicast)是指一對一的通訊方式,只有客戶端發起了請求服務器纔會發送數據流。這種方式最爲普遍,常見的TCP就是屬於單播模式。更直觀來說,用戶發送郵件、瀏覽網頁就是單播最好的體現,即點對點傳輸。

  • 組播(Multicast)是指一對多的通訊方式,可是隻發給特定「組」的用戶,當下視頻會議、流媒體等資源多數採用組播方式。形象的比喻是用戶在油管上關注了一個播主,那麼這個播主更新的內容會自動推送到訂閱該播主的用戶上。不在這個訂閱組的用戶將收不到更新的推送。那麼「組」的這個概念就很好理解了。

  • 廣播(Broadcast)也是一對多的通訊方式,只不過相較於組播,廣播是發給廣播域裏面全部用戶。由於用戶只能是被動接受,如果再加上網絡結構設計不合理,所以纔會有「廣播風暴」這種網絡故障存在。

然而任意播(Anycast)的產生則是概念性的突破。任意播是由IPV6衍生出的一個技術,即經過「就近原則」,向最近節點發送數據的方式。那麼問題來了,網絡又不像實際路況,到某一個節點路由器時,面對新解鎖的地圖它怎麼知道誰最近呢?尤爲涉及到全球範圍,每個國家的路由是不會讓別人摸清的,那依靠任意播的CDN、DNS是怎麼工做的呢?

答案就是利用BGP。不一樣地域之間靠邊緣ISP將路由告知給鄰居節點,從而實現了將保密區域內部結構私有化,同時不一樣地域之間又能互通。

CDN即是依託於該特色,在全球節點互通互聯的基礎上,向全球用戶提供加速服務。

圖片

圖|CDN路由選擇示例

2.     運營商強強聯合

CDN選取的運營商線路所影響的加速效果遠比CDN提供的技術性能優化明顯得多。通常來說,一級運營商的專線質量以及節點位置、數量會遠遠高於2、三級運營商。所以爲保證運營商效益,一級運營商會在不一樣地域構成一個相似於聯盟性質的「一級運營商俱樂部」,在穩固了本身的市場佔有率同時,又保證彼此經過聯盟而向用戶提供最優的鏈路質量。與此同時,優質CDN則會協議使用「一級運營商俱樂部」提供的鏈路,將加速效果最大化。



04

圖片

總結

經過CDN的靈活部署,在節省了互聯網出口帶寬的同時,爲業務帶來了更多的可能性。不用再顧慮大文件、高清音頻是否會出現嚴重卡頓現象,再也不考量其餘地域用戶是否有時延問題等。應用CDN不但爲業務免除了數據傳輸的影響因素,並且帶來了卓越的用戶體驗,讓業務能夠更加專一於應用的開發以及客戶羣體的定位。

做爲當前已經使用CDN的業務,如今是否是已經開始偷着樂了呢。

相關文章
相關標籤/搜索