深入分析Java Web技术内幕_第一章 学习笔记

来源:互联网 发布:淘宝同城鲜花速递 编辑:程序博客网 时间:2024/05/17 22:49

第一章 深入web请求


1 web服务器的模式:

现在模式: B/S

好处:

(1)    客户端使用统一的浏览器(Browser)。由于浏览器具有统一性,它不需要特殊的配置和网络连接,有效地屏蔽了不同服务提供上的提供给用户的使用服务的差异性。另外,使用户使用起来非常简便。且用户行为的可继承性非常强。

(2)    服务端(Server)基于统一的HTTP协议、

基于HTTP协议的服务器:Apache、IIS、Nginx、Tomcat、JBoss


2 互联网架构图




3 HTTP请求的实质——就是建立一个Socket连接的过程

比Socket连接多了一个步骤:就是DNS解析

(1) DNS解析。将域名URL 转换成 IP地址。

(2) Socket连接建立: IP地址+端口号

(3) 发送请求数据.。outputStream.write 将请求发送到目标服务器。

(4) 获取服务器返回数据。通过inputStream.read从服务器接收数据。

(5)断开连接。


4 浏览器的缓存机制:

浏览器缓存是一个比较复杂但是又比较重要的机制,ctrl+F5 强制刷新页面,浏览器直接向目标URL发送请求,而不会使用浏览器缓存的数据。

缓存有两层含义:(1) 浏览器端的缓存 (2) 服务器端的缓存

Ctrl+F5强制刷新的时候,会在请求头中增加两个请求项:

Pragma:no-cache

Cache-Control:no-cache


5 DNS域名解析:

用户输入域名之后,按下回车键盘。

(1)    浏览器会检查缓存中有没有这个域名对应的解析过的IP地址。有则结束,无则下一步。

(2)    如果用户的浏览器缓存中没有,浏览器就会查找操作系统缓存中是否有这个域名对应的DNS解析结果。

在Windows中可以通过:C:\Windows\Systems32\drivers\etc\hosts文件来设置。

(3)    向我们在网络配置中的DNS服务器发送请求。(该DNS是本地区的域名服务器,LDNS)

LDNS一般会缓存域名解析结,大约80%的域名解析到这里就已经完成了,所以LDNS主要承担了域名的解析工作。

(4)    如果LDNS仍然没有命中,就直接连接到Root Server域名服务器请求解析。

(5)    根域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD Server)地址。

gTLD 是国际顶级域名服务器,如.com、.cn、.org

(6)    本地域名服务器(Local DNS Server)再向上一步返回的gTLD服务器发送请求。

(7)    接收请求的gTLD服务器查找并返回此域名对应的Name Server 域名服务器的地址。这个Name Server通常是你注册的域名服务器。

(8)    LDNS向Name Server发送请求,NameServer域名服务器会查询存储的域名和IP对应关系,将IP地址 & TTL值返回给DNS Server域名服务器。

(9)    Name Server服务器向LDNS返回该域对应的IP和TTL值,Local  DNS  Server 会缓存这个域名和IP的对应关系,缓存的时间有TTL值控制。

(10) 把解析的结果返回给用户,用户根据TTL值缓存在本地缓存中,域名解析过程结束。



跟踪域名解析:

windows和linux下使用:nslookup命令。

Linux下使用:dig命令。

Nslookup:可以查看解析的域名——IP地址。

Ping:只能查看此刻访问的某一台服务器的IP地址。


清楚域名的缓存:

DNS域名解析会缓存解析的结果:(1) 用户本地的机器。(2)Local DNS Server

这两个缓存都是由TTL值和本地缓存大小控制。

 

本地缓存的清除方式:

Window下:ipconfig /flushdns

Linux: /etc/init.d/nscd restart 来清楚缓存

在Java应用中JVM也会缓存DNS的解析结果,这个缓存是在InetAdress类中完成的。

缓存时间存在:

%java_home%\jre\lib\security\java.security文件:两个配置项:

Networkaddress.cache.tll: -1(永不失效)

Networkaddress.cache.negative.ttl: 10 (缓存10S)

修改方式:

(1)    直接修改文件。

(2)    在Java的启动参数中增加–Dsun.net.inetaddr.ttl=xxx来修改默认值,

(3)    通过InetAddress类来修改。


6 几种域名解析的方式:

几种域名解析的方式:

域名解析记录主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录。

A记录:A代表Adress,用来指定域名对应的IP地址,可以将多个域名指定到一个IP地址,但是不能将一个域名解析到多个IP地址。

MX记录:表示的是Mail Exchange.。就是可以将某个域名的邮件服务器指向自己的mail server。

CNAME: Canonical Name(别名解析),可以为一个域名设置一个或者多个别名。

 NS记录:为某个域名指定DNS解析服务器,也就是这个域名由指定的IP地址的DNS服务器去解析。


7 CDN

CDN工作机制:内容分布网络(ContentDelivery Newwork)。

CND都以缓存网站中的静态数据为主,如CSS、JS、图片和静态页面等数据。

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

CDN架构:

存在一个CDN域名解析器,会根据CTM负载均衡的结果,返回给离这个访问用户最近的CDN节点,然后用户去这个节点读取数据。



8 负载均衡

负载均衡有三种架构:

链路负载均衡、集群负载均衡、操作系统负载均衡。

链路负载均衡:CDN的负载均衡方式,就是将DNS解析成不同的IP,然后用户根据这个IP来访问不同的目标服务器。


集群负载均衡:硬件负载均衡 & 软件负载均衡。



LVS: Linux Virtual Server

LVS:使用四层负载均衡,也就是在网络层利用IP地址进行地址转发。

HAProxy进行七层负载均衡,也就是可以根据访问用户的HTTP请求头来进行负载均衡,如可以根据不同的URL来将请来转发到特性机器或者根据用户的Cookie信息来指定访问的机器。

 

操作系统负载均衡:就是利用操作系统级别的软中断或者硬件负载中断来达到负载均衡,如可以设置多队列网卡等来实现。



0 0
原创粉丝点击