CDN 內容推送網路

2021-09-23 21:45:56 字數 4531 閱讀 5649

前段時間介紹了瀏覽器快取機制

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

1.

什麼是cdn?

2.cdn技術原理

2.1.

分布式儲存

2.2.

內容管理

2.3.

負載均衡

2.4.

網路請求的重定向

3.cdn資源訪問流程

4.關於cdn的疑問

4.1.使用cdn後,如何獲取客戶端真實ip?

4.2.

採用cdn

服務以後如何保證內容的更新和同步?

cdn的全稱是content delivery network,即內容分發網路。其目的是通過在現有的internet中增加一層新的網路架構,將**的內容發布到最接近使用者的網路"邊緣"(邊緣伺服器),使使用者可以就近取得所需的內容,解決internet網路擁擠的狀況,提高使用者訪問**的響應速度。從技術上全面解決由於網路頻寬小、使用者訪問量大、網點分布不均等原因所造成的使用者訪問**響應速度慢的問題。

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

cdn網路架構主要由兩大部分,分為中心邊緣兩部分,中心指cdn網管中心和dns重定向解析中心,負責全域性負載均衡,裝置系統安裝在管理中心機房;邊緣主要指異地節點,cdn分發的載體,主要由cache和負載均衡器等組成。

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

這點顯而易見,cdn網路將儲存資源分布到各個地理位置、各個網段。儲存系統作為cdn系統密不可分的一部分,將cdn分發的檔案和資料庫表記錄內容儲存起來,提供持續服務。儲存系統採用**儲存架構,包括核心儲存、cdn服務節點分布式快取和終端本地快取。任意乙個點的儲存崩潰或失效,並不影響系統服務的可用性。

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

內容管理和全域性的網路流量管理(traffic management)是cdn的核心所在。通過使用者就近性和伺服器負載的判斷,cdn

確保內容以一種極為高效的方式為使用者的請求提供服務。總的來說,內容服務基於快取伺服器,也稱作**快取(surrogate),它位於網路的邊緣,距使用者僅有"一跳"(single hop)之遙。同時,**快取是內容提供商源伺服器(通常位於cdn服務提供商的資料中心)的乙個透明映象。這樣的架構使得cdn服務提供商能夠代表他們客戶,即內容**商,向終端使用者提供盡可能好的體驗,而這些使用者是不能容忍請求響應時間有任何延遲的。據統計,採用cdn技術,能處理整個**頁面的 70%~95%的內容訪問量,減輕伺服器的壓力,提公升了**的效能和可擴充套件性。

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

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

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

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

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

當使用者訪問了使用cdn服務的資源時,dns網域名稱伺服器通過cname方式將最終網域名稱請求重定向到cdn系統中的智慧型dns負載均衡系統。智慧型dns

負載均衡系統通過一組預先定義好的策略(如內容型別、地理區域、網路負載狀況等),將當時能夠最快響應使用者的節點位址提供給使用者,使使用者可以得到快速的服務。

同時,它還與分布在不同地點的所有cdn節點保持通訊,蒐集各節點的健康狀態,確保不將使用者的請求分配到任何乙個已經不可用的節點上。

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

)使用者向瀏覽器提供要訪問**的網域名稱,網域名稱解析的請求被發往**的dns網域名稱解析伺服器;

由於**的dns網域名稱解析伺服器對此網域名稱的解析設定了cname,請求被指向cdn網路中的智慧型dns負載均衡系統;

智慧型dns負載均衡系統對網域名稱進行智慧型解析,將響應速度最快的節點ip返回給使用者;

瀏覽器在得到速度最快節點的ip位址以後,向cdn節點發出訪問請求;

由於是第一次訪問,cdn節點將回到源站取使用者請求的資料並發給使用者;

當有其他使用者再次訪問同樣內容時,cdn將直接將資料返回給客戶,完成請求/服務過程。

同時,它還與分布在不同地點的所有cdn節點保持通訊,蒐集各節點的健康狀態,確保不將使用者的請求分配到任何乙個已經不可用的節點上。

使用cdn服務之後獲得原始ip位址發生變化。因為源伺服器的請求都來自cdn節點,不知道客戶原始ip。一般來說,cdn節點會以某種方式將源客戶端的ip傳遞給源伺服器,如有的網宿cdn,它是將源ip新增到了乙個叫「cdn-src-ip」的http header裡,以c#語言為例,獲得客戶端真實ip的方式如下:(根據不同的cdn提供商可能會有所不同)。

c#**

string srcip = request.headers["cdn-src-ip"];

if(srcip == null)

或者從http請求header中「http_x_forwarded_for字段獲得。http_x_forwarded_for的值是:"原始真實ip,1層**ip,2層**ip,....."。判斷http_x_forwarded_for是否為空(沒有使用cdn或**這個欄位為空),不為空把這個作為ip位址。這是乙個簡單有效的方法。至於很複雜的情況就不處理了,比如多層**。

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

CDN內容發布網路

content delivery network 內容分布網路,它是構築在現有 internet 上的一種先進的流量分配網路。其目的是通過在現有的 internet 中增加一層新的網路架構,將 的內容發布到最接近使用者的網路 邊緣 使使用者可以就近取得所需的內容,提高使用者訪問 的響應速度。有別於映...

CDN 內容分發網路

一 何為cdn?cdn的全稱是content delivery network,即內容分發網路。其基本思路是盡可能避開網際網路上有可能影響資料傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快 更穩定。通過在網路各處放置節點伺服器所構成的在現有的網際網路基礎之上的一層智慧型虛擬網路,cdn系統能夠實時地...

CDN(內容分發網路)

cdn是一種提高使用者訪問速度的技術。解決網路擁塞問題。在一次網路請求中,cdn究竟做了哪些事?在瀏覽器中輸入乙個 dns伺服器會將網域名稱的解析權交給cname指向的cdn專用的dns伺服器,接著專用的dns伺服器返回cdn負載均衡集群的ip位址。負載均衡裝置根據設定好的策略來選擇相應的cdn快取...