专栏首页海仔技术驿站CDN加速静态文件访问

CDN加速静态文件访问

CDN加速静态文件访问

	CDN是Content Delivery Network的缩写,意思是内容分发网络。CDN的作用是把用户需要的内容分发到离用户近的地方,这样可以使用户
	能够就近获取所需内容。	
	整个CDN系统(如图1-1所示)分为CDN源站和CDN节点,CDN源站提供CDN节点使用的数据源头,而CDN节点则部署在距离最终用户比较
	近的地方,加速用户对站点的访问。
	CDN其实就是一种网络缓存技术,能够把一些相对稳定的资源放到距离最终用户较近的机房,一方面可以节省整个广域网的带宽消耗,另外
	一方面可以提升用户的访问速度,改进用户体验。我们一般把一些相对静态的文件(例如图片、视频、JS脚本、一些页面框架)放在CDN中。

图1-1

我们通过浏览器访问一个网站的过程大致如图1-2所示。 图1-2

(1)用户向浏览器提交要访问的域名。 (2)浏览器对域名进行解析,得到域名对应的IP地址。 (3)浏览器向所得的IP地址发送请求。 (4)浏览器根据返回的数据显示网页的内容。

而在有了CDN以后,用户通过浏览器访问网站的过程会产生一些变化。如图1-3

图1-3

(1)用户向浏览器提交要访问的域名。 (2)浏览器对域名进行解析,由于CDN对域名解析过程进行了调整,所以得到的是该域名对应的CNAME记录。 (3)对CNAME再次进行解析,得到实际IP地址。在这次的解析中,会使用全局负载均衡DNS解析,也就是我们需要返回 具体IP地址,需要根据地理位置信息以及所在的ISP来确定返回的结果,这个过程才能让身处不同地域、连接不同接入商的 用户得到最适合自己访问的CDN地址,才能做到就近访问,从而提升速度。 (4)得到实际的IP地址以后,向服务器发出访问请求。 (5)CDN会根据请求的内容是否在本地缓存进行不同处理: 1)如果存在,则直接返回结果。 2)如果不存在,则CDN请求源站,获取内容,然后再返回结果。

通过这个流程,我们可以看到CDN中的几个关键技术。

全局调度

全局调度是完成用户就近访问的第一步,我们需要根据用户地域、接入运营商以及CDN机房的负载情况去调度。前面两个调度因素需要一个
尽可能精准的IP地址库,这是正确调用的前提(误识别的IP地址到地理位置的对应可能会把东北的用户调度到华南的站点去),当然,做到
100%的精确是不现实的。IP地址库的维护是一个持续和变化的过程,并且调度的策略随着CDN机房的增加也会变化。例如,我们不可能在
所有城市都设置CDN机房,假设刚开始河南整个省份没有CDN机房,可能河南靠北的城市使用天津的CDN,同时河南靠南的城市使用湖北
的CDN会比较好,而如果后来在郑州市建设了CDN机房的话,那么原来的调度策略就会修改了。CDN的负载也是调度中的一个影响因素,
举例来说,如果一个CDN机房举例你的位置比较近,但是它的负载已经很高,响应很慢,那么你的请求送到距离稍远的CDN机房反而会更快。

缓存技术

	从上面的流程中我们看到,如果用户请求的内容不在CDN中的话,CDN会回到源站去加载内容,然后返回给用户。所以,如果CDN机房的请求
命中率不高的话,那么起到的加速效果也是相对有限的。
	要提升命中率,就需要CDN机房中有尽可能全面的数据,这要求CDN机房的缓存容量要足够大,我们可以使用“内容+SSD+机械硬盘”的混合存
储方式来提升整体的缓存容量,并且我们做好冷热数据的交换,在提升命中率时也尽量降低缓存的响应时间。
	此外,当CDN的Cache没有命中要回源加载数据时,合并同样数据的请求也是一个很重要的优化,这样可以减少重复的请求,降低源站的压力。
	最后,新增、变更数据后的CDN预加载也是一个提升命中率的办法。也就是在没有请求进来时,CDN主动去加载数据,做好准备。当然这个主
动加载一般也需要源站有一个通知过来。

内容分发

	这里提到的内容分发主要是对内容全部在CDN上不用回源的数据的管理和分发,例如一些静态页面等。具体做法是在内容管理系统中进行编辑
修改后,通过分发系统分发到各个CDN的节点上。分发的效率以及对分发文件一致性、正确性的校验是需要关注的点。

带宽优化

	CDN提供了内容加速,很多请求和流量都压到了CDN上,那么如何能够比较有效地节省带宽会是一个很重要的事情,因为这直接关系到流量
成本。优化的思路是只返回必要的数据、用更好的压缩算法等。

在CDN的应用中,从传统意义上来讲,主要是把用户需要访问的内容放到离用户近的地方。可以发现大部分流量是从源站到CDN机房的流量,我们也可以利用CDN机房距离目标用户近的地点,让一些上传的工作从CDN接入,然后再从CDN传到源站 ,这一方面可以提升用户的上传速度,另一方面也很好地利用了从CDN机房到源站的上行带宽。

参考书籍 :大型网站系统与Java中间件实践

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 图解Java设计模式之装饰者模式

    1)咖啡种类/单品咖啡 :Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 2)调料 :Milk...

    海仔
  • java基础第七篇之接口

    * 接口的方法 必须是public abstract 修饰,你可以不写,也可以选择性写,但是不写不代表没有(我们建议写)

    海仔
  • 图解Java设计模式之代理模式

    1)代理模式 :为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处是 :可以在目标对象实现的基础上,增强额外的功能操作,即...

    海仔
  • 视频互联网直播/点播服务器中关于内容分发CDN的相关问题汇总

    算下来我有一段时间没写CDN了,但是我们的视频直播点播服务器能够进行CDN网络分发,所以我几乎每天都会接触到这方面的东西。

    EasyNVR
  • 中国 CDN 编年史

    CDN的全称是(Content Delivery Network),即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平...

    边缘计算
  • 直播风口下的CDN行业,原快播技术团队能否再造一个Uber?

    2015年A轮融资的846家创业公司,如今倒闭了一大批,股灾、O2O泡沫破灭之后,资本的寒冬骤然降临。但某些细分市场,比如企业级服务、视频直播、共享经济等,仍...

    曾响铃
  • 运营商再度提升CDN关注,SDN/NFV成2015年重要关注点

    2015年3月31日,2015第三届亚太CDN峰会圆满落下帷幕,本届CDN峰会以“大数据背景下的流量经营”为主题,力邀广电总局、工信部、腾讯云、阿里、迅雷、乐视...

    SDNLAB
  • 推荐13个常用前端公共库CDN服务资源

    CDN公共库是指将常用的JS库存放在CDN节点,以方便广大开发者直接调用。与将JS库存放在服务器单机上相比,CDN公共库更加稳定、高速。 公共CDN能为您的应用...

    小弟调调
  • 作为一名程序员,你真正了解CDN技术吗?

    将时光倒回到几年前,在那时候我的老家县城里,如果你从京东APP上购物下单,起码需要等上个几天时间,才能将商品送到你的手中。

    黄泽杰
  • 如何更好的利用CDN资源

    导语 随着互联网规模的爆炸式增长,CDN成长为重要的基础设施。如何更好的利用好CDN在全国丰富的资源点为用户提供更好的服务? 这篇文章介绍了CDN在动态内容和全...

    腾讯技术工程官方号

扫码关注云+社区

领取腾讯云代金券