CDN的全称是(Content Delivery Network),即内容分发网络。是通过在现有的Internet中增加一层新的缓存服务器,将网站的内容发布到最接近用户的网络”边缘“的节点,这样做的目的是使用户可以就近获得所需要的内容,解决因特网的拥挤问题,提高用户访问站点的响应速度。
CDN可以覆盖国内的几乎所有线路。从可靠性方面,CDN实现了结构上的多点冗余,即使某一节点意外失效,网站的接入也会自动指向其它健康的节点。CDN可以方便地在全国范围内实现网站铺设,不需要考虑对服务器进行投资和托管,不需要考虑新增带宽的成本,不需要对多台服务器进行镜像同步,也不需要管理和维护技术人员。CDN从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。
简单的说,CDN的工作原理就是将您源站的资源缓存到位于全国乃至全球的CDN节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验。
我们来看一下网站传统的访问过程,以便理解其与CDN加速访问方式之间的差别:
传统的网站访问过程为:
用户在浏览器中输入要访问的域名;
浏览器向域名解析服务器发出解析请求,获得此域名对应的IP地址;
浏览器利用所得到的IP地址,向该IP对应的服务器发出访问请求;
服务器对此响应,将数据回传至用户浏览器端显示出来。
与传统访问方式不同,CDN网络则是在用户和服务器之间增加缓存服务器,将用户的访问请求引导到CDN节点而不是服务器源站点,要实现这一目的,主要是通过接管DNS实现,以下为使用CDN缓存后的网站访问过程:
使用CDN缓存后的网站访问过程演变为:
用户在浏览器中输入要访问的域名;
浏览器向域名解析服务器发出解析请求,由于CDN对域名解析过程进行了调整,所以用户端一般得到的是该域名对应的CNAME记录,此时浏览器需要再次对获得的CNAME域名进行解析才能得到缓存服务器实际的IP地址。
在此过程中,全局负载均衡DNS解析服务器会根据用户端的源IP地址,如地理位置(深圳还是上海)、接入网类型(电信还是网通)将用户的访问请求定位到离用户路由最短、位置最近、负载最轻的Cache节点(缓存服务器)上,实现就近定位。定位优先原则可按位置、可按路由、也可按负载等。
再次解析后浏览器得到该域名CDN缓存服务器的实际IP地址,向缓存服务器发出访问请求;
缓存服务器根据浏览器提供的域名,通过Cache内部专用DNS解析得到此域名源服务器的真实IP地址,再由缓存服务器向此真实IP地址提交访问请求;
缓存服务器从真实IP地址得到内容后,一方面在本地进行保存,以备以后使用,同时把得到的数据发送到客户端浏览器,完成访问的响应过程;
用户端得到由缓存服务器传回的数据后显示出来,至此完成整个域名访问过程。
使用CDN的好处有很多,一方面加快了访问速度,改善了用户体验性;另一方面,可以防御 DDoS 等消耗型的攻击。