CDN架構以及原理分析

2021-09-01 21:52:04 字數 3443 閱讀 2695

在不同地域的使用者訪問**的響應速度存在差異,為了提高使用者訪問的響應速度、優化現有internet中資訊的流動,需要在使用者和伺服器間加入中間層cdn. 使使用者能以最快的速度,從最接近使用者的地方獲得所需的資訊,徹底解決網路擁塞,提高響應速度,是目前大型**使用的流行的應用方案.

我們先看傳統的未加快取服務的訪問過程,以便了解cdn快取訪問方式與未加快取訪問方式的差別:

由上圖可見,使用者訪問未使用cdn快取**的過程為:

使用者輸入訪問的網域名稱,作業系統向localdns查詢網域名稱的ip位址.

localdnsroot dns查詢網域名稱的授權伺服器(這裡假設localdns快取過期)

root dns將網域名稱授權dns記錄回應給localdnslocaldns得到網域名稱的授權dns記錄後,繼續向網域名稱授權dns查詢網域名稱的ip位址

網域名稱授權dns 查詢網域名稱記錄後,回應給localdnslocaldns將得到的網域名稱ip位址,回應給 使用者端

使用者得到網域名稱ip位址後,訪問站點伺服器

站點伺服器應答請求,將內容返回給客戶端.

cdn網路是在使用者和伺服器之間增加cache層,主要是通過接管dns實現,將使用者的請求引導到cache上獲得源伺服器的資料

下面讓我們看看訪問使用cdn快取後的**的過程:

通過上圖,我們可以了解到,使用了cdn快取後的**的訪問過程變為:

使用者輸入訪問的網域名稱,作業系統向localdns查詢網域名稱的ip位址.

localdnsroot dns查詢網域名稱的授權伺服器(這裡假設localdns快取過期)

root dns將網域名稱授權dns記錄回應給localdnslocaldns得到網域名稱的授權dns記錄後,繼續向網域名稱授權dns查詢網域名稱的ip位址

網域名稱授權dns 查詢網域名稱記錄後(一般是cname),回應給localdnslocaldns得到網域名稱記錄後,向智慧型排程dns查詢網域名稱的ip位址

智慧型排程dns 根據一定的演算法和策略(比如靜態拓撲,容量等),將最適合的cdn節點ip位址回應給localdnslocaldns將得到的網域名稱ip位址,回應給 使用者端

使用者得到網域名稱ip位址後,訪問站點伺服器

cdn節點伺服器應答請求,將內容返回給客戶端.(快取伺服器一方面在本地進行儲存,以備以後使用,二方面把獲取的資料返回給客戶端,完成資料服務過程)

通過以上的分析我們可以得到,為了實現對普通使用者透明(使用快取後使用者客戶端無需進行任何設定)訪問,需要使用dns(網域名稱解析)來引導使用者來訪問cache伺服器,以實現透明的加速服務. 由於使用者訪問**的第一步就是網域名稱解析,所以通過修改dns來引導使用者訪問是最簡單有效的方式.

對於普通的internet使用者,每個cdn節點就相當於乙個放置在它周圍的**伺服器. 

通過對dns的接管,使用者的請求被透明地指向離他最近的節點,節點中cdn伺服器會像**的原始伺服器一樣,響應使用者的請求. 

由於它離使用者更近,因而響應時間必然更快.

從上面圖中 虛線圈起來的那塊,就是cdn層,這層是位於 使用者端 和 站點伺服器之間.

在使用者請求解析網域名稱的時候,智慧型dns判斷使用者的localdns的ip,然後跟dns伺服器內部的ip表範圍匹配一下,看看使用者是電信還是網通使用者,然後給使用者返回對應的ip位址 

這裡使用的是靜態拓撲的方法,只是判斷localdns的ip.要想使用更複雜的排程演算法可以考慮商業產品,如f5的3dns.

在這裡我們將使用 bind 的view功能來實現運營商的區分,假設我們在每個運營商的機房都放有乙個cdn節點,列表如下:

網域名稱運營商(view)

服務位址

www.cdntest.com

網通(cnc)

192.168.0.1

www.cdntest.com

電信(telecom)

192.168.0.2

www.cdntest.com

教育網(edu)

192.168.0.3

www.cdntest.com

預設(any)

192.168.0.4

網域名稱zone配置檔案

a記錄位址

www.cdntest.com

cnc_cdntest.zone

192.168.0.1

www.cdntest.com

tel_cdntest.zone

192.168.0.2

www.cdntest.com

edu_cdntest.zone

192.168.0.3

www.cdntest.com

default_cdntest.zone

192.168.0.4

以上只列出了 www.cdntest.com 的a記錄位址,其他關於zone的語法 請參考網際網路.

使用者向localdns查詢網域名稱 www.cdntest.com

localdns向 授權dns 查詢www.cdntest.com

授權dns 判斷使用者使用的 localdns的ip位址,匹配上述設定的ip範圍,如果範圍在網通,就將網通對應的ip位址(192.168.0.1),回應給localdns(其他依此類推)

localdns將得到的網域名稱ip位址,回應給 使用者端 (網域名稱解析完成) 說明:再此過程中,我們簡化了主dns智慧型dns之間的cname過程(為了簡要說明問題). 

這裡使用的是靜態拓撲(根據ip範圍)的方法,也稱為地域化方法,只是判斷localdns的ip.

如果使用者設定錯誤的dns,可能會導致使用者訪問比原來慢(比如網通使用者設定了電信的dns)

不能判斷cdn節點伺服器的健康狀態和容量狀態,可能會把使用者定向到不可用的cdn節點

由於靜態拓撲方法,可能存在使用者訪問的cdn節點不是最優化和最快的

.....可能還有其他想不到的....

在建立cdn網路時,最關鍵的就是智慧型排程dns,這個是***網路總協調,通過高效的排程演算法,可以使使用者得到最佳的訪問體驗.

其次就是 ***節點的管理,比如涉及到 內容的同步機制,配置檔案的更新等等,都需要有一套機制來保證.

當然在大型**中,也要考建設cdn體系的成本和回報率.

**:

springmvc架構原理分析

第一步 發起請求到前段控制器 dispatcherservlet 可以根據xml配置,註解進行查詢 第四步 前段控制器呼叫處理器介面卡去執行handler 第五步 處理器介面卡去執行handler 第六步 handler執行完成給介面卡返回modelandview 第七步 處理器介面卡向前段控制器返...

Spring MVC架構 原理分析

一 原理分析圖 二 步驟說明 三 元件抽取 1.前端控制器 一般不需要程式開發 接收請求,響應結果,相當於 器,處理器,減少了其他元件之間的耦合度 2.處理器對映器 不需要程式開發 根據請求的url來查詢handler 根據註解或xml檔案 3.處理器介面卡 不需要程式開發 按照特定規則 handl...

SpringMVC 架構原理分析

角色功能 dispatcherservlet前端控制器 接收請求,響應結果。起 處理的角色 dispatcherservlet的存在降低了元件之間耦合度的要求 處理器對映器 根據url查詢handler,和dispatcherservlet直接聯絡 handleradapter處理器介面卡 去執行h...