在上一篇介紹了cdn的一些原理和概念,以及提供cdn基礎網絡服務的途徑。cdn看起來對於靜態內容的,好比html,js,image是很是合適的,經過cdn的部署,用戶只須要一跳就能夠訪問到網站的內容。那對於動態內容怎麼辦呢?我回答一下:
動態內容按照存在形態能夠分爲三類。
第一類:內容長時間不需變化,這類內容通常是經過網頁靜化技術,實現動態內容轉換成靜態內容,從而達到cdn部署,典型的就是內容類網站,好比新浪、搜狐、網易等等的內容發佈系統cms,內容的增刪改等管理工做被準實時同步到各個節點。
第二類:內容可能會短期內發生變更,可是最終會穩定。好比論壇、博客等應用,這類服務提供的內容按照必定的時間間隔,實現批量靜化,固然也有實時靜化,像Mop的大雜燴、網易社區就是使用了這樣的策略。
第三類:內容會實時變化,很是個性化。好比郵箱應用,這類服務提供的內容沒法實現靜化,只能經過實行分區域部署和負載均衡等手段進行優化。
對於提供cdn服務的廠商來說,靜態內容的cdn天然沒有問題,對於第三類服務,只能從通訊鏈路層進行相應的優化。
對於不少網站的僞靜化,有的出於Seo的考慮,有的出於安全性的考慮,手段基本上是rewrite Url。它只不過是一種外在的表現形式,與Html靜化是兩回事,它依然是一種動態內容。
1. 負載均衡的分類
負載均衡技術在網站運營過程當中應用很是廣泛,技術也很成熟。負載均衡技術按照軟硬件形式分爲軟均衡和硬均衡。軟均衡就是基於軟件技術的均衡,硬均衡是基於硬件技術的均衡;
按照網絡協議劃分又分爲四層均衡和七層均衡。四層均衡就是基於OSI網絡層的數據均衡,七層均衡是基於OSI應用層的數據均衡。
各類均衡方式在大型網站中均有采用,並且大多數狀況下,是多種均衡方式的組合。
2. DNS輪詢均衡
這種方式,算是比較獨立的一種方式,不在上述劃分之列,但使用比較普遍,通常用在網站最前端。你能夠作個試驗,在dos命令行中運行nslook命令。好比:nslookup www。163。com,你會看到命令給出了一堆解析後的IP地址。這些地址就是www。163。com這個域名綁定的多條A記錄。咱們從瀏覽器發起的訪問請求
[url]http://www.163.com/[/url],那麼你輸入的域名首先須要通過DNS服務器進行解析,Dns服務器的解析的過程就是按照A記錄的順序,依次分配IP地址。Dns輪詢方式實現均衡就是利用這個原理,在一個域名下面綁定N個IP地址,訪問請求被均衡到不一樣的設備。Dns輪詢方式提供的IP地址,在大型網站中每每是一個集羣的地址,多是均衡交換機也多是均衡服務器。對於小網站的話,掛接多臺服務器也沒有問題。
DNS輪詢均衡的優勢:
一、零成本:只是在Dns服務器上綁定幾個A記錄,域名註冊商通常都提供;
二、部署簡單:就是在網絡拓撲進行設備擴增,而後在Dns服務器上添加記錄。
DNS輪詢均衡的缺點:
一、流量分配不均:Dns解析過程其實環節不少,並且是一種層層緩存的機制,你的dns服務器雖然進行更新,可是客戶機、以及網絡上其它的dns服務器不會實時更新,因此流量很難保證100%的平均。目前,dns服務器都提供了多種手段能夠調整dns輪詢分配的策略,可是確實沒法保證很完美的均衡。
二、健康檢查:Dns服務器中A記錄地址中的某一臺服務器宕機,DNS服務器是沒法知道的,仍舊會將訪問分配到此服務器。因此須要人員或者工具進行實時檢測,在某臺機器宕機以後,把備份機推上生產線,若是想要從A記錄地址摘除某個地址,這個通知過程須要幾個小時甚至更久才能擴散到全部的客戶機。
Dns輪詢方式推到服務的最前端仍是頗有效的,它經過最原始的方式,把訪問用戶映射到不一樣的服務集羣上。對於大型網站來說,對外服務的IP地址是不可能常常變更的,並且後端的集羣一旦宕掉,能夠迅速推上冗餘集羣。再加上,通常都是通過CDN部署,服務被拆分到各個局部,因此在運營過程當中不會產生太大的影響。
3. OSI七層模型 咱們接下來說講七層均衡。要理解四七層均衡的原理,就先要回憶一下大學課本里學的網絡七層模型(OSI)。 OSI是一個開放性的通行系統互連參考模型,他是一個定義的很是好的協議規範。OSI模型有7層結構,每層均可以有幾個子層。 OSI七層模型是一個很好的理論模型,可是在實際應用中都作了裁剪。尤爲是TCP/IP的盛行,把7層結構壓成了4層, 因此不少人都批評OSI七層模型過於複雜,可是做爲一個完整的全面的網絡模型,仍是被你們很是承認的。OSI的7層從上到下分別是應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。 7層的功能描述: (1)應用層:與其餘計算機進行通信的一個應用,它是對應應用程序的通訊服務的。例如,一個沒有通訊功能的字處理程序就不能執行通訊的代碼,從事字處理工做的程序員也不關心OSI的第7層。可是,若是添加了一個傳輸文件的選項,那麼字處理器的程序員就須要實現OSI的第7層。示例:telnet,HTTP,FTP,WWW,NFS,SMTP等。 (2)表示層:這一層的主要功能是定義數據格式及加密。例如,FTP容許你選擇以二進制或ASII格式傳輸。若是選擇二進制,那麼發送方和接收方不改變文件的內容。若是選擇ASII格式,發送方將把文本從發送方的字符集轉換成標準的ASII後發送數據。在接收方將標準的ASII轉換成接收方計算機的字符集。示例:加密,ASII等。 (3)會話層:他定義瞭如何開始、控制和結束一個會話,包括對多個雙向小時的控制和管理,以便在只完成連續消息的一部分時能夠通知應用,從而使表示層看到的數據是連續的,在某些狀況下,若是表示層收到了全部的數據,則用數據表明表示層。示例:RPC,SQL等。 (4)傳輸層:這層的功能包括是否選擇差錯恢復協議仍是無差錯恢復協議,及在同一主機上對不一樣應用的數據流的輸入進行復用,還包括對收到的順序不對的數據包的從新排序功能。示例:TCP,UDP,SPX。 (5)網絡層:這層對端到端的包傳輸進行定義,他定義了可以標識全部結點的邏輯地址,還定義了路由實現的方式和學習的方式。爲了適應最大傳輸單元長度小於包長度的傳輸介質,網絡層還定義瞭如何將一個包分解成更小的包的分段方法。示例:IP,IPX等。 (6)數據鏈路層:他定義了在單個鏈路上如何傳輸數據。這些協議與被討論的歌種介質有關。示例:ATM,FDDI等。 (7)物理層:OSI的物理層規範是有關傳輸介質的特性標準,這些規範一般也參考了其餘組織制定的標準。鏈接頭、針、針的使用、電流、電流、編碼及光調製等都屬於各類物理層規範中的內容。物理層經常使用多個規範完成對全部細節的定義。示例:Rj45,802.3等。