整理《CDN技術詳解》一書中重要的內容。
互聯網與萬維網
廣義的互聯網,由兩層組成:一層是以TCP/IP為代表的網絡層;另一層是以萬維網WWW為代表的應用層。辨識互聯網和萬維網的區別,是認識CDN的基礎。
互聯網(網絡層)
以TCP/IP為核心的狹義的互聯網,實際上是廣義互聯網的下層,是網絡基礎。更一般地說就是TCP/IP網絡。這一層的主要作用是通過計算機之間的互聯,將各種信息的數據報文以極低的成本進行傳輸,俗稱“管道”,所有信息和內容在這個管道里進行傳送。
互聯網的設計理念是:
- 網絡是中立和無控制的,任何人都沒有決定權
- 網絡是應用無關的,它的任務就是如何更好地將數據包進行端到端傳輸
萬維網(應用層)
以萬維網WWW為代表的應用層,是廣義互聯網的上層。這一層包括很多種類型的流量和應用,郵件、軟件、在線影院、游戲、電子商務、移動應用等,所有SP(service Provider,服務提供商)提供的都是這些用戶看得見、摸得着的應用。構成了我們常說的互聯網業務和信息經濟。
總結:互聯網就是鐵路軌道和信息系統。萬維網則是鐵路上運行的列車之一。
CDN出現的背景
在互聯網這個鐵路網中,有四個地方會造成列車擁塞。
- “第一公里:網站的出口帶寬,這個帶寬決定了網站能為用戶提供的訪問速度和並發訪問量。用戶請求數據量超過出口帶寬,就會在出口形成擁塞。就像節假日,出城的高速出口,比平時更多人通過,但是出口只有兩三個,所以造成擁塞。
- “最后一公里”:萬維網流量向用戶傳遞的最后一段接入鏈路,即用戶接入帶寬。用戶的平均接入帶寬,是影響互聯網上層應用發展的決定性因素之一。通過ADSL,豐富的接入手段(光纖入戶,WiFi,3G/4G/5G)等手段,最后一公里問題基本上已經得到解決。
- “對等互聯關口”:不同基礎運營商支架的互聯互通,一般兩個運營商之間只有兩三個互聯互通點。這里通常是互聯網傳輸的擁堵點。
- “長途骨干傳輸”:首先是長距離傳輸時延的問題,從服務器到用戶之間要經過很長的距離,這是互聯網本身無法解決的問題。其次是骨干網擁塞問題。互聯網上絕大部分流量都要經過骨干網絡進行傳輸,骨干網的承載能力成為影響互聯網性能的瓶頸。
應用層,最值得關注的是服務響應時間。服務響應時間基本是由服務器響應時間和網絡時延組成的。影響服務器響應時間的因素包括協議處理時間、程序性能優化、內容讀取速度等方面。網絡時延則由數據報文在網絡傳送中被各個路由器、交換機轉發發生的時延長總和。
CDN的工作過程
互聯網用戶服務訪問流程
- 用戶在瀏覽器中輸入要訪問的網站域名
- 瀏覽器向本地DNS服務器請求對該域名的解析
- 本地DNS服務器中如果緩存有這個域名的解析結果,則直接響應用戶的解析請求
- 本地DNS服務器中如果沒有關於這個域名的解析結果的緩存,則以遞歸方式向整個DNS系統請求解析,獲得應答后將結果反饋給瀏覽器
- 瀏覽器得到域名解析結果,就是該域名相應的服務器設備的IP地址
- 瀏覽器向服務器請求內容
- 服務器將用戶請求內容傳送給瀏覽器
帶有CDN的服務訪問過程
- 用戶點擊網站頁面上的URL,經過本地DNS系統解析,DNS系統會將最終將域名的解析權交給CNAME指向的CDN專用DNS服務器
- CDN的DNS服務器將CDN的全局負載均衡設備IP地址返回給用戶
- 用戶向CDN的全局負載均衡設備發起內容URL訪問請求
- CDN全局負載均衡設備根據用戶IP地址,以及用戶請求的內容URL,選擇一台用戶所屬區域的區域負載均衡設備,告訴用戶向這台設備發起請求
- 區域負載均衡設備會為用戶選擇一台合適的緩存服務器提供服務,選擇依據:
- 根據用戶IP地址判斷距離用戶最近的服務器;
- 根據資源URL判斷哪台服務器上有所需資源;
- 查詢各個服務器當前的負載情況,判斷哪台服務器尚有服務能力。
- 全局負載均衡設備把服務器的IP地址返回給用戶
- 用戶向緩存服務器發起請求,緩存服務器響應用戶的請求。如果這台服務器沒有用戶需要的內容,但是區域負載均衡設備依然將它分配給了用戶,就向這台服務器的上一級緩存服務器請求內容,直至追溯到網站的源服務器將內容拉取到本地。
CDN架構
功能架構
典型的CDN系統由分發服務系統、負載均衡系統和運營管理系統三大部分組成。
分發服務系統,主要實現將內容從內容源中心向邊緣的推送和存儲。基本工作單元是許許多多的Cache設備(緩存服務器),Cache負責使用緩存響應最終用戶的訪問請求。Cache還負責源站點進行內容同步。
一般根據內容類型和服務種類的不同,分發系統分為多個子系統,如上圖中的靜態內容激素,動態內容加速等等。
負載均衡系統:CDN系統的中樞神經。負責對所有發起服務請求的用戶進行訪問調度,確定提供給用戶的最終實際訪問地址。
一般負載均衡都是分級實現的,兩級分為全局負載均衡(GSLB)和本地負載均衡(SLB)。
運營管理系統:分為運營管理和網絡管理兩個子系統。運行管理包含客戶管理、產品管理、計費管理、統計分析等。網絡管理實現對CDN系統的網絡設備管理、拓撲管理、鏈路監控和故障管理,為管理員提供管理操作界面。
部署架構
下面是一個典型的三級部署示意圖。
邊緣層:為用戶提供內容服務的Cache設備部署在網絡邊緣位置。
中心層:保存最多的內容副本,當邊緣未命中時,會向中心層請求。如果中心層也未命中,需要中心層向源站回源。
區域層:減輕中心層壓力,負責一個區域的控制和管理,也保存部分副本供邊緣層訪問。
POP:point-of-presence,邊緣節點,直接為用戶提供服務。
骨干點:中心和區域的節點。
CDN系統分類
web系統分層架構
表現層:接收用戶的請求以及業務邏輯層吹結構的返回以及展示
業務邏輯層:處理具體業務邏輯,根據表現層傳來的用戶需求向數據訪問層發出數據查詢要求並將查詢結果進行整合,返回給表現層
數據訪問層:對原始數據進行保存和管理,並為業務層或者表現層提供數據查詢服務
基於內容類型分類
- 網頁加速(靜態網頁和動態網頁):緩存網頁
- 流媒體加速:緩存流媒體
- 文件傳輸加速:緩存文件
- 應用協議加速
- 廣域網應用加速
- SSL應用加速:CDN提供SSL加速硬件完成加密解密工作
- 網頁壓縮:CDN對網頁內容進行壓縮,提供給用戶,加速傳輸速度
基於內容生成機制分類
CDN實現網頁加速本質上就是將Web源站各個層次的功能轉移到CDN邊緣cache上完成。
- 表現層復制
- 全站復制
靜態內容只需要CDN提供表現層復制的功能。目前大多CDN都是只處理靜態內容請求的網絡加速。
動態內容需要在CDN上復制和緩存業務邏輯層以及后台數據訪問層,從而在CDN邊緣節點承擔處理用戶請求、應用數據計算、動態內容生成等工作。這種方案實現的關鍵是保持源站以及副本之間的一致性。