CDN-內容分發網絡

前段時間介紹了瀏覽器緩存機制,通過瀏覽器緩存一方面可以改善用戶的體驗,而不用漫長地等待從服務器下載資源;另一方面減輕服務器壓力、節省流量。CDN是另一種可以大幅度優化用戶體驗,且減輕服務器壓力的技術。下面就自己瞭解的CDN技術分享下。

CDN的實現是一組技術的組合,每個技術都可以單獨成文詳細討論,這裏就不深入每個技術。內容目錄:

1.    什麼是CDN

2.       CDN技術原理

2.1.       分佈式存儲

2.2.       內容管理

2.3.       負載均衡

2.4.       網絡請求的重定向

3.       CDN資源訪問流程

4.       關於CDN的疑問

4.1.       使用CDN後,如何獲取客戶端真實IP

4.2.       採用CDN服務以後如何保證內容的更新和同步?

1.    什麼是CDN

CDN的全稱是Content Delivery Network,即內容分發網絡。其目的是通過在現有的Internet中增加一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡"邊緣"(邊緣服務器),使用戶可以就近取得所需的內容,解決Internet網絡擁擠的狀況,提高用戶訪問網站的響應速度。從技術上全面解決由於網絡帶寬小、用戶訪問量大、網點分佈不均等原因所造成的用戶訪問網站響應速度慢的問題。

2.    CDN技術原理

CDN技術是在美國首先興起並迅速發展起來的一種解決互聯網性能不佳問題的有效手段。其基本思路就是儘可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩。通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上

CDN網絡架構主要由兩大部分,分爲中心邊緣兩部分,中心指CDN網管中心和DNS重定向解析中心,負責全局負載均衡,設備系統安裝在管理中心機房;邊緣主要指異地節點,CDN分發的載體,主要由Cache和負載均衡器等組成。

實際上,CDN是一種新型的網絡構建方式,它是爲能在傳統的IP網發佈寬帶豐富媒體而特別優化的網絡覆蓋層;而從廣義的角度,CDN代表了一種基於質量與秩序的網絡服務模式。簡單地說,CDN是一個經策略性部署的整體系統,包括分佈式存儲負載均衡網絡請求的重定向內容管理4個要件。

2.1.         分佈式存儲

這點顯而易見,CDN網絡將存儲資源分佈到各個地理位置、各個網段。存儲系統作爲CDN系統密不可分的一部分,將CDN分發的文件和數據庫表記錄內容存儲起來,提供持續服務。存儲系統採用三級存儲架構,包括核心存儲、CDN服務節點分佈式緩存和終端本地緩存。任意一個點的存儲崩潰或失效,並不影響系統服務的可用性。

wKioL1YlejXhrwbHAAJVWC2gY3Y241.jpg

CDN系統在5大運營商(中國電信、中國網通、中國鐵通、中國移動、中國聯通)以及2大專有網絡(中國教育和科研計算機網、中國科技網)都布有CDN節點。這樣就消除了不同運營商之間互聯的瓶頸造成的影響,實現了跨運營商的網絡加速,保證不同網絡中的用戶都能得到良好的訪問質量

2.2.         內容管理

內容管理和全局的網絡流量管理(Traffic Management)CDN的核心所在。通過用戶就近性和服務器負載的判斷,CDN確保內容以一種極爲高效的方式爲用戶的請求提供服務。總的來說,內容服務基於緩存服務器,也稱作代理緩存(Surrogate),它位於網絡的邊緣,距用戶僅有"一跳"(Single Hop)之遙。同時,代理緩存是內容提供商源服務器(通常位於CDN服務提供商的數據中心)的一個透明鏡像。這樣的架構使得CDN服務提供商能夠代表他們客戶,即內容供應商,向最終用戶提供儘可能好的體驗,而這些用戶是不能容忍請求響應時間有任何延遲的。據統計,採用CDN技術,能處理整個網站頁面的 70%95%的內容訪問量,減輕服務器的壓力,提升了網站的性能和可擴展性。

2.3.         負載均衡

