《深入分析JavaWeb技术内幕》 第一章 深入Web请求过程

第一章 深入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请求过程)