初识CDN

=====先声明一下,以下内容都是从互联网中总结而得来的=====

CDN的全称是Content Delivery Network,即内容分发网络。其上的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。网站的内容提供商(比如网易、新浪、搜狐等等)使用CDN,就可以在宏观层解决一部分大流量、海量用户并发等令人头疼的问题。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均 等原因所造成的用户访问网站响应速度慢的问题。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。

CDN的基本运作原理是:CDN服务提供商在全国各地的很多CDN节点部署了大量的边缘服务器,当内容提供商(比如网易、新浪、搜狐等等)使用CDN服务的时候要把加速的域名CNAME到CDN服务提供商的CDN网络中,然后将内容提供商的内容缓存或镜像到这些边缘服务器上,当终端用户访问这些加速网站时,通过先进的智能DNS将用户访问解析到离终端用户最近的最可靠的边缘服务器上,实现就近访问,从而加速访问速度,提升用户的访问体验。

下面对比用户访问站点的传统方式和加入了CDN之后的方式:

a)传统方式

clip_image002

  1. 用户向浏览器提供要访问的域名;
  2. 浏览器向DNS服务器获取站点的IP;
  3. 浏览器根据IP向域名指定的网站服务器发出数据请求;
  4. 浏览器根据域名主机返回的数据显示网页的内容。

b)加入CDN

clip_image003

  1. 用户向浏览器提供要访问网站的域名,域名解析的请求被发往网站的DNS域名解析服务器;
  2. 由于网站的DNS域名解析服务器对此域名的解析设置了CNAME,请求被指向CDN网络中的智能DNS负载均衡系统;
  3. 智能DNS负载均衡系统对域名进行智能解析,将响应速度最快的节点IP返回给用户;
  4. 浏览器在得到速度最快节点的IP地址以后,向CDN节点的服务器发出访问请求;
  5. 由于是第一次访问,CDN节点将回到源站取用户请求的数据并发给用户,然后将数据缓存到节点上;
  6. 当有其他用户再次访问同样内容时,CDN将直接将数据返回给客户,完成请求/服务过程。

总的来说,内容服务基于缓存服务器,也称作代理缓存(Surrogate),它位于网络的边缘,距用户仅有”一跳”(Single Hop)之遥。同时,代理缓存是内容提供商源服务器(通常位于CDN服务提供商的数据中心)的一个透明镜像。这样的架构使得CDN服务提供商能够代表他们 客户,即内容供应商,向最终用户提供尽可能好的体验,而这些用户是不能容忍请求响应时间有任何延迟的。据统计,采用CDN技术,能处理整个网站页面的 70%~95%的内容访问量,减轻服务器的压力,提升了网站的性能和可扩展性。

至于智能DNS,解析如下:

假设某网站 ,如www.a.com, 上海有服务器一台,给的IP是1.1.1.1 ,北京有一台,给的是2.2.2.2 处于不同IDC,要求实现上海的用户访问在上海的服务器, 而北京的用户访问到北京的服务器.
角色1 Client 上海电信用户5.5.5.10
角色2 Client的DNS服务器 5.5.5.1 根据Client的网络接入的方式不同,DNS服务器的IP地址是不一样的
角色3 a.com的soa dns,ip 3.3.3.3 由com. 授权,
角色4 www.a.com的2台服务器, 上海的IP1.1.1.1 北京的2.2.2.2
角色5 上海的DNS服务器 1.1.1.10
角色6 北京的DNS服务器 2.2.2.10
在确定好所有的角色后,我们来看看这个工作过程以及解决方案
假定上海电信dns 是递归查询, 通过一个图来说明智能解析过程. (请把该图放大再看比较清楚)

clip_image005

因为递归查询,那么情况比较复杂,因为 最终访问到a.com dns 服务器的是上海电信dns服务器, 是Client DNS. 这样只能判定Client DNS比较距离 上海或者北京比较近,而无法断定Client是距离那里比较近。

不过,由于网络接入的方式不一样,例如 网通的ADSL方式,其IP、DNS地址均由动态获取,这样此时 Client DNS服务器与Client应该是属于相同运营商IP,这样就能够通过判定Client DNS地址来大约断定Client所属运营商所处地区,从而给予Client一个正确的IP地址解析。

This entry was posted in Web. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>