简单cdn之二
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />作者:田逸(sery@163.com) 7.1.4 cdn的基本原理<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
?
Cdn的基本原理可概括為:內(nèi)容緩存、就近訪問以及以dns視圖方式根據(jù)用戶來源確定其訪問位置。?
◆???? 內(nèi)容緩存:緩存服務(wù)器從源站取得所需數(shù)據(jù),然后暫存在本地的硬盤或內(nèi)存。使用這種緩存機制的好處是:(1)內(nèi)容自動更新;(2)無多個服務(wù)器數(shù)據(jù)相互同步問題。 ◆???? 就近訪問:讓用戶的訪問請求轉(zhuǎn)向到離用戶最近或最易于訪問的緩存服務(wù)器。 ◆???? 以dns視圖方式根據(jù)用戶來源確定其訪問位置:即讓電信的用戶訪問電信的緩存服務(wù)器,網(wǎng)通用戶訪問網(wǎng)通的緩存服務(wù)器。?
7.1.5 什么是簡單cdn?
簡單cdn這個概念,是相對于復雜cdn來定義的。因此,我們先來了解一下什么是復雜的cdn。?
籠統(tǒng)一點的講,cdn服務(wù)提供商所運營的環(huán)境,就是復雜cdn。就緩存服務(wù)器而言,其結(jié)構(gòu)是分層次的,一般可劃分成核心節(jié)點和邊緣節(jié)點。并且同一層級的相鄰節(jié)點之間又可形成姐妹關(guān)系,亦即在同一個集群下的節(jié)點互為姐妹關(guān)系。為了保證最高的性能能和效率,不建議跨網(wǎng)或跨物理范圍的節(jié)點形成姐妹關(guān)系。為了更直觀的理解這個結(jié)構(gòu)和由此產(chǎn)生的好處,我在這里以一個最長訪問路徑的圖示來說明: <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 圖7-2 緩存服務(wù)器相互關(guān)系 1、? 用戶向某邊緣服務(wù)器(邊緣A)發(fā)起訪問請求,所需內(nèi)容沒有被緩存。 2、? 邊緣服務(wù)器(邊緣A)于是詢問其鄰居,是否緩存了用戶所需的請求對象,鄰居節(jié)點也沒有緩存所需的對象。 3、? 邊緣服務(wù)器(邊緣A)轉(zhuǎn)而向某個父節(jié)點(核心A)請求文件,如果該父節(jié)點仍然無所需的文件,則該父節(jié)點詢問其鄰居;如果鄰居也沒有所需的文件,則把請求轉(zhuǎn)給源站。 4、? 源站返回數(shù)據(jù)給核心節(jié)點(核心A),并緩存數(shù)據(jù)在該節(jié)點。 5、? 核心節(jié)點(核心A)返還數(shù)據(jù)給邊緣節(jié)點(邊緣A),并緩存數(shù)據(jù)在該節(jié)點。 6、? 邊緣節(jié)點返還數(shù)據(jù)給用戶,一次最長路徑的訪問完成。 這種分層次的機制,既能保證最高的可用性,又能最大限度的減少向上一級節(jié)點的網(wǎng)絡(luò)流量。?
除了緩存服務(wù)器結(jié)構(gòu)上的差異外,復雜cdn還具備以下一些特性: (1)?????? 緩存服務(wù)器布點范圍廣,服務(wù)器數(shù)量龐大。 (2)?????? 復雜的日志處理系統(tǒng)。因為計費依賴于訪問日志。 (3)?????? 詳細的視圖劃分。例如精確到每個省的ip地址段。 (4)?????? 預(yù)加載機制。?
當我們了解清楚復雜cdn以后,再來了解簡單cdn就容易多了。所謂簡單cdn,就是節(jié)點層次簡單、服務(wù)器數(shù)量有限、能實現(xiàn)有限規(guī)模站點加速和發(fā)布的平臺。通常情況下,我們不必為實現(xiàn)cdn帶來的好處而部署復雜的cdn系統(tǒng),這將花費巨大的人力物力。把復雜的cdn簡化,使之符合我們的業(yè)務(wù)需求,是本章“簡單cdn”撰寫的用意所在。?
?
7.2簡單cdn設(shè)計?
先申明一下,本文所設(shè)計的簡單cdn只是一個樣例,并非適用于所有的場景。讀者可根據(jù)我的思路,設(shè)計出更適合自己應(yīng)用環(huán)境的簡單cdn。?
7.2.1 簡單cdn設(shè)計的基本原則?
簡單cdn設(shè)計主要考慮以下幾點: (1)?????? 選點合理,能覆蓋大部分網(wǎng)絡(luò)用戶。最起碼得在電信和網(wǎng)通機房放置緩存服務(wù)器,如果經(jīng)費充裕,把教育網(wǎng)也考慮進來。 (2)?????? 系統(tǒng)本身具備很好的高可用特性。用戶的訪問主要集中在緩存服務(wù)器,緩存服務(wù)器之間使用集群技術(shù)就能得到比較高的系統(tǒng)可用性。 (3)?????? 核算自建簡單cdn的成本,使之有較好的性價比。如果自建一個cdn遠比購買cdn服務(wù)商所花費的資金還高(目前國內(nèi)商用cdn每兆帶寬為50元/月,基數(shù)是1G),基本上沒必要自己建立cdn了。 (4)?????? 系統(tǒng)應(yīng)該具備很好的伸縮能力,以適應(yīng)各種業(yè)務(wù)變化。如增加布點、增加設(shè)備、增加站點等等。?
7.2.2 需求描述?
欲對三個web服務(wù)進行加速,為了描述方便,使用域名來進行說明。這三個加速站點為圖片站點 images.sery.cn、下載站點dl.sery.cn、主站 www.sery.cn,3個站點全部是靜態(tài)內(nèi)容,其頁面文件主要是.html(htm)、.exe、css、jpeg、js等,非常適合被緩存。?
服務(wù)的主要目標用戶包括電信線路的用戶、網(wǎng)通線路的用戶、教育網(wǎng)的用戶,其他線路的用戶(如科技網(wǎng)、長城寬帶等)訪問請求被轉(zhuǎn)向到網(wǎng)通線路的緩存服務(wù)器。為了實現(xiàn)這個目標,我們可能需要放置4組服務(wù)器來做緩存,即電信一組,網(wǎng)通2組,教育網(wǎng)一組。?
7.2.3 簡單cdn設(shè)計?
需求明確之后,接下來的設(shè)計工作包括:布點選擇、工具選取、cdn結(jié)構(gòu)設(shè)計等幾部分。?
◆???? 布點選取 布點包括源站、全局智能dns、緩存服務(wù)器集群。 (1)?????? 源站及全局智能dns選擇互聯(lián)互通性較好的第三方bgp機房;因為使用cdn服務(wù)的站點數(shù)量有限,故在緩存服務(wù)器以主機名的方式尋址源站。 (2)?????? 緩存服務(wù)器共4組,選擇二線或三線城市的機房托管,能節(jié)省大量的資金—北京、上海等城市帶寬價格大概在300~400元/兆/月,而偏遠一點二三線城市(如安陽)1G帶寬的年總費用才8-10萬。?
◆???? 工具選取 工具包括操作系統(tǒng)、dns軟件、緩存服務(wù)器軟件、負載均衡軟件、源站軟件以及定制的腳本。 (1)?????? 所有的服務(wù)器均使用32位的centos 5.x。曾經(jīng)使用過64位的系統(tǒng),但在執(zhí)行緩存服務(wù)器的緩存清理操作時,有些小問題。 (2)?????? Dns使用bind-9.4.0。低于9的版本,可能不支持視圖view,沒有視圖功能,智能dns就無法實現(xiàn)。不知道其他的dns軟件有沒有支持視圖view的,愿知者告知。 (3)?????? 緩存服務(wù)器有兩種選擇,一種是squid,另一種是varnish。Squid多用在復雜cdn場景,它能實現(xiàn)緩存服務(wù)器間的層級關(guān)系(鄰居形成姊妹、邊緣節(jié)點與核心節(jié)點形成父子關(guān)系),功能強大而配置復雜;Varnish為后起之秀,配置簡單而性能卓越,維護起來比較簡單,因此本案選擇varnish作為緩存工具【注1】。 (4)?????? 負載均衡由ipvsadm和keepalived兩部分組成。ipvsadm是核心,負責包轉(zhuǎn)發(fā)和負載分攤;keepalived為框架,負責故障隔離和失敗切換failover。 (5)?????? 可做web服務(wù)的軟件比較多,因為站點為簡單的靜態(tài)文件,選擇nginx比較省事。 (6)?????? 定制腳本主要目的是自動刷新緩存服務(wù),把這個腳本放在摸個服務(wù)器上,只需執(zhí)行一次(也可使用crontab自動調(diào)用)就能實現(xiàn)所有緩存服務(wù)器的緩存清理。?
◆???? cdn結(jié)構(gòu)設(shè)計?
我們可根據(jù)cdn的角色來設(shè)計整個結(jié)構(gòu),這些角色包括:源站、智能dns及緩存服務(wù)器3大部分,根據(jù)布點選擇和其他因素綜合考慮,我們可繪出整個cdn的布局結(jié)構(gòu)圖。 圖7-3 cdn服務(wù)器布局 從圖中可以看出有2組緩存服務(wù)器放置在網(wǎng)通機房,這兩組服務(wù)器不在同一個物理位置,這樣做主要目的是:bind規(guī)劃視圖view時,能收集到的地址比較有限,不在收集列表的其他ip地址段,則統(tǒng)統(tǒng)轉(zhuǎn)發(fā)給網(wǎng)通B機房的服務(wù)器;另外網(wǎng)通B機房的帶寬比較便宜,機器數(shù)量也比較多,跟其他網(wǎng)段的互聯(lián)互通還可以。?
(1)?????? 源站 源站為內(nèi)容的原始發(fā)布,盡管采用cdn技術(shù)以后源站的負荷會變得很小,但為了有較高的可用性,可把它部署成負載均衡集群。?
(2)智能dns 智能dns是用來實現(xiàn)用戶訪問轉(zhuǎn)向功能,即通過建立訪問列表,判斷用戶的訪問來源,確定其訪問對象的位置。在本案中,我建立電信、網(wǎng)通、教育網(wǎng)三個ip地址列表,未在這三個列表的稱為其他;每個列表關(guān)聯(lián)一個bind的視圖view,那么一共就有4個視圖view。地址列表可以自己收集,也可以花錢購買,地址列表越大,dns定向準確性越高。在這里強調(diào)一下:ip地址列表為客戶dns服務(wù)器所在網(wǎng)段的列表,而不是用戶接入網(wǎng)絡(luò)的ip段。客戶端計算機所設(shè)定的dns,通常稱為用戶本地dns。同樣,為了使其有較高的可用性,dns采用主從同步的架構(gòu)。 ? 以下內(nèi)容省略. 簡單Cdn實現(xiàn) 簡單cdn功能測試 簡單Cdn監(jiān)控 簡單cdn維護 其他總結(jié)
- 上一篇: sniffer使用查网络故障
- 下一篇: js 运算符 || 妙用