CDN技術原理

要了解CDN的實現原理,首先讓咱們來回顧一下網站傳統的訪問過程,以便理解其與CDN訪問方式之間的差異:php

由上圖可見,傳統的網站訪問過程爲:web

1. 用戶在瀏覽器中輸入要訪問的域名;
2. 瀏覽器向域名解析服務器發出解析請求,得到此域名對應的IP地址;
3. 瀏覽器利用所獲得的IP地址,向該IP對應的服務器發出訪問請求;
4. 服務器對此響應,將數據回傳至用戶瀏覽器端顯示出來。數據庫

與傳統訪問方式不一樣,CDN網絡則是在用戶和服務器之間增長Cache層,將用戶的訪問請求引導到Cache節點而不是服務器源站點,要實現這一目的,主要是經過接管DNS實現,下圖爲使用CDN緩存後的網站訪問過程:瀏覽器

由上圖可見,使用CDN緩存後的網站訪問過程演變爲:緩存

1.  用戶在瀏覽器中輸入要訪問的域名; 
2.  瀏覽器向域名解析服務器發出解析請求,因爲CDN對域名解析過程進行了調整,因此用戶端通常獲得的是該域名對應的CNAME記錄,此時瀏覽器須要再次對得到的CNAME域名進行解析才能獲得緩存服務器實際的IP地址。
注:在此過程當中,全局負載均衡DNS解析服務器會根據用戶端的源IP地址,如地理位置(深圳仍是上海)、接入網類型(電信仍是網通)將用戶的訪問請求定位到離用戶路由最短、位置最近、負載最輕的Cache節點(緩存服務器)上,實現就近定位。定位優先原則可按位置、可按路由、也可按負載等。 
3. 再次解析後瀏覽器獲得該域名CDN緩存服務器的實際IP地址,向緩存服務器發出訪問請求; 
4.  緩存服務器根據瀏覽器提供的域名,經過Cache內部專用DNS解析獲得此域名源服務器的真實IP地址,再由緩存服務器向此真實IP地址提交訪問請求; 
5.  緩存服務器從真實IP地址獲得內容後,一方面在本地進行保存,以備之後使用,同時把獲得的數據發送到客戶端瀏覽器,完成訪問的響應過程; 
6.  用戶端獲得由緩存服務器傳回的數據後顯示出來,至此完成整個域名訪問過程。安全

經過以上分析能夠看到,不管是否使用CDN網絡,普通用戶客戶端設置不需作任何改變,直接使用被加速網站原有域名訪問便可。對於要加速的網站,只需修改整個訪問過程當中的域名解析部分,便能實現透明的網絡加速服務。服務器

 

Linux 系統 Squid集羣作CDN全網加速網絡

內容分發網絡(CDN)是一種新型網絡內容服務體系,其基於IP網絡而構建,基於內容訪問與應用的效率要求、質量要求和內容秩序而提供內容的分發和服務。而從廣義的角度,CDN表明了一種基於網絡而構建的高質量、高效率、具備鮮明網絡秩序的網絡應用服務模式。架構

  簡單地說,內容分發網絡(CDN)是一個經策略性部署的總體系統,包括分佈式存儲、負載均衡、網絡請求的重定向和內容管理4個要件,而內容管理和全局的網絡流量管理(Traffic Management)是CDN的核心所在。經過用戶就近性和服務器負載的判斷,CDN確保內容以一種極爲高效的方式爲用戶的請求提供服務。負載均衡

總的來講,內容服務基於緩存服務器,也稱做代理緩存(Surrogate),它位於網絡的邊緣,距用戶僅有"一跳"(Single Hop)之遙。同時,代理緩存是內容提供商源服務器(一般位於CDN服務提供商的數據中心)的一個透明鏡像。這樣的架構使得CDN服務提供商可以表明他們客戶,即內容供應商,向最終用戶提供儘量好的體驗,而這些用戶是不能容忍請求響應時間有任何延遲的。

