深入分析Java Web技術内幕讀書筆記
chapter1. 深入Web請求過程
B/S兩方面好處:
用戶端使用統一的浏覽器(Browser)。浏覽器統一性,屏蔽了不同伺服器提供商提供服務的差異性。并且,浏覽器互動特性使浏覽器使用友善,且使用者行為的可繼承性非常強。
服務端(Server)基于統一的HTTP協定。簡化服務提供商開發模式,規範伺服器開發者上午開發模式。
1.1 B/S網絡架構概述
B/S架構前後端都得以簡化,都基于統一的應用層協定HTTP來互動資料,HTTP采用無狀态的短連接配接方式,一次請求就能完成資料互動,如今更多的資料傳輸采用了更安全的HTTPS協定。
浏覽器中輸入一個URL後的流程:DNS伺服器将域名映射到相應的IP位址,根據IP位址找到網際網路上相應的伺服器,用戶端向服務端發起請求,伺服器傳回給用戶端請求的資料資源。服務端可能還有一些其他的業務邏輯,如多台伺服器間的負載均衡,或者是傳回給用戶端資源的存儲方式等等。

上圖為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控制着使用者浏覽器渲染行為和伺服器的執行邏輯。
1.3.2浏覽器緩存機制
Ctrl+F5重新整理頁面一定能夠請求沒有浏覽器緩存的頁面,但可能在服務端傳回緩存的資料,是以為了保證擷取最新的資料,必須通過HTTP來控制。
使用Ctrl+F5發起請求時,會在HTTP請求頭中增加一些請求頭,以告訴服務端要擷取的最新的資料而不是緩存。Pragma和Cache-Control用于指定所有緩存機制在整個請求/響應鍊中必須服從的指令。
- Pragma和Cache-Control用于指定所有緩存機制在整個請求/響應鍊中必須服從的指令。
深入分析Java Web技術内幕第一章 - Expires:Sar,25 Feb 2012 12:22:17 GMT 浏覽器請求前檢查這個字段,是否過期,過期重新向伺服器發起請求。
- Last-Modified/Etag。Last-Modified表示一個伺服器上的資源的最後修改時間。浏覽器請求頭增加一個If-Modified—Since:Sar,25 Feb 2012 12:22:17 GMT,詢問是否最新,是最新的傳回304,也不會傳新資料。Etag類似,讓伺服器給每個頁面配置設定唯一的編号,通過編号區分是否最新,比Last-Modified靈活,但多台後端伺服器不好處理。
1.4 DNS域名解析
- 浏覽器檢查緩存是否有域名對應的IP。
- 浏覽器查找作業系統是否有對應的DNS解析成果。
- 作業系統把域名發給LDNS,本地區的域名伺服器。
- LDNS沒有,直接到Root Server域名伺服器請求解析。LDNS承擔了主要的域名解析工作。
- 根域名伺服器傳回給本地域名伺服器一個所查詢域的主域名伺服器gTLD Server位址。gTLD國際頂級域名伺服器,隻有13台左右。
- 本地域名伺服器(Local DNS Server)向gTLD Server發送請求。
- 接受請求的gTLD Server查找傳回此對應域名的Name Server域名伺服器位址。你注冊的域名伺服器,某台服務商申請域名,域名解析交給域名伺服器。
- Name Server域名伺服器位址查詢域名和IP映射關系表,連同TTL值傳回給DNS Server域名伺服器。
- 傳回該域名對應的IP和TTL值,Local DNS Server緩存這個域名和IP對應關系,緩存時間TTL值控制。
- 解析結果給使用者,使用者根據TTL值緩存到本地系統中,域名解析結束。
1.4.4 幾種域名解析方式
A記錄、MX記錄、CNAME記錄、NS記錄和TXT記錄。
- A記錄,Address,用來指定域名對應的IP位址。A記錄可以将多個域名解析到一個IP位址,不能将一個域名解析到多個IP位址。
- MX記錄,Mail Exchange,将某個域名下郵件伺服器指向自己的Mail Server。DNS會将[email protected]請求發送在mail伺服器位址,正常WEB請求仍然解析至A記錄的IP位址。
-
CNAME記錄,Canonical Name(别名解析)。為一個域名設定一個或者多個别名。
NS記錄,為某個域名指定DNS解析伺服器,這個域名有指定的IP位址的DNS伺服器去解析。
- TXT記錄,為某個主機名或域名設定說明。
1.5 CDN工作機制
内容分布網絡(Content Delivery Network)。CDN=鏡像mirror+緩存cache+整體負載均衡GSLB。
CDN一緩存網站中的靜态資料為主。加速網頁資料内容的下載下傳速度。
目标
- 可擴充(Scalability)。性能可擴充。成本可擴充。
- 安全性(Security)。
- 可靠性、響應和執行(Reliability、Responsiveness和Performance)。 通路靜态檔案,先向Local DNS伺服器發起請求,經過疊代到達域名注冊伺服器解析,公司DNS把請求重新CNAME解析到另外的一個域名,這個域名指向CDN的DNS負載均衡伺服器,由這個GTM配置設定使用者距離最近的CDN節點。如果這個CDN節點請求不存在,會再回原站擷取檔案,傳回給使用者。
深入分析Java Web技術内幕第一章
1.5.2 負載均衡
Load Balance對工作任務進行平衡、分攤到多個操作單元上執行。
鍊路負載均衡、叢集負載均衡、作業系統負載均衡。
- 鍊路負載均衡,DNS解析成不同的IP。
- 叢集負載均衡。
-
硬體負載均衡
-
軟體負載均衡
- 作業系統負載均衡:作業系統級别的軟中斷和硬體中斷。
1.5.3 CDN動态加速
在CDN的DNS解析中通過動态的鍊路探測來尋找回溯最好的一條路徑,通過DNS的排程将所有請求排程到標明的路徑上回溯。