您可能每天使用的服务,从淘宝到微信到抖音,都依赖于称为 CDN 或内容分发网络的东西。那么这些特殊的计算机网络有什么用,为什么它们如此重要?
一、什么是CDN?
CDN的全称是Content Delivery.NETwork,翻译成中文就是内容分发网络。CDN依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取内容,降低网络延迟,提高访问速度。简单来讲,CDN是用来进行加速的,它可以让用户更快获得所需的数据。
举个例子,某个网站的服务器在北京,如果深圳的用户想要获取服务器上的数据,就需要跨越很远的距离,由于传输速度和路由转发等因素,就会导致访问速度非常缓慢。如果您尝试访问地球另一端的网站,则加载时间将比在您所在城市或国家/地区托管的网站上花费更长的时间。数据包必须传输的越远,它们在通过互连时遇到瓶颈的可能性就越大,或者它们可能会丢失。在这种情况下,它们必须再次发送。但如果我们在深圳建立一个CDN服务器,上面缓存了一些服务器数据,那么深圳用户只需要访问这个CND的服务器就能获取相关的内容,这样速度就提升了很多。
二、什么是DNS?
要了解CDN就先要了解一下DNS。我们都知道当我们在浏览器中输入一个域名时,就能访问该域名所对应的站点。但实际系统运营的逻辑远比我们看到的复杂,因为计算机不能直接识别域名,所以必须依靠某种环节将域名翻译成IP地址才能,这个环节就是DNS。
当我们向DNS服务器发起解析域名的请求时,DNS服务器首先会查询自己的缓存中有没有该域名,如果缓存中存在该域名,则可以直接返回IP地址。如果缓存中没有,服务器则会以递归的方式层层访问。
例如,我们要访问www.bAIdu.com,首先我们会先向全球13个根服务器发起请求,询问com域名的地址,然后再向负责com域名的名称服务器发送请求,找到baidu.com,这样层层递归,最终找到我们需要的IP地址。
三、CDN和DNS的区别
上面我们提到CDN实际上提供就是一个就近访问的功能,但现在有一个问题是,我们如何直到用户所在的位置并为其分配最佳的CDN节点呢,这就需要用DNS服务进行定位了。
当我们使用DNS服务时,可以根据用户使用的递归服务器进行定位。但你给我们看到用户使用的是深圳的递归服务器,那么就认为该用户来自深圳,然后调度服务器就让该客户去访问深圳的CDN服务器。
但这种调度方式可能存在一个问题,就是用户的实际IP与递归服务器并不一致。比如我是北京联通的用户却使用了深圳电信的递归服务器,那么调度服务器为我分配深圳电信的CDN服务器,就会产生错误的调度。
四、HTTP调度
针对上面的问题,我们还有另一种调度方式——HTTP调度。
当用户访问服务器时,先分析用户的IP地址,然后服务器给用户返回一个302重定向,将离用户最近的服务器存在缓存中,用户再去请求时就能得到最佳的CDN节点。
这种方式定位更加准确,但缺点是需要增加一次额外的HTTP访问,这样导致首次访问的延时比较高。
所以在实际情况中,大都是将两种方式结合起来,先通过DNS的方式来定位,然后通过HTTP的方式来纠正偏差。
五、缓存的两种方式
CDN节点中缓存了服务器上的部分资源。那么服务器怎么去更新CDN节点的缓存呢?
第一种方式是服务器主动进行缓存的更新,CDN节点被动接受并进行更新。第二种方式是当发现用户请求的资源不存在时,CDN节点主动更新缓存,然后将数据返给用户。从实际执行上现在大多以第二种缓存方式居多,因为第一种方式存在不少问题,比较容易产生404。
六、CDN工作流程
当用户请求一个文件时,CDN的工作过程如下:
1.DNS请求当地local DNS
2.当地local DNS递归地查询服务器的gslb
3.服务器根据local DNS 分配最佳节点,返回IP
4.用户获得最佳接入IP,访问最佳节点
5.假设您是您所在地区第一个从网站请求特定文件的人,而该节点没有用户想要获取的内容,则系统会通过内部路由访问上一节点,直到找到文件或到达源站并将对应内容复制到本地缓存。
6.CDN节点本地节点将保留该副本,以防其他本地用户也需要该文件,当其他用户下次请求该文件时数据即可可以直接返回。如果在设定的时间后没有人想要该文件,它可能会被删除,直到有人再次想要它为止。这样长距离带宽只用一次,然后就只用本地带宽了。
七、CDN 对公司的好处
CDN 不仅仅是为用户提供良好的体验。他们可以通过防止过度使用昂贵的国际带宽来节省内容提供商的资金。CDN 还可以容纳大量用户,通过网络分散负载以确保没有拒绝服务。这也意味着 CDN 可以针对故意的分布式拒绝服务 ( DDoS ) 攻击提供保护。
此外,CDN 提供了一种将内容限制在内容许可区域的方法。这就像将本地托管的内容限制为该地区许可的内容一样简单。
八、任何人都可以使用 CDN 吗?
不只是大公司建立自己的服务器网络可以利用 CDN 技术,大多数 CDN 属于提供托管服务的专业公司,并将 CDN 服务作为托管费用的一部分。
个人用户可以通过使用依赖它们的公司的产品从 CDN 技术中受益。如果您是商业用户,您也可以直接与 CDN 提供商联系。火伞云融合CDN融合了全球若干家顶级CDN厂商,是国内极少数真正实现实时监控,智能定位分析和智能调度决策的融合CDN平台,也是国内首家实现全球融合CDN加速业务正式落地的企业。火伞云融合CDN是在传统CDN基础上实现的对数据网络加速进一步优化的融合管理服务。除了服务于音视频点播,文件、应用与Web加速,以及各类增值场景外,火伞云融合CDN还通过全方位的CDN质量监控,以及智能易用的加速节点调度等功能,保障用户服务的连续性,提供稳定快速的网络访问质量。