文章目录
  1. 1. URL请求过程
  2. 2. DNS域名解析过程
  3. 3. 跟踪域名解析过程
  4. 4. 清除缓存的域名
  5. 5. CDN工作机制
    1. 5.1. 负载均衡
      1. 5.1.1. 链路负载均衡
      2. 5.1.2. 集群负载均衡
      3. 5.1.3. 操作系统负载均衡
    2. 5.2. CDN动态加速

URL请求过程

当用户在browser里面输入url时,将会发生很多操作,首先查找本地的host文件有没有对应的url配置,如果有则请求该ip,否则请求DNS服务器解析该域名获取对应的ip地址,然后根据该IP地址找到服务器,向这个服务器发送一个get请求,由这个服务器返回数据给用户。在服务器端还有很复杂的业务逻辑:服务器可能有多台,到底指定那台服务器来处理请求,这需要一个负载均衡设备来平均分配所有用户的请求;还有请求的数据是存储在分布式缓存还是静态文件中,或者在数据库里;当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如CSS、JS或者图片)时又会发起另外的http请求,而这些请求很可能会在CDN上,那么CDN服务器又会处理这个用户的请求。

DNS域名解析过程

第一步,浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果有,这个解析过程就结束。
第二步,如果用户的浏览器缓存中没有,浏览器会查找操作系统中是否有这个域名对应的DNS解析结果。在Windows中可以通过C:\Windows\System32\drivers\etc\hosts文件来设置,Linux在/etc/hosts文件中配置。
前面这两个步骤都是在本机完成,如果本机无法完成域名的解析,就会真正请求域名服务器来解析这个域名。
第三步,通过查找网络配置的DNS服务器,解析域名对应的IP,这里的DNS服务器称为LDNS。
第四步,如果LDNS没有命中,就直接到Root Server域名服务器请求解析。

跟踪域名解析过程

在Linux系统可以使用dig 命令来查询DNS的解析过程,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@hadoop5 hadoop]# dig www.taobao.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> www.taobao.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28014
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.taobao.com. IN A
;; ANSWER SECTION:
www.taobao.com. 5 IN CNAME www.taobao.com.danuoyi.tbcache.com.
www.taobao.com.danuoyi.tbcache.com. 5 IN A 121.9.212.177
www.taobao.com.danuoyi.tbcache.com. 5 IN A 121.10.25.96
www.taobao.com.danuoyi.tbcache.com. 5 IN A 183.61.241.188
;; Query time: 9 msec
;; SERVER: 192.168.137.2#53(192.168.137.2)
;; WHEN: Sun Jul 16 08:06:49 2017
;; MSG SIZE rcvd: 125
[root@hadoop5 hadoop]#

第一行输出了当前Linux的版本号,第二行可以增加可选参数 cmd ,加上 cmd 打印的结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[root@hadoop5 hadoop]# dig cmd www.taobao.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> cmd www.taobao.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 47867
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;cmd. IN A
;; AUTHORITY SECTION:
. 5 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2017071501 1800 900 604800 86400
;; Query time: 75 msec
;; SERVER: 192.168.137.2#53(192.168.137.2)
;; WHEN: Sun Jul 16 08:08:01 2017
;; MSG SIZE rcvd: 96
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45307
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.taobao.com. IN A
;; ANSWER SECTION:
www.taobao.com. 5 IN CNAME www.taobao.com.danuoyi.tbcache.com.
www.taobao.com.danuoyi.tbcache.com. 5 IN A 183.61.241.188
www.taobao.com.danuoyi.tbcache.com. 5 IN A 121.9.212.177
www.taobao.com.danuoyi.tbcache.com. 5 IN A 121.10.25.97
;; Query time: 8 msec
;; SERVER: 192.168.137.2#53(192.168.137.2)
;; WHEN: Sun Jul 16 08:08:01 2017
;; MSG SIZE rcvd: 125
[root@hadoop5 hadoop]#