CDN負載均衡系統實現CDN內容路由功能。它的作用是將用戶的請求導向整個CDN網絡中的最佳節點。最佳節點的選定可以根據多種策略,例如距離最近節點負載最輕等。負載均衡系統是整個CDN的核心,負載均衡的準確性和效率直接決定了整個CDN的效率和性能。通常負載均衡可以分爲兩個層次:全局負載均衡(GSLB本地負載均衡(SLB

l  全局負載均衡(GSLB)主要的目的是在整個網絡範圍內將用戶的請求定向到最近的節點(或者區域)。因此,就近性判斷是全局負載均衡的主要功能。

l  本地負載均衡一般侷限於一定的區域範圍內,其目標是在特定的區域範圍內尋找一臺最適合的節點提供服務,因此,CDN節點的健康性、負載情況、支持的媒體格式等運行狀態是本地負載均衡進行決策的主要依據。

負載均衡可以通過多種方法實現,主要的方法包括DNS、應用層重定向、傳輸層重定向等等。對於全局負載均衡而言,爲了執行就近性判斷,通常可以採用兩種方式,一種是靜態的配置,例如根據靜態的IP地址配置表進行IP地址到CDN節點的映射。另一種方式是動態的檢測,例如實時地讓CDN節點探測到目標IP的距離(可以採用RRTHops作爲度量單位),然後比較探測結果進行負載均衡。當然,靜態和動態的方式也可以綜合起來使用。

對於本地負載均衡而言,爲了執行有效的決策,需要實時地獲取Cache設備的運行狀態。獲取的方法一般有兩種,一種是主動探測,一種是協議交互。主動探測針對SLB設備和Cache設備沒有協議交互接口的情況,通過ping等命令主動發起探測,根據返回結果分析狀態。另一種是協議交互,即SLBCache根據事先定義好的協議實時交換運行狀態信息,以便進行負載均衡。比較而言,協議交互比探測方式要準確可靠,但是目前尚沒有標準的協議,各廠家的實現一般僅是私有協議,互通比較困難。

2.4.         網絡請求的重定向

當用戶訪問了使用CDN服務的資源時,DNS域名服務器通過CNAME方式將最終域名請求重定向到CDN系統中的智能DNS負載均衡系統。智能DNS負載均衡系統通過一組預先定義好的策略(如內容類型、地理區域、網絡負載狀況等),將當時能夠最快響應用戶的節點地址提供給用戶,使用戶可以得到快速的服務

同時,它還與分佈在不同地點的所有CDN節點保持通信,蒐集各節點的健康狀態,確保不將用戶的請求分配到任何一個已經不可用的節點上。

3.    CDN資源訪問流程

使用了CDN服務後,用戶的訪問流程如下圖所示:

wKiom1YlekvAMgPgAADRy84Xs6w479.jpg

 圖:CDN用戶訪問流程圖(摘自:思必達CDN

  1. 用戶向瀏覽器提供要訪問網站的域名,域名解析的請求被髮往網站的DNS域名解析服務器;

  2. 由於網站的DNS域名解析服務器對此域名的解析設置了CNAME,請求被指向CDN網絡中的智能DNS負載均衡系統;

  3. 智能DNS負載均衡系統對域名進行智能解析,將響應速度最快的節點IP返回給用戶;

  4. 瀏覽器在得到速度最快節點的IP地址以後,向CDN節點發出訪問請求;

  5. 由於是第一次訪問,CDN節點將回到源站取用戶請求的數據併發給用戶;

  6. 當有其他用戶再次訪問同樣內容時,CDN將直接將數據返回給客戶,完成請求/服務過程。

同時,它還與分佈在不同地點的所有CDN節點保持通信,蒐集各節點的健康狀態,確保不將用戶的請求分配到任何一個已經不可用的節點上。

4.    關於CDN的疑問

4.1.           使用CDN後,如何獲取客戶端真實IP

使用CDN服務之後獲得原始IP地址發生變化。因爲源服務器的請求都來自CDN節點,不知道客戶原始IP。一般來說,CDN節點會以某種方式將源客戶端的IP傳遞給源服務器,如有的網宿CDN,它是將源IP添加到了一個叫“Cdn-Src-Ip”Http Header裏,以C#語言爲例,獲得客戶端真實IP的方式如下:(根據不同的CDN提供商可能會有所不同)。

或者從HTTP請求Header中“HTTP_X_FORWARDED_FOR字段獲得。HTTP_X_FORWARDED_FOR的值是:"原始真實IP,1層代理IP,2層代理IP,....."。判斷HTTP_X_FORWARDED_FOR是否爲空(沒有使用CDN或代理這個字段爲空),不爲空把這個作爲IP地址。這是一個簡單有效的方法。至於很複雜的情況就不處理了,比如多層代理。

4.2.           採用CDN服務以後如何保證內容的更新和同步?

CDN服務中,CDN節點中的內容與源網站內容的同步主要是靠設置刷新時間策略來實現的。針對不同的內容設置不同的刷新時間,對於更新頻率比較低的內容可以設置較長的刷新時間以減輕回源站的訪問壓力;對頻繁更新的內容,我們可以設置成10分鐘或更短,以此來保證內容的同步。設置刷新時間可以按目錄來設置,也可以按具體URL來設置,或按某個關鍵字段來設置,非常靈活。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章