16 April 2014

CDN的全称是Content Delivery Network,即内容分发网络。采用CDN后,同一份网络资源在多个服务器上都有拷贝, 当用户访问某一内容时,CDN系统会根据当时的网络状况和用户所处位置等因素来选择一个最合适的服务器进行连接。

CDN的作用

CDN的主要作用是使内容提供商的内容能够尽快到达用户,简单来说就是提高用户访问网站的速度。 例如,不同主干网之间的连接可能很慢,但有了CDN,每个主干网内都会有一份内容的拷贝,用户基本上不需要跨主干网访问。

CDN附带的一个好处是负载均衡。如果大量用户都去连接一个服务器,该服务器可能会承受不了。通过CDN可以把用户分流到不同的机器上。 不用CDN也可以使用多台机器去提供服务(例如在服务器端进行配置),但CDN顺便把这件事做了。

CDN系统还能避免单点故障。由于数据存在多个服务器上,最优的一个连不上时,还可以试试次优的,不至于完全无法访问。

CDN的实现

CDN在实现上主要有两个方面需要考虑:一是如何确保内容提供商发布的内容能高效地备份在网络各处的节点服务器上,二是如何把不同的用户导向到适合的服务器。

第一个方面主要通过缓存机制实现。当第一次连接时如果节点服务器没有所请求的内容,那么它去内容源那里取一份返回给用户,同时把被取回的内容缓存起来; 下一次有用户请求时,如果这份内容在源那里没有变化,那它就可以直接提供自己所缓存的这一份了。实际操作时,节点服务器甚至可以在没有用户访问的时候就把内容取来缓存好。 另外,当内容源有变化时,它也可以通过URL推送服务,来通知CDN各节点刷新自己的缓存,以保持及时更新。

第二个方面目前大多通过域名解析实现。用户访问网络资源时指定的是域名,而获取资源则是根据IP地址来连接服务器。 因此,CDN系统在解析域名时智能一些就可以了,即根据用户的位置以及当时的负载、带宽等情况,将其解析为特定服务器节点的IP地址。这种方式的CDN不要求内容提供商做太多改动, 只需将域名解析权交给CDN服务商接管即可(一般是将自己的域名CNAME到CDN服务器商给的一个域名,后者再被智能解析)。

除了域名方式之外,CDN还可以工作在HTTP重定向模式。但这样似乎局限于某个协议了,不如域名解析更通用一些。

CDN行业

有专门做CDN的公司,国内主流的有蓝汛、网宿等等;网络运营商如电信和网通也提供CDN服务;还有一些搞网站加速的,其中也包含CDN功能,如百度加速乐360网站卫士。 当然,有实力的公司可以自行购买节点服务器为自己的网站做CDN,例如优酷、百度等。