在不同地域的使用者訪問**的響應速度存在差異,為了提高使用者訪問的響應速度、優化現有internet中資訊的流動,需要在使用者和伺服器間加入中間層cdn. 使使用者能以最快的速度,從最接近使用者的地方獲得所需的資訊,徹底解決網路擁塞,提高響應速度,是目前大型**使用的流行的應用方案.
我們先看傳統的未加快取服務的訪問過程,以便了解cdn快取訪問方式與未加快取訪問方式的差別:
由上圖可見,使用者訪問未使用cdn快取**的過程為:
使用者輸入訪問的網域名稱,作業系統向localdns查詢網域名稱的ip位址.
localdns向root dns查詢網域名稱的授權伺服器(這裡假設localdns快取過期)
root dns將網域名稱授權dns記錄回應給localdnslocaldns得到網域名稱的授權dns記錄後,繼續向網域名稱授權dns查詢網域名稱的ip位址
網域名稱授權dns 查詢網域名稱記錄後,回應給localdnslocaldns將得到的網域名稱ip位址,回應給 使用者端
使用者得到網域名稱ip位址後,訪問站點伺服器
站點伺服器應答請求,將內容返回給客戶端.
cdn網路是在使用者和伺服器之間增加cache層,主要是通過接管dns實現,將使用者的請求引導到cache上獲得源伺服器的資料
下面讓我們看看訪問使用cdn快取後的**的過程:
通過上圖,我們可以了解到,使用了cdn快取後的**的訪問過程變為:
使用者輸入訪問的網域名稱,作業系統向localdns查詢網域名稱的ip位址.
localdns向root 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...