CDN的通俗理解就是網站加速,能夠解決跨運營商,跨地區,服務器負載能力太低,帶寬過少等帶來的網站打開速度慢等問題。

  好比:

  1.一個企業的網站服務器在北京,運營商是電信,在廣東的聯通用戶訪問企業網站時,由於跨地區,跨運營商的緣由,網站打開速度就會比北京當地的電信客戶訪問速度慢不少,很容易形成這個企業的客戶流失

  2.一個網站的服務器性能比較差,承載能力有限,有時面臨突發流量,招架不住,直接致使服務器崩潰,網站打不開,尤爲是電商網站在節日期間,由於這種狀況網站打不開,銷售額白白流失的佔比都高漲至60%

  3.再好比一些中小企業租用的虛擬主機,由於跟好幾個網站共用一臺服務器,每一個網站所分帶寬有限,帶寬太小常常致使流量稍微一多,網站打開速度就很慢,甚至打不開

  以上只是幾個簡單舉例,均可以經過CDN來解決,你們能夠參考下。

  使用CDN的好處?

  1. 不用擔憂本身網站訪客,在任什麼時候間,任何地點,任何網絡運營商,都能快速打開網站。

  2. 各類服務器虛擬主機帶寬等採購成本,包括後期運維成本都會大大減小。

  3. 給網站直接帶來的好處就是:流量,諮詢量,客戶量,成單量,都會獲得大幅度提高。

  CDN的價格?

  你們提起CDN,都會望而卻步,由於CDN太貴,都是大企業才能用得起的貴族式服務,而現在面對中小企業的CDN技術開發已經實現,並進入市場開始運營。

  如今市面上CDN提供商計費方式多樣,有按每個月最低消費的,有按帶寬收費的,有按請求數收費的,有包月包季包年限制的,還有些大多人看不懂的技術指標收費的,總之比較複雜,CDN服務在全部計費方式中,中小企業一至認爲按流量收費最爲合理,另外大多按流量計費方式中會有時間限制,規定時間內用不完就會所有做廢,對於流量把握很差的中小企業,存在至關一部分浪費。

  CDN選擇的標準?

  由於CDN技術牽涉到技術研發,以及售後問題解決的是否快捷,因此在選擇cdn服務商時,必定選擇技術研發實力強專業的公司,以保證在售後出現問題時能獲得及時的解決,而不能僅僅圖便宜,當時是便宜了,可過後會用更大的金錢代價來彌補,因此請選擇CDN服務的企業網站,必定要慎重了,尤爲是中小企業,更經不起折騰。因爲cdn市場很混亂,付完錢,出問題售後跟不上的案例太多了,你們在選擇時仍是選擇專業的CDN服務商爲上策,不要只圖便宜,對於專業的CDN提供商已經很便宜了。

  在CDN業界國內可供中小企業選擇的CDN專業提供商有:Webluker,盛大雲,叄加伍,加速樂等,你們能夠在網上搜搜,到他們官網看看,按照上面的標準進行選擇,應該沒什麼問題。

首先簡單表述一下傳統的動態系統的訪問方法:

  表述的是用戶的請求過程,用戶通過網絡中的路由A、B的傳輸,最終將發送的請求交於動態系統來處理,可是因爲IP網絡自己的「盡力而爲的原則」、網絡鏈路中複雜的環境及硬件的不可靠性的確實存在,導致用戶要出現重複發送的請求的現狀,因此最終致使用戶的請求在提交的過程當中出現等待、數據加載時間過長的一些現象的廣泛存在,這些在線提交式系統的緩慢直接地影響到辦公人員的工做效率,這也是制約着不少大型企業在協同辦公OA、ERP、SAP等信息化建設中,出現最多的問題。

  而CDN分發解決方案解決了與靜態網站相關的性能和可靠性問題,而在當今在線業務體驗中,與分發靜態和動態元素和應用相關的獨特挑戰,則由速網的動態網站加速(動態網站加速)來解決

工做原理

