1. 程式人生 > >深入分析JavaWeb技術內幕》 第一章 深入Web請求過程

深入分析JavaWeb技術內幕》 第一章 深入Web請求過程

oot 沒有 目標 com slb 別名 AC 技術 提供服務

第一章 深入Web請求過程

B/S兩方面好處:

  1. 客戶端使用統一的瀏覽器(Browser)。瀏覽器統一性,屏蔽了不同服務器提供商提供服務的差異性。並且,瀏覽器交互特性使瀏覽器使用方便,且用戶行為的可繼承性非常強。
  2. 服務端(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

  1. PragmaCache-Control用於指定所有緩存機制在整個請求/響應鏈中必須服從的指令。
    技術分享圖片

  2. Expires:Sar,25 Feb 2012 12:22:17 GMT 瀏覽器請求前檢查這個字段,是否過期,過期重新向服務器發起請求。
  3. Last-Modified/EtagLast-Modified表示一個服務器上的資源的最後修改時間。瀏覽器請求頭增加一個If-Modified—Since:Sar,25 Feb 2012 12:22:17 GMT

    ,詢問是否最新,是最新的返回304,也不會傳新數據。Etag類似,讓服務器給每個頁面分配唯一的編號,通過編號區分是否最新,比Last-Modified靈活,但多臺後端服務器不好處理。

1.4 DNS域名解析

技術分享圖片

  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記錄。

  • 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節點請求不存在,會再回原站獲取文件,返回給用戶。

1.5.2 負載均衡

Load Balance對工作任務進行平衡、分攤到多個操作單元上執行。
鏈路負載均衡、集群負載均衡、操作系統負載均衡。

  • 鏈路負載均衡,DNS解析成不同的IP。
  • 集群負載均衡。
    • 硬件負載均衡
    • 軟件負載均衡
  • 操作系統負載均衡:操作系統級別的軟中斷和硬件中斷。

1.5.3 CDN動態加速

在CDN的DNS解析中通過動態的鏈路探測來尋找回溯最好的一條路徑,通過DNS的調度將所有請求調度到選定的路徑上回溯。

深入分析JavaWeb技術內幕》 第一章 深入Web請求過程