了解CDN
Table of Contents
1 简单说明
之前公司项目上线后会因为没有对修改过的CDN缓存资源更新时间戳而出现问题。本文主要就是介绍一下什么是CDN,CDN的实现原理和CDN技术。
2 什么是CDN
CDN即内容分发网络
- 内容一般是指一些静态资源,比如一张图片,一个文本文件,一个视频,一个CSS,一个JS等等,任何以文件形式存储的;
- 分发是指内容部署在CDN网络中,用户快速访问与就近接入;
- 网络就是指部署于全国或者全世界的一大堆服务器,这些服务器基于当前互联网的基础架构并在其上层再构成一个网络,这个网络专为资源分发而生。
CDN将网站的内容缓存在网络边缘(离用户接入网络最近的地方), 然后在用户访问网站内容的时候,通过调度系统将用户的请求路由引导到离用户接入网络最近或者访问效果最好的缓存服务器上, 由该缓存服务器为用户提供内容服务;和直接访问源站相比,这种方式缩短了用户和内容之间的网络距离,可以达到加速,进而提高用户体验。
3 CDN实现原理
3.1 非缓存访问方式
- 用户向浏览器提供要访问的域名;
- 浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址;
- 浏览器使用所得到的IP地址,向域名的服务主机发出数据访问请求;
- 浏览器根据域名主机返回的数据显示网页的内容。
3.2 CDN缓存访问方式
- 用户向浏览器提供要访问的域名;
- 浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
- 此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
- 缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
- 缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,另一方面把获取的数据返回给客户端,完成数据服务过程;
- 客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
4 CDN技术
4.1 内容管理技术
本地内容管理主要包括以下几个方面。
- 本地内容索引。本地内容管理首先依赖于对本地内容的了解。包括每个Cache设备上内容的名称、URL、更新时间、内容信息等。本地内容索引是实现基于内容感知调度的关键。
- 本地内容拷贝。通常,为了提高存储效率,同一个内容在一个CDN节点中仅存储一份,即仅存储在某个特定的Cache上。
- 本地内容访问状态信息收集。搜集各个Cache设备上各个内容访问的统计信息,Cache设备的可用服务提供能力及内容变化的情况。
4.2 内容分发技术
内容分发包含从内容源到CDN边缘的Cache的过程。从实现上看,有两种主流的内容分发技术:PUSH和PULL.
- PUSH是一种主动分发的技术。通常,PUSH由内容管理系统发起,将内容从源或者中心媒体资源库分发到各边缘的Cache节点。
- PULL是一种被动的分发技术。通常,PULL分发由用户请求驱动。当用户请求的内容在本地的边缘Cache上不存在(未命中)时,Cache启动PULL方法从内容源或者其他CDN节点实时获取内容。在PULL方式下,内容的分发是按需的。