一、什么是CDN

CDN(内容分发网络),全称是Content Delivery Network,建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络,替代传统以web server 为中心的数据传输模式。

作用是将源内容发布到边缘节点,配合精准的调度系统;将用户的请求分配至最适合他的节点,使用户可以以最快的速度取得他所需的内容,有效解决Internet网络拥塞状况,提高用户访问的响应速度。

二、CDN的原理

用户通过浏览器等方式访问网站的过程如图所示:




cdn部署架构 网络拓扑图 cdn实现原理_前端


① : 用户在自己的浏览器中输入要访问的网站域名

② : 浏览器向本地DNS服务器请求对该域名的解析

③ : 本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。

④ : 本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以递归方式向整个DNS系统请求 解析,获得应答后将结果反馈给浏览器。

⑤ : 浏览器得到域名解析结果,就是该域名相应的服务设备的IP地址

⑥ : 浏览器向服务器请求内容

⑦ : 服务器将用户请求内容传送给浏览器

在网站和用户之间加入CDN以后,用户不会有任何与原来不同的感觉。最简单的CDN网络有一个DNS服务器和几台缓存服务器就可以运行了。

CDN基于这样的原理:

  1. 挑选最优设备为用户提供服务
  2. 如果某个内容被很多用户所需要,它就被缓存在到距离用户最近的节点中

CDN公司在整个互联网上部署数以百计的CDN服务器(Cache),这些服务器通常在运营商的IDC(互联网数据中心 Internet Data Center)中,尽量靠近接入网络和用户。CDN在Cache中复制内容,当内容的提供者更新内容时,CDN向Cache重新发布这些被刷新的内容。CDN提供一种机制,当用户请求内容时,该内容能够由以最快速度交付的Cache来向用户提供,这些挑选“最优”的过程就叫做负载均衡。被选中的最优Cache可能最靠近用户,或者有一条与用户之间条件最好的路径

从功能上划分,典型的CDN系统架构由分发服务系统、负载均衡系统和运营管理系统三大部分组成

分发服务系统

该系统的主要作用是实现将内容从内容源中心向边缘的推送和存储,承担实际的内容数据流的全网分发工作和面向最终用户的数据请求服务。

负载均衡系统

负载均衡系统是一个CDN系统的神经中枢,主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。

运营管理系统

CDN的运营管理系统与一般的电信运营管理系统类似,分为运营管理和网络管理两个子系统

运营管理子系统是CDN系统的业务管理功能实体,负责处理业务层面的与外界系统交互所必需的一些手机、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能

网络管理子系统实现对CDN系统的网络设备管理、拓扑管理、链路监控和故障管理,为管理员提供对全网资源进行集中化管理操作的界面,通常是基于web方式实现的。

三、CDN的作用

CDN一般会用来托管web资源(包括文本、图片和脚本等),可供下载的资源(媒体文件、软件、文档等),应用程序(门户网站等)。使用CDN来加速这些资源的访问。

  1. 性能方面,引入CDN的作用在于:
  • 用户收到的内容来自最近的数据中心,延迟更低,内容加载更快
  • 部分资源请求分配给了CDN,减少了服务器的负载
  1. 在安全方面,CDN有助于防御DDOS、MITM等网络攻击:
  • 针对DDOS:通过监控分析异常流量,限制其请求频率
  • 针对MITM:从源服务器到CDN节点到ISP,全链路HTTPS通信

除此之外,CDN作为一种基础的云服务,同样具有资源托管、按需扩展(能够应对流量高峰)等方面的优势

四、CDN的使用场景

  • 使用第三方的CDN服务:如果想要开源一些项目,可以使用第三方的CDN服务
  • 使用CDN 进行静态资源的缓存:将自己网站的静态资源放在CDN上,比如js、css、图片等,可以将整个项目放在CDN上,完成一键部署
  • 直播传送:直播本质上使用流媒体进行传送,CDN也是支持流媒体传送的,所以直播完全可以使用CDN来提高访问速度。CDN在处理流媒体的时候与处理普通静态文件有所不同,普通文件如果在边缘节点没有找到的话,就会去上一层接着寻找,但是流媒体本身数据量非常大,如果使用回源的方式,必然会带来性能问题,所以流媒体一般采用的都是主动推送的方式来进行。