第一章 深刻Web請求過程
B/S兩方面好處:數據庫
- 客戶端使用統一的瀏覽器(Browser)。瀏覽器統一性,屏蔽了不一樣服務器提供商提供服務的差別性。而且,瀏覽器交互特性使瀏覽器使用方便,且用戶行爲的可繼承性很是強。
- 服務端(Server)基於統一的HTTP協議。簡化服務提供商開發模式,規範服務器開發者上午開發模式。
1.1 B/S網站架構概述
HTTP協議採用無狀態的短鏈接的通訊方式。一般一次請求就完成一次數據交互,一般也對應一個業務邏輯。 後端
URL請求DNS把域名解析成爲IP地址,根據IP地址找到對應的服務器,向服務器發送請求,服務器返回數據資源給訪問的用戶。負載均衡給服務器分配請求,請求數據存儲在分佈式緩存、靜態文件、數據庫裏。靜態資源會發起額外的HTTP請求,CDN服務器處理這個請求。瀏覽器
互聯網應用原則:緩存
- 互聯網上全部資源用一個URL(統一資源定位符)表示。
- 必須基於HTTP協議與服務端交互。
- 數據展現必須在瀏覽器中進行。
1.2 如何發起一個請求
瀏覽器創建Socket鏈接以前,必須根據地址欄裏的URL的域名DNS解析出IP,根據IP地址和默認80端口與遠程服務器創建Socket鏈接,瀏覽器根據URL組裝一個GET類型的HTTP請求頭,經過outputStream.write發送到目標服務器,服務器等待inputStream.read返回數據,最後斷開鏈接。安全
1.3 HTTP協議解析
B/S網絡架構中核心是HTTP協議。 HTTP協議中最重要的是HTTP Header。HTTP Header控制着用戶瀏覽器渲染行爲和服務器的執行邏輯。 服務器
1.3.2瀏覽器緩存機制
Ctrl+F5刷新頁面必定可以請求沒有緩存的頁面。 Ctrl+F5刷新頁面,瀏覽器直接向目標URL發送請求,不使用瀏覽器緩存。 Ctrl+F5刷新頁面,HTTP請求頭增長一些請求頭,Pragma:no-cache
,Cache-Control:no-cache
。網絡
-
Pragma
和Cache-Control
用於指定全部緩存機制在整個請求/響應鏈中必須服從的指令。 架構 -
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會將xxx@mail.com請求發送在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節點請求不存在,會再回原站獲取文件,返回給用戶。
1.5.2 負載均衡
Load Balance對工做任務進行平衡、分攤到多個操做單元上執行。 鏈路負載均衡、集羣負載均衡、操做系統負載均衡。
- 鏈路負載均衡,DNS解析成不一樣的IP。
- 集羣負載均衡。
- 硬件負載均衡
- 軟件負載均衡
- 操做系統負載均衡:操做系統級別的軟中斷和硬件中斷。
1.5.3 CDN動態加速
在CDN的DNS解析中經過動態的鏈路探測來尋找回溯最好的一條路徑,經過DNS的調度將全部請求調度到選定的路徑上回溯。