首页 > 编程语言 > 详细

《深入分析JavaWeb技术内幕》学习笔记

时间:2018-07-05 16:50:31      阅读:371      评论:0      收藏:0      [点我收藏+]

第一章 深入Web请求过程

1.1 B/S网站架构概述

  HTTP协议采用无状态的短连接的通信方式。通常一次请求就完成一次数据交互,通常也对应一个业务逻辑。 

  当在浏览器里输入一个URL,首先会请求DNS把域名解析成为IP地址,根据IP地址找到对应的服务器,向服务器发送请求,服务器返回数据资源给访问的用户。

  服务器端的其他操作:负载均衡平均分配所有用户的请求。请求数据可能存储在分布式缓存、静态文件、数据库里。静态资源会发起额外的HTTP请求,这些请求可能在CDN上,CDN服务器处理这个请求。

互联网应用原则:

  • 互联网上所有资源用一个URL(统一资源定位符)表示。
  • 必须基于HTTP协议与服务端交互。
  • 数据展示必须在浏览器中进行。

 

1.2 如何发起一个请求

  浏览器在建立Socket连接之前,必须根据地址栏里的URL的域名DNS解析出IP,根据IP地址和默认80端口与远程服务器建立Socket连接,浏览器根据URL组装一个GET类型的HTTP请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.read返回数据,最后断开连接。

  发起一个HTTP请求的过程就是建立一个Socket通信的过程。

 

1.3 HTTP协议解析

  B/S网络架构中核心是HTTP协议。 HTTP协议中最重要的是HTTP Header。

  HTTP Header控制着用户浏览器渲染行为和服务器的执行逻辑。 

 

 

浏览器缓存机制:

  Ctrl+F5刷新页面一定能够请求没有缓存的页面。 Ctrl+F5刷新页面,浏览器直接向目标URL发送请求,不使用浏览器缓存。

  Ctrl+F5刷新页面,HTTP请求头增加一些请求头,Pragma:no-cache,Cache-Control:no-cache

 

1.4 DNS域名解析

  1. 浏览器检查缓存是否有域名对应的IP。
  2. 浏览器查找操作系统是否有对应的DNS解析成果(hosts文件)。
  3. (如果前2步没有得到IP)操作系统把域名发给LDNS,本地区的域名服务器。(大约80%的域名解析到这里就完成了)
  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.5 CDN工作机制

  内容分发网络(Content Delivery Network)。CDN=镜像+缓存+整体负载均衡。

  CDN以缓存网站中的静态数据为主。

  用户从主站服务器请求到动态内容后,再从CDN上下载这些静态数据,从而加速网页数据内容的下载速度。

 

步骤:

  访问静态文件,先向Local DNS服务器发起请求,经过迭代到达域名注册服务器解析,

  公司DNS把请求重新CNAME解析到另外的一个域名,这个域名指向CDN的DNS负载均衡服务器,由这个GTM分配用户距离最近的CDN节点。

  有了DNS的解析结果,用户就可以去这个CDN节点访问这个静态文件了。

  如果在这个CDN节点中,所请求的文件不存在,会再回源站获取文件,返回给用户。

 

负载均衡:

  负载均衡对工作任务进行平衡、分摊到多个操作单元上执行。

  通常有三种负载均衡架构:链路负载均衡、集群负载均衡、操作系统负载均衡。

链路负载均衡:由DNS解析成不同的IP。

    集群负载均衡:分为硬件负载均衡和软件负载均衡。

      硬件负载均衡:价格贵。

      软件负载均衡:使用最普遍的一种负载方式。缺点是一次访问要经过多次代理服务器,会增加网络延时。

    操作系统负载均衡:利用操作系统级别的软中断和硬件中断来达到负载均衡。

 

CDN动态加速:

  原理:在CDN的DNS解析中通过动态的链路探测来寻找回源最好的一条路径,通过DNS的调度将所有请求调度到选定的路径上回源,从而加速用户访问的效率。

《深入分析JavaWeb技术内幕》学习笔记

原文:https://www.cnblogs.com/mengchunchen/p/9268984.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!