在描述CDN的實現原理,讓咱們先看傳統的未加緩存服務的訪問過程,以便了解CDN緩存訪問方式與未加緩存訪問方式的差異:[3]

  由上圖可見,用戶訪問未使用CDN緩存網站的過程爲:

  1)、用戶向瀏覽器提供要訪問的域名;

  2)、瀏覽器調用域名解析函數庫對域名進行解析,以獲得此域名對應的IP地址;

  3)、瀏覽器使用所獲得的IP地址,域名的服務主機發出數據訪問請求;

  4)、瀏覽器根據域名主機返回的數據顯示網頁的內容。

  經過以上四個步驟,瀏覽器完成從用戶處接收用戶要訪問的域名到從域名服務主機處獲取數據的整個過程。CDN網絡是在用戶和服務器之間增長Cache層,如何將用戶的請求引導到Cache上得到源服務器的數據,主要是經過接管DNS實現,下面讓咱們看看訪問使用CDN緩存後的網站的過程:流程圖

  經過上圖,咱們能夠了解到,使用了CDN緩存後的網站的訪問過程變爲:

  1)、用戶向瀏覽器提供要訪問的域名;

  2)、瀏覽器調用域名解析庫對域名進行解析,因爲CDN對域名解析過程進行了調整,因此解析函數庫通常獲得的是該域名對應的CNAME記錄,爲了獲得實際IP地址,瀏覽器須要再次對得到的CNAME域名進行解析以獲得實際的IP地址;在此過程當中,使用的全局負載均衡DNS解析,如根據地理位置信息解析對應的IP地址,使得用戶能就近訪問。

  3)、這次解析獲得CDN緩存服務器的IP地址,瀏覽器在獲得實際的IP地址之後,向緩存服務器發出訪問請求;

  4)、緩存服務器根據瀏覽器提供的要訪問的域名,經過Cache內部專用DNS解析獲得此域名的實際IP地址,再由緩存服務器向此實際IP地址提交訪問請求;

  5)、緩存服務器從實際IP地址得獲得內容之後,一方面在本地進行保存,以備之後使用,二方面把獲取的數據返回給客戶端,完成數據服務過程;

  6)、客戶端獲得由緩存服務器返回的數據之後顯示出來並完成整個瀏覽的數據請求過程。

  經過以上的分析咱們能夠獲得,爲了實現既要對普通用戶透明(即加入緩存之後用戶客戶端無需進行任何設置,直接使用被加速網站原有的域名便可訪問),又要在爲指定的網站提供加速服務的同時下降對ICP的影響,只要修改整個訪問過程當中的域名解析部分,以實現透明的加速服務,下面是CDN網絡實現的具體操做過程。

  1)、做爲ICP,只須要把域名解釋權交給CDN運營商,其餘方面不須要進行任何的修改;操做時,ICP修改本身域名的解析記錄,通常用cname方式指向CDN網絡Cache服務器的地址。

  2)、做爲CDN運營商,首先須要爲ICP的域名提供公開的解析,爲了實現sortlist,通常是把ICP的域名解釋結果指向一個CNAME記錄;

  3)、當須要進行sorlist時,CDN運營商能夠利用DNS對CNAME指向的域名解析過程進行特殊處理,使DNS服務器在接收到客戶端請求時能夠根據客戶端的IP地址,返回相同域名的不一樣IP地址;

  4)、因爲從cname得到的IP地址,而且帶有hostname信息,請求到達Cache以後,Cache必須知道源服務器的IP地址,因此在CDN運營商內部維護一個內部DNS服務器,用於解釋用戶所訪問的域名的真實IP地址;

  5)、在維護內部DNS服務器時,還須要維護一臺受權服務器,控制哪些域名能夠進行緩存,而哪些又不進行緩存,以避免發生開放代理的狀況。

在國內訪問量較高的大型網站如新浪、網易等,均使用CDN網絡加速技術,雖然網站的訪問巨大,但不管在什麼地方訪問都會感受速度很快。而通常的網站若是服務器在網通,電信用戶訪問很慢,若是服務器在電信,網通用戶訪問又很慢。
  它採起了分佈式網絡緩存結構(即國際上流行的web cache技術),經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到最接近用戶的cache服務器內,經過DNS負載均衡的技術,判斷用戶來源就近訪問cache服務器取得所需的內容,解決Internet網絡擁塞情況,提升用戶訪問網站的響應速度,如同提供了多個分佈在各地的加速器,以達到快速、可冗餘的爲多個網站加速的目的。
  CDN服務最初用於確保快速可靠地分發靜態內容,這些內容能夠緩存,最適合在網速龐大的網絡中存儲和分發,該網絡在幾十多個國家的十幾個網絡中的覆蓋CDN網絡服務器。
  因爲動態內容必須經過互聯網來傳輸,所以要提供快速的網絡體驗,以知足當今用戶的要求,只能經過對互聯網流量的獨特視角來達到。必須使用先進技術來了解經過互聯網的最佳路由,充分利用這些最佳路由,加速經過互聯網協議的數據通信,以改善用戶的網絡體驗。

