內容分發
Web主機託管
對內容資源的存儲協調以及管理的職責統稱爲Web主機託管。
虛擬服務器請求卻反主機信息
HTTP/1.0中的一個設計缺陷會使虛擬主機託管者瘋狂。HTTP/1.0中沒有爲共享的Web服務器提供任何方法來識別要訪問的是所託管的哪個虛擬網站。
HTTP/1.0請求在報文中只發送URL的路徑部分,如果要訪問http://www.baidu.com/index.html
,瀏覽器會連接到服務器http://www.baidu.com
,但HTTP/1.0請求中卻只提到GET /index.html
,沒有提到主機名。如果服務器虛擬託管了許多個站點,就沒有足夠的信息能指出要訪問的是哪個虛擬主機網站。 並且HTTP反向代理和攔截代理也都需要明確的站點信息。
因此HTTP/1.1的確要求服務器能夠處理HTTP報文請求行上的完整URL,但將現存的應用程序都升級都這個規範還需要時間,在此期間,涌現出了以下4種技術。
- 通過URL路徑進行虛擬主機託管 —— 在URL中增添專門的路徑部分,以便服務器判斷是哪個網站
- 通過端口號進行主機託管 —— 爲每個站點分配不同的端口號,這樣請求就由web服務器的單獨實例來處理
- 通過IP地址進行主機託管 —— 爲不同的虛擬站點分配專門的IP地址
- 通過Host首部進行主機託管
鏡像的服務器集羣
服務器集羣是一排配置相同的Web服務器,互相可以替換。每個服務器上的內容可以通過鏡像複製,這樣當某個服務器出問題的時候,其他的可以頂上。
鏡像的服務器常常組成層次化的關係。某個服務器可能充當“內容權威”——它含有原始內容(可能就是內容作者上傳的那個服務器)。這個服務器稱爲主原始服務器(master origin server
)。從主原始服務器接收內容的鏡像服務器稱爲複製原始服務器(replica origin server
)。一種簡單的部署服務器集羣的方法是用網絡交換機把請求分發給服務器。託管在服務器上的每個網站的IP地址就設置爲交換機的IP地址。
鏡像Web服務器可以在不同的地點包含同樣內容的副本。可以有以下兩種方法把客戶端的請求導向特定的服務器。
1. HTTP重定向 —— 該內容的URL會解析到主服務器的IP地址,然後它會發生重定向到複製服務器
2. DNS重定向 —— 該內容的URL會解析到4個IP地址,DNS服務器可以選擇發送給客戶端的IP地址
內容分發網絡 CDN
簡單地說,內容分發網絡就是對特定內容進行分發的專門網絡。這個網絡中的節點可以是Web服務器,反向代理或緩存。
反向代理
反向代理緩存可以像鏡像服務器一樣接收服務器請求,它們代表原始服務器中的一個特定集合來接收服務器請求。(根據內容所在的IP地址的廣告方式,這是有可能的,原始服務器和反向代理緩存之間通常有協作關係,到特定的原始服務器的請求就由反向代理緩存來接收。)
CDN中的代理緩存
與反向代理不同,傳統的代理緩存能夠收到發往任何Web服務器的請求(在代理緩存與原始服務器之間不需要有任何工作關係或IP地址約定)。
重定向和負載均衡
由於HTTP應用程序總是要做下列3件事情,所以在現代網絡中重定向是普遍存在的:
- 可靠地執行HTTP事務
- 最小化時延
- 節約網絡帶寬
出於這些原因,web內容通常分佈在很多地方。這麼做是出於可靠性的考慮。這樣如果一個位置出現了問題,還有其他的可用;如果客戶端能夠訪問較勁的資源,就可用更快的收到所請求的內容,以降低響應時間;將目標服務器分散,還可以減少網絡擁塞。可用將重定向當做一組有助於找到”最佳”分佈式內容的技術。
而重定向和負載均衡總是共存的。
重定向方法
通用的重定向方法
- HTTP重定向
- DNS重定向
- 任播尋址
- IP MAC轉發
- IP地址轉發
代理與緩存重定向技術
- 顯示瀏覽器配置
- 代理自動配置(PAC)
- Web Proxy代理自動發現協議(WPAD)
- Web緩存協調協議(WCCP)
- 因特網緩存協議(ICP)
- 緩存分組路由協議(CARP)
- 超文本緩存協議(HTCP)
通用的重定向方法
HTTP重定向
與其他形式的重定向相比,HTTP重定向的優點之一就是重定向服務器知道客戶端IP地址,理論上來講,它可以做出更合理的選擇。
HTTP重定向可以在服務器間引導請求,但有以下幾個缺點。
- 需要原始服務器進行大量處理來判斷要重定向到哪臺服務器上去。有時,發佈重定向所需的處理量幾乎與提高頁面本身所需的處理量一樣。
- 增加了用戶時延,因爲訪問頁面時要進行兩次往返。
- 如果重定向服務器出故障,站點就會癱瘓。
DNS重定向
DNS允許將幾個IP地址關聯到一個域中,可以配置DNS解析程序,或對其進行編程,以返回可變的IP地址。解析程序返回IP地址時,所基於的原則可以很簡單(輪轉),也可以很複雜(比如查看幾臺服務器上的負載均衡,並返回負載最輕的服務器的IP地址)。
DNS緩存帶來的影響
DNS對服務器的每次查詢都會得到不同的服務器地址序列,所以DNS地址輪轉會將負載分攤。但是這種負載均衡也並不完美,因爲DNS查找結果可能會被客戶端記住並被反覆重用,以減少DNS查找的開銷,而且有些服務器也願意保持與一臺客戶端的聯繫。
其他基於DNS的重定向算法
- 負載均衡算法
- 鄰接路由算法
- 故障屏蔽算法
任播尋址
在任播尋址中,幾個地理上分散的Web服務器擁有完全相同的IP地址,而且會通過骨幹路由器的”最短路徑”路由功能將客戶端的請求發送給離它最近的服務器。要使這種方法工作,每個路由器都要想鄰近的骨幹路由器廣告,表明自己是一臺路由器。
IP MAC轉發
支持MAC轉發的第四次交換機通常會將請求轉發給幾個代理緩存,並在它們之間平衡負載,因爲MAC地址轉發是點對點的,所以服務器或代理只能位於離交換機一跳遠的地方。
IP地址轉發
在IP地址轉發中,交換機或其他第四層設備會檢測輸入分組中的TCP/IP地址,並通過修改目的IP地址(不是目的MAC地址),對分組進行相應的轉發。
代理的重定向方法
- 顯式配置瀏覽器設置
- 代理自動配置 PAC
- Web代理自動發現協議 WPAD