天天看點

深入分析Java Web技術内幕第一章

深入分析Java Web技術内幕讀書筆記

chapter1. 深入Web請求過程

B/S兩方面好處:

用戶端使用統一的浏覽器(Browser)。浏覽器統一性,屏蔽了不同伺服器提供商提供服務的差異性。并且,浏覽器互動特性使浏覽器使用友善,且使用者行為的可繼承性非常強。

服務端(Server)基于統一的HTTP協定。簡化服務提供商開發模式,規範伺服器開發者上午開發模式。

1.1 B/S網絡架構概述

B/S架構前後端都得以簡化,都基于統一的應用層協定HTTP來互動資料,HTTP采用無狀态的短連接配接方式,一次請求就能完成資料互動,如今更多的資料傳輸采用了更安全的HTTPS協定。

浏覽器中輸入一個URL後的流程:DNS伺服器将域名映射到相應的IP位址,根據IP位址找到網際網路上相應的伺服器,用戶端向服務端發起請求,伺服器傳回給用戶端請求的資料資源。服務端可能還有一些其他的業務邏輯,如多台伺服器間的負載均衡,或者是傳回給用戶端資源的存儲方式等等。

深入分析Java Web技術内幕第一章

上圖為CDN架構圖。

網絡架構基本原則:

(1)網際網路上所有資源用一個URL(統一資源定位符)表示。

(2)必須基于HTTP協定與服務端互動。(HTTPS現在更為廣泛一些)

(3)資料展示必須在浏覽器中進行。(必須浏覽器?)

1.2 如何發起一個請求

建立HTTP連接配接的過程基本上就是建立一個socket連接配接的過程,不過是資料報中的資料格式要符合HTTP協定要求。建立socket連接配接前,需由DNS伺服器解析出相應的IP位址,再根據IP位址和預設的端口号(80)與伺服器建立socket連接配接,然後浏覽器組裝一個HTTP請求頭,通過outputStream.write發送到目标伺服器,伺服器等待inputStream.read傳回資料,最後斷開連接配接。

1.3 HTTP協定解析

B/S網絡架構中核心是HTTP協定。

HTTP協定中最重要的是HTTP Header。HTTP Header控制着使用者浏覽器渲染行為和伺服器的執行邏輯。

深入分析Java Web技術内幕第一章
深入分析Java Web技術内幕第一章

1.3.2浏覽器緩存機制

Ctrl+F5重新整理頁面一定能夠請求沒有浏覽器緩存的頁面,但可能在服務端傳回緩存的資料,是以為了保證擷取最新的資料,必須通過HTTP來控制。

使用Ctrl+F5發起請求時,會在HTTP請求頭中增加一些請求頭,以告訴服務端要擷取的最新的資料而不是緩存。Pragma和Cache-Control用于指定所有緩存機制在整個請求/響應鍊中必須服從的指令。

  1. Pragma和Cache-Control用于指定所有緩存機制在整個請求/響應鍊中必須服從的指令。
    深入分析Java Web技術内幕第一章
  2. Expires:Sar,25 Feb 2012 12:22:17 GMT 浏覽器請求前檢查這個字段,是否過期,過期重新向伺服器發起請求。
  3. Last-Modified/Etag。Last-Modified表示一個伺服器上的資源的最後修改時間。浏覽器請求頭增加一個If-Modified—Since:Sar,25 Feb 2012 12:22:17 GMT,詢問是否最新,是最新的傳回304,也不會傳新資料。Etag類似,讓伺服器給每個頁面配置設定唯一的編号,通過編号區分是否最新,比Last-Modified靈活,但多台後端伺服器不好處理。

1.4 DNS域名解析

深入分析Java Web技術内幕第一章
  1. 浏覽器檢查緩存是否有域名對應的IP。
  2. 浏覽器查找作業系統是否有對應的DNS解析成果。
  3. 作業系統把域名發給LDNS,本地區的域名伺服器。
  4. LDNS沒有,直接到Root Server域名伺服器請求解析。LDNS承擔了主要的域名解析工作。
  5. 根域名伺服器傳回給本地域名伺服器一個所查詢域的主域名伺服器gTLD Server位址。gTLD國際頂級域名伺服器,隻有13台左右。
  6. 本地域名伺服器(Local DNS Server)向gTLD Server發送請求。
  7. 接受請求的gTLD Server查找傳回此對應域名的Name Server域名伺服器位址。你注冊的域名伺服器,某台服務商申請域名,域名解析交給域名伺服器。
  8. Name Server域名伺服器位址查詢域名和IP映射關系表,連同TTL值傳回給DNS Server域名伺服器。
  9. 傳回該域名對應的IP和TTL值,Local DNS Server緩存這個域名和IP對應關系,緩存時間TTL值控制。
  10. 解析結果給使用者,使用者根據TTL值緩存到本地系統中,域名解析結束。

1.4.4 幾種域名解析方式

A記錄、MX記錄、CNAME記錄、NS記錄和TXT記錄。

  1. A記錄,Address,用來指定域名對應的IP位址。A記錄可以将多個域名解析到一個IP位址,不能将一個域名解析到多個IP位址。
  2. MX記錄,Mail Exchange,将某個域名下郵件伺服器指向自己的Mail Server。DNS會将[email protected]請求發送在mail伺服器位址,正常WEB請求仍然解析至A記錄的IP位址。
  3. CNAME記錄,Canonical Name(别名解析)。為一個域名設定一個或者多個别名。

    NS記錄,為某個域名指定DNS解析伺服器,這個域名有指定的IP位址的DNS伺服器去解析。

  4. TXT記錄,為某個主機名或域名設定說明。

1.5 CDN工作機制

内容分布網絡(Content Delivery Network)。CDN=鏡像mirror+緩存cache+整體負載均衡GSLB。

CDN一緩存網站中的靜态資料為主。加速網頁資料内容的下載下傳速度。

目标

  • 可擴充(Scalability)。性能可擴充。成本可擴充。
  • 安全性(Security)。
  • 可靠性、響應和執行(Reliability、Responsiveness和Performance)。
    深入分析Java Web技術内幕第一章
    通路靜态檔案,先向Local DNS伺服器發起請求,經過疊代到達域名注冊伺服器解析,公司DNS把請求重新CNAME解析到另外的一個域名,這個域名指向CDN的DNS負載均衡伺服器,由這個GTM配置設定使用者距離最近的CDN節點。如果這個CDN節點請求不存在,會再回原站擷取檔案,傳回給使用者。

1.5.2 負載均衡

Load Balance對工作任務進行平衡、分攤到多個操作單元上執行。

鍊路負載均衡、叢集負載均衡、作業系統負載均衡。

  • 鍊路負載均衡,DNS解析成不同的IP。
  • 叢集負載均衡。
  • 硬體負載均衡
               
  • 軟體負載均衡
               
  • 作業系統負載均衡:作業系統級别的軟中斷和硬體中斷。

1.5.3 CDN動态加速

在CDN的DNS解析中通過動态的鍊路探測來尋找回溯最好的一條路徑,通過DNS的排程将所有請求排程到標明的路徑上回溯。

繼續閱讀