一、本地Cache加速 提升了企業站點(尤爲含有大量圖片和靜態頁面站點)的訪問速度,並大大提升以上性質站點的穩定性

  二、鏡像服務 消除了不一樣運營商之間互聯的瓶頸形成的影響,實現了跨運營商的網絡加速,保證不一樣網絡中的用戶都能獲得良好的訪問質量。

  三、遠程加速遠程訪問用戶根據DNS負載均衡技術智能自動選擇Cache服務器,選擇最快的Cache服務器,加快遠程訪問的速度

  四、帶寬優化 自動生成服務器的遠程Mirror(鏡像)cache服務器,遠程用戶訪問時從cache服務器上讀取數據,減小遠程訪問的帶寬、分擔網絡流量、減輕原站點WEB服務器負載等功能。

  五、集羣抗攻擊 普遍分佈的CDN節點加上節點之間的智能冗餘機制,能夠有效地預防黑客入侵以及下降各類D.D.o.S攻擊對網站的影響,同時保證較好的服務質量 。

關鍵技術

(1)內容發佈:它藉助於創建索引、緩存、流分裂、組播(Multicast)等技術,將內容發佈或投遞到距離用戶最近的遠程服務點(POP)處;

  (2)內容路由:它是總體性的網絡負載均衡技術,經過內容路由器中的重定向(DNS)機制,在多個遠程POP上均衡用戶的請求,使得用戶請求獲得最快內容源的響應;

  (3)內容交換:它根據內容的可用性、服務器的可用性以及用戶的背景,在POP的緩存服務器上,利用應用層交換、流分裂、重定向(ICP、WCCP)等技術,智能地平衡負載流量;

  (4)性能管理:它經過內部和外部監控系統,獲取網絡部件的情況信息,測量內容發佈的端到端性能(如包丟失、延時、平均帶寬、啓動時間、幀速率等),保證網絡處於最佳的運行狀態。

 CDN能幾乎涵蓋國內全部線路。而在可靠性上, CDN 在結構上實現了多點的冗餘,即便某一個節點因爲意外發生故障,對網站的訪問可以被自動導向其餘的健康節點進行響應。CDN能輕鬆實現網站的全國鋪設,沒必要考慮服務器的投入與託管、沒必要考慮新增帶寬的成本、沒必要考慮多臺服務器的鏡像同步、沒必要考慮更多的管理維護技術人員。

      加速樂免費CDN是由加速樂推出的免費CDN平臺,經過加速樂免費CDN能夠有效提升網站訪問速度200%以上,提升網站訪問量19%以上,保護網站安全。加速樂已經在全國各地區佈設了數臺加速節點,用戶網站在使用加速後,在有訪客訪問時,加速樂智能DNS將優先選擇最快最優的節點分配給用戶,直接從加速樂節點海量數據庫緩存將數據返回給用戶,經過使用加速樂,83%以上的網頁能夠在1秒之內打開,99%以上網站能夠在8秒之內打開。

 

 

主服務器羣,而後在利用Squid逆向緩存web80端口來加速本身的網站.各大門戶網站象163,sina,chinaitlab之類基本都是使用的這種技術,好處是大大的有。好比加速了網絡和能夠防黑客(由於他們見到的都是CDN的主機)

這是利用Squid逆向集羣模式作的一種應用

 

 

網絡環境:

 

主服務器羣:源Web服務器羣 位於公網ip:220.XXX.XXX.X port:80(後臺纔是WEB的服務器)

 

注: 要保證TCP80,UDP3130在防火牆上是開的(供icp_port通信使用,多臺Squid集羣纔會用到)

 

