web网站加速之CDN实例分析 - www.apple.com

若是你的网站的用户遍及世界各地,并且你的网站有不少静态资源(html, js, css, 图片),那么你必定会想利用 CDN(Content Delivery Network)来加快你的网站的访问速度。关于CDN的基本原理,请看这里 css


这里分析一下苹果官网(www.apple.com)的CDN的应用(苹果使用了Akamai做为其CDN服务商)html

用户的在主页上搜索macbook的操做流程:浏览器

  1. 访问苹果主页缓存

  2. 在输入框输入关键字"macbook",点击search按钮服务器

实际发生的请求:网络

  1. www.apple.com发送请求,返回结果为html页面。app

  2. 由于html页面包含有css引用代码性能

    <link id="globalheader-stylesheet" rel="stylesheet" href="http://images.apple.com/global/nav/styles/navigation.css" type="text/css" />

    紧接着向 images.apple.com 发送请求,获得css文件网站

  3. 当用户点击搜索按钮后,向www.apple.com 发送请求 http://www.apple.com/search/?q=macbookurl

在整个过程当中涉及到二个域名:www.apple.com 和 images.apple.com

dig后发现这两个域名都用CNAME指向了Akamai的DNS服务器

由此可知整个过程的三个请求都是发送到了Akamai CDN服务器,其中两个是请求是静态资源(html和css),已经缓存在了Akamai CDN里,只要缓存没过时,就能够直接返回给用户;一个是动态请求(search/?q=macbook),此时Akamai CDN摇身一变成了代理服务器,每次都把请求转发给apple服务器,以下图。

这里须要指出一点,对动态资源发送请求的时候,每次都经过Akamai CDN进行转发,这样反而会影响网站的性能。那么咱们怎么对全部动态资源的请求都绕过Akamai CDN,直接访问Apple的服务器呢?咱们观察到apple主页url和搜索表单url都指向相同的域名www.apple.com(这是因为浏览器同源策略的强制规定),因此若是咱们想要对动态资源的请求直接访问apple服务器,就只能把 www.apple.com 直接指向apple服务器,这样作的损失就是另外一个静态资源:apple的html主页http://www.apple.com/ 也将直接从apple服务器获取,没法从Akamai CDN获取,用户对主页的访问将变慢。修改后以下图。

以上两种方式,Apple选择了第一种方式,你们能够根据本身网站的状况进行选择。


接下来咱们经过图解来看一下当访问http://www.apple.com  时,apple主页经过CDN获取html页面的全过程

(1) 用户向电信运营商的本地DNS递归查询服务器(如下简称local telcom DNS)询问 www.apple.com  的ip地址。

(2,3) local telcom DNS向根域名服务器和.com顶级域名服务器进行递归查询apple.com的权威域名服务器地址。

(4,5) local telcom DNS向apple.com权威域名服务器查询www.apple.com 的ip,获得指向Akamai域名的CNAME记录:www.isg-apple.com.akadns.net,该域名由Akamai拥有。接着local telcom DNS向www.isg-apple.com.akadns.net发起DNS查询请求,获得另外一个CNAME记录 www.apple.com.edgekey.net ,该域名一样由Akamai拥有。和上一步同样,接着local telcom DNS向www.apple.com.edgekey.net 发起域名查询请求,获得另外一个CNAME记录 e3191.dscc.akamaiedge.net ,该域名仍是由Akamai拥有(akadns.net, edgekey, akamaiedge.net 都是Akamai控制的域名)。(由上面的dig截图咱们知道,e3191.dscc.akamaiedge.net 是最后一次CNAME记录的域名,也是akamai的智能DNS服务器,它能根据用户所处的地理位置和当前网络负载状况给出最合适的服务器ip地址。)

(6,7) local telcom DNS向根域名服务器和.net顶级域名服务器进行递归查询akamaiedge.net的权威域名服务器地址。

(8,9) lcoal telcom DNS向akamaiedge.net的权威域名服务器查询e3191.dscc.akamaiedge.net 的ip,  获得的返回结果为Akamai CDN edge server的ip,通常是离用户地理位置最近的那个edge server服务器。

(10) local telcom DNS将Akamai CDN edge server的ip返回给用户的计算机。

(11) 用户向Akamai CDN edge server发送请求。

(12) Akamai CDN edge server会进行判断:若是是静态资源请求且缓存已通过期,或者是动态资源请求,向apple源服务器发送请求,不然直接转到(13)。

(13) Akamai CDN edge server将缓存的静态资源或者做为代理转发的动态资源返回给用户。

咱们平时看到的对CDN的使用基本就是按照上图的流程来进行的。

相关文章
相关标签/搜索