CDN的原理,你真的了解CDN吗?
目前国内访问量非常大的网站、直播、视频平台,在大家体验看来,其实访问速度都是很快的。但是如果服务器部署在网通,那电信用户访问会比较慢。如果服务器部署在电信,网通用户访问很慢。其实这一切,都是跟CDN有关系,这篇文章,就跟着我们来认识一下CDN吧。
什么是CDN
让我们先从一个例子,来说说什么是CDN技术。在二十多年前,大部分城市主流的购物方式,都是去某某百货商店、某某商场,很多人挤在一块小小的柜台前,挑选自己想要的东西。这在现在看来,非常的不方便。不论你买的是大件商品还是油盐酱醋,都要去到一个集中的商店里去寻找,可能有的时候还会遇到断货的情况,大老远的跑去却要悻悻而归,那你的心里是不是很崩溃。
这时候仓储式购物场所出现了,就是大家现在司空见惯的超市、便利店。便利店的出现,就是把本来需要集中的购物场所打散,把人们需要经常购买的商品提前放置在自己的卖场里,供顾客前来选购。
其实CDN,就好比是便利店,把本来需要集中获取的资源缓存到边缘节点,使用户就近访问。CDN全称Content Delivery Network,即内容分发网络。它解决的问题,就是在网络里增加一层缓存层,将源站的资源分发到距离用户近的网络边缘节点,供用户快速访问。
CDN的好处
CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离近的缓存服务器上,由缓存服务器响应用户请求。
而且CDN并不是只能缓存视频内容,它还可以对网站的静态资源(例如各类型图片、html、css、js等)进行分发,对移动应用APP的静态内容(例如安装包apk文件、APP内的图片视频等)进行分发。
CDN的好处主要有以下几点:
- CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低
- 大部分请求在边缘节点完成,CDN起到了分流作用,减少远程访问的带宽、分担网络流量、减轻原站点web服务器负载等功能,减轻了源站压力
- 广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵。
CDN原理
简单的CDN网络由一个DNS服务器和几台缓存服务器组成:
- 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
- CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
- 用户向CDN的全局负载均衡设备发起内容URL访问请求。
- CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
- 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
- 全局负载均衡设备把服务器的IP地址返回给用户。
- 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
CDN缓存策略
CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议,通过http响应头中的Cache-control: max-age的字段来设置CDN边缘节点数据缓存时间。
当客户端向CDN节点请求数据时,CDN节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向源站发出回源请求,从源站拉取新数据,更新本地缓存,并将新数据返回给客户端。
CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理。
CDN缓存时间会对“回源率”产生直接的影响。若CDN缓存时间较短,CDN边缘节点上的数据会经常失效,导致频繁回源,增加了源站的负载,同时也增大的访问延时;若CDN缓存时间太长,会带来数据更新时间慢的问题。开发者需要对特定的业务,来做特定的数据缓存时间管理。 关于CDN这块的内容先介绍到这里,希望你能对CDN有了一定了解。请持续关注~
相关文章