深入分析Java Web技术内幕-第一章




CDN架构图

发起请求

一句话,发起一个HTTP请求的过程就是建立一个Socket通信的过程.
既然本质上就是建立一个Socket连接,那么我们完全可以模拟浏览器发出HTTP请求.(比如PostMan)
-而HTTP协议的内容之前学过了,不再赘述(详见图灵的那本HTTP)

HTTP协议解析

常见HTTP请求头:

Accept-Charset: 用于指定客户端接受的字符集
Accept-Encoding: 用于指定可接受内容编码如Accept-Encoding: gzip.deflate
Accept-Language: 用于指定一种自然语言如 zh-cn
Host: 用于指定被请求资源的主机和端口号
User-Agent: 客户端将他的操作系统、浏览器和其他属性告诉服务器
Connection: 当前连接是否保持,如:Keep-Alive

常见的HTTP响应头

Server: 使用的服务器名称,如 Server: Apache/1.3.6(Unix)
Content-Type: 用于指定发送给接受者的实体正文的媒体类型 如: text/html;charset=GBK
Content-Encoding: 与Accept-Encoding对应,告诉服务端采用什么压缩编码
Content-Language: 描述了资源所用的自然语言,与Accept-Language对应
Content-Length: 指明了实体正文长度.用以字节方存储的十进制数字来表示.
Keep-Alive: 保持连接的时间,如-Keep-Alive: timeout=5,max=120

创建HTTP状态码

200 OK
302 临时跳转/缓存
400 请求有语法错误
403 拒绝
404 不存在
500 不可预期错误

查看HTTP工具

F12

拒绝缓存载入页面

Ctrl+F5

DNS域名解析

分十步进行:
Aaron

但可能不知这十步,因为name server可能会有多级,或者有一个GTM来负载均衡控制.

nslookup可以来看域名的解析结果

linux 可以用dig来查询DNS解析过程

清除缓存的域名

windows下: ipconfig /flushdns
Linux下: /etc/init.d/nscd restart

其他的

JVM也会缓存一些DNS,这个缓存是在InetAddress类中完成的.

几种域名解析方式

有服务器的童鞋一定接触过
A记录

Address,可将多个域名解析到一个地址

MX记录

Mail Exchange,将某域名下的邮件服务器指向自己的Mail Server,DNS会将邮件发向对应的邮件路由

CNAME记录

Canonical Name(别名解析),为一个域名设置一个或多个别名,如,taobao.com解析到xulingbo.net.则xulingbo.net是taobao.net的别名.

NS记录

为某域名指定DNS解析服务器.

TXT记录

为某个主机名或域名设置说明.

CDN工作机制

Content Delivery Network,内容分布网络.
将信息发布到最接近用户的”边缘”,使用户可以就近取得所需的内容.
CDN=镜像(Mirror)+缓存(Cache)+整体负载均衡(GSLB).
CDN可以明显提高Internet中信息流动的效率.

目前CDN都以缓存静态数据为主,如CSS,JS,图片和静态页面等.
淘宝有90%的数据由CDN提供.
通常来说CDN要完成以下几个目标:

可扩展
安全性
可靠性,响应和执行

通常的CDN架构

负载均衡(Load Balance)

负载均衡就是对工作任务进行平衡,分摊到多个操作单元上执行,如图片服务器,应用服务器等,共同完成工作任务。它可以提高服务器响应速度及利用效率.
负载均衡是有DNS解析来完成的.
常用在集群中,分为软件/硬件负载均衡.