HTTP內容分發——《HTTP權威指南》系列

WilsonLiu's blog 首發地址html

內容分發

Web主機託管

對內容資源的存儲協調以及管理的職責統稱爲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種技術。編程

  1. 經過URL路徑進行虛擬主機託管 —— 在URL中增添專門的路徑部分,以便服務器判斷是哪一個網站瀏覽器

  2. 經過端口號進行主機託管 —— 爲每一個站點分配不一樣的端口號,這樣請求就由web服務器的單獨實例來處理緩存

  3. 經過IP地址進行主機託管 —— 爲不一樣的虛擬站點分配專門的IP地址服務器

  4. 經過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

相關文章
相關標籤/搜索