大家平常上网或多或少都听说过CDN,又或是在下载链接中见到过CDN。本篇将用尽量易懂的方式介绍CDN是什么?有什么优劣?怎么工作的?

一、CDN是什么

  在说我的理解前,不妨先看看百科是怎么说的。

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度

百度百科

  简单来说,CDN就相当于一个缓存服务器。先从源站服务器获取客户端请求的内容,再将缓存在CDN的数据直接返还给客户端。之后相同的请求直接由CDN服务器返回先前的缓存给客户端,而请求将不会发送到到源站服务器。

二、CDN有什么好处

1. 对源站服务器的配置要求降低

  试想一下,假设一台服务器上跑了一个网站,这个网站非常受欢迎,但服务器只有1MB/s的带宽(当然,这是不切实际的),那么如果所有请求直接发到服务器上很可能会直接把服务器的下行带宽跑满。用户的直观感受就是:网站怎么这——么慢啊……

  但是很幸运,这个站长知道并使用了CDN,那么可以简单理解为只有一个客户端向这个服务器发送了请求,其他的用户在一定时间内就找这个客户端要它们想要的东西就行了。

  下面这张图可以简单地说明情况:

未使用CDN与使用CDN简单对比

2. 用户访问速度变快

  CDN作为一个网络(N->Network,网络)一般情况下不只一个节点,那么用户就会向离他最近的节点请求内容而不是向或许远在地球另一端的服务器请求内容。

  假设一台服务器在美国,一个广州的用户想访问它,那么服务器的响应时间可能甚至会大于1秒。假如这时,这个网站使用的CDN服务在广州刚好有一台服务器(一个末端节点),而且这台CDN服务器上刚好有这个用户想要的页面的缓存,那么响应的时间可能只需要100毫秒左右!这给用户带来的体验那可是蹭蹭地往上涨啊。

未使用CDN与使用CDN简单对比

3. 保护源站服务器

  网站的运营者一般不会希望向公众暴露服务器的公网IP,因为这非常容易使网站受到攻击(如DDoS、CC),及时使用了域名指向服务器,那么其实还是可以通过各种方式查询到服务器的真实IP(如ping命令)。

  但是,如果这个网站使用了CDN,那么用户通过各种方式查到的IP地址只能是CDN节点的服务器IP,就算发动攻击也只是给CDN服务器增加点流量罢了。

三、使用CDN的缺点

  还记得前面提到的优点2吗,但在实际情况中,并不是所有CDN都能给网站起到加速的作用,比如下面这种情况。

  当网站访问量不大时。假如你的网站很久才有一个人访问,那么这时上一个用户访问网站在CDN服务器上留下的缓存应该已经过期了。此时,CDN服务器就需要重新向源站获取更新的数据。这毕竟比用户直接找源站服务器获取数据多了一个流程,或多或少会慢一点的。(比如本站)