QUESTION SECTION 部分表示当前查询的域名是一个A记录,ANSWER SECTION 部分返回了这个域名由CNAME到www.taobao.com.danuoyi.tbcache.com,返回了这个域名对应的IP
还可以通过增加+trace参数跟踪域名的解析过程,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[root@hadoop5 hadoop]# dig www.taobao.com +trace
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> www.taobao.com +trace
;; global options: +cmd
. 5 IN NS h.root-servers.net.
. 5 IN NS c.root-servers.net.
. 5 IN NS f.root-servers.net.
. 5 IN NS e.root-servers.net.
. 5 IN NS j.root-servers.net.
. 5 IN NS b.root-servers.net.
. 5 IN NS d.root-servers.net.
. 5 IN NS m.root-servers.net.
. 5 IN NS k.root-servers.net.
. 5 IN NS l.root-servers.net.
. 5 IN NS a.root-servers.net.
. 5 IN NS g.root-servers.net.
. 5 IN NS i.root-servers.net.
;; Received 504 bytes from 192.168.137.2#53(192.168.137.2) in 1712 ms
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
;; Received 492 bytes from 198.97.190.53#53(198.97.190.53) in 383 ms
taobao.com. 172800 IN NS ns4.taobao.com.
taobao.com. 172800 IN NS ns5.taobao.com.
taobao.com. 172800 IN NS ns6.taobao.com.
taobao.com. 172800 IN NS ns7.taobao.com.
;; Received 232 bytes from 192.35.51.30#53(192.35.51.30) in 383 ms
www.taobao.com. 600 IN CNAME www.taobao.com.danuoyi.tbcache.com.
danuoyi.tbcache.com. 10800 IN NS danuoyins5.tbcache.com.
danuoyi.tbcache.com. 10800 IN NS danuoyins4.tbcache.com.
danuoyi.tbcache.com. 10800 IN NS danuoyins7.tbcache.com.
danuoyi.tbcache.com. 10800 IN NS danuoyins8.tbcache.com.
danuoyi.tbcache.com. 10800 IN NS danuoyins9.tbcache.com.
danuoyi.tbcache.com. 10800 IN NS danuoyins6.tbcache.com.
;; Received 323 bytes from 140.205.2.180#53(140.205.2.180) in 36 ms
[root@hadoop5 hadoop]#

上面清除的展现了域名是如何发起和解析的

清除缓存的域名

DNS域名解析会缓存解析结果,其中主要在两个地方缓存结果,一个Local DNS Server,另一个是用户的本地机器。这两个缓存都是TTL值和本机缓存大小控制的。Local DNS Server的缓存我们控制不了,但是我们本机的缓存可以通过如下方式清除
在Windows下可以在命令行模式下执行 ipconfig /flushdns 命令来刷新缓存。
在Linux下通过 /etc/init.d/nscd restart 来清理缓存。

CDN工作机制

CDN也就是内容分别网络(Content Delivery Network),它是构筑在Internet上的一种先进的流量分配网络,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需要的内容,提高用户访问网站的响应速度。有别于镜像,比镜像更加智能,可以做这样的比喻:CDN=镜像+缓存+整体负载均衡

负载均衡

负载均衡(Load Balance)就是对工作任务进行平衡、分摊到多个操作单元执行,如图片服务器、应用服务器等,共同完成工作任务。通常有三种负载均衡架构,分别是:

链路负载均衡

链路负载均衡就是通过NDS解析成不同的IP,然后用户根据这个IP来访问不同的目标服务器;负载均衡是由DNS的解析来完成。这种DNS解析的优点是用户直接访问目标服务器,而不需要经过其他的代理服务器,通常速度比较快。但是也有缺点,由于DNS在用户本地和Local DNS Server 都有缓存,一旦某台Web Server挂掉,就很难及时更新用户的域名解析结构。导致用户无法访问该域名

集群负载均衡

集群负载均衡,分为硬件负载均衡和软件负载均衡。硬件负载均衡一般使用专门的硬件设备来转发请求,这台硬件设备是关键一般都比较昂贵,如F5,它的优点就是性能非常好,缺点就是非常贵。

软件负载均衡是使用最普遍的一种负载方式,它的特点是使用成本非常低,直接使用廉价的PC就可以搭建,缺点就是一般一次访问请求需经过多次代理服务器,会增加网络的延时。

操作系统负载均衡

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

CDN动态加速

CDN动态加速是在CDN的DNS解析中通过动态的链路探测来寻找回源最好的一条路径。

文章目录
  1. 1. URL请求过程
  2. 2. DNS域名解析过程
  3. 3. 跟踪域名解析过程
  4. 4. 清除缓存的域名
  5. 5. CDN工作机制
    1. 5.1. 负载均衡
      1. 5.1.1. 链路负载均衡
      2. 5.1.2. 集群负载均衡
      3. 5.1.3. 操作系统负载均衡
    2. 5.2. CDN动态加速