全國各地分服務器:A服務器公網IP111.xxx.xxx.x

 

B服務器公網ip112.xxx.xxx.x

 

注: 要保證TCP80,UDP3130在防火牆上是開的(供icp_port通信使用,多臺Squid集羣纔會用到)

 

........................

須要解決的問題:

 

全國的全部用戶,不管是電信,仍是網通,都能速度很好的打開網站

 

實施

 

一、分別在主服務器羣和全國各地分服務器的三臺服務器安裝Squid,不會安裝的請直接關閉本網頁。

 

二、分別配置Squid,這裏只重點敘述Squid集羣配置要點。

 

主服務器羣Squid的配置:

 

http_port 220.XXX.XXX.X:80 vhost vport #讓Squid監聽本機ip的80端口

 

icp_port 3130 #多臺squid通訊使用

 

cache_peer "內網web服務器的地址" parent 80 0 no-query originserver no-digest name=cache0 #設置源Web服務器羣的ip和端口

 

cache_peer 220.XXX.XXX.X sibling 80 3130 name=cache1 #讓遠程的squid鏈接本地Squid工做在sibling模式並指定其端口

 

cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache2 #A服務器

 

cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache3 #B服務器

 

cache_peer_domain cache0 www.php-oa.com #配置本機squid容許接受訪問的域名

 

acl Safe_ports port 80

 

acl Safe_ports port 3130 #容許以上端口的代理

 

全國各地分服務器Squid的配置:

 

A服務器:

 

http_port 111.xxx.xxx.x:80 vhost vport

 

icp_port 3130

 

cache_peer 220.xxx.xxx.x parent 81 0 no-query originserver no-digest name=cache0 #設置主服務器羣Web服務器爲源服務器 

 

cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache1

 

cache_peer 220.xxx.xxx.x sibling 80 3130 name=cache2

 

cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache3

 

cache_peer_domain cache0 www.php-oa.com

 

acl Safe_ports port 80

 

acl Safe_ports port 3130

 

B服務器:

 

http_port 112.xxx.xxx.x:80 vhost vport

 

icp_port 3130

 

cache_peer 220.xxx.xxx.x parent 80 0 no-query originserver no-digest name=cache0

 

cache_peer 112.xxx.xxx.x sibling 80 3130 name=cache1

 

cache_peer 220.xxx.xxx.x sibling 80 3130 name=cache2

 

cache_peer 111.xxx.xxx.x sibling 80 3130 name=cache3

 

cache_peer_domain cache0 www.php-oa.com

 

acl Safe_ports port 80

 

acl Safe_ports port 3130

雖然配置好了可是如何讓電信和網通的用戶能有選擇的訪問兩個不一樣鏡像呢?這個請各位本身查相關的資料,要不到https://www.dnspod.com申請雙線,電信網通的轉發服務

 

注:下面看看cache_peer的參數

 

經過squid.conf配置文件中的cache_peer選項來配置代理服務器陣

列,經過其餘的選項來控制選擇代理夥伴的方法。Cache_peer的使用格式以下:

cache_peer hostname type http_port icp_port

共有5個選項能夠配置:

1. hostname:指被請求的同級子代理服務器或父代理服務器。能夠用主機名或ip地址表示;

2. type:指明hostname的類型,是同級子代理服務器仍是父代理服務器,也即parent(父) 仍是 sibling(子);

3. http_port:hostname的監聽端口;

4. icp_port:hostname上的ICP監聽端口,對於不支持ICP協議的可指定7;

5. options:能夠包含一個或多個關鍵字。

Options可能的關鍵字有:

1. proxy-only:指明從peer獲得的數據在本地不進行緩存,缺省地,squid是要緩存這部分數據的;

2. weight=n:用於你有多個peer的狀況,這時若是多於一個以上的peer擁有你請求的數據時,squid經過計算每一個peer的ICP響應時間來 決定其weight的值,而後squid向其中擁有最大weight的peer發出ICP請求。也即weight值越大,其優先級越高。固然你也能夠手工 指定其weight值;

3. no-query:不向該peer發送ICP請求。

相關文章
相關標籤/搜索