CDN:ContentDistribute Network(内容分发网络)或Content Delivery Network(内容交付网络)
CDN形象的说有点类似于京东的物流模式,在全国各地建立物流点(缓存服务器),当有人从京东购买货物时(用户资源请求),京东根据用户的收货地址(CDN进行用户域名解析)找最近的或者最快的一个物流点进行派送(将访问用户连接到最近的缓存服务器进行资源传输)。
这么做尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
具体理解,我们先来看一下平时的上网基本原理:
当我们在浏览器地址栏输入域名www.****.com后,电脑会向本地DNS发送解析请求(会优先在本地缓存中检索相应域名对应的IP地址,如果没有就会再向上一级DNS,直到根DNS)。本地DNS再将指令上传至网络主DNS,给予解析的目标IP,向服务器发出请求建立连接,打开网页。如果是加入CDN服务的程序上就稍微复杂一点,在DNS过程中,上层请求如果是加入CDN服务的,则会给出一个cname网址(也就是【域名】在CDN系统中的一个花名)如www.***.icloud.com,后向CDN领域的DNS请求域名解析,经分析给出最近节点的IP(如上图,用户位置在深圳,便给出一个离他最近的深圳节点),减少了主干路服务器压力,也让用户体验大幅度提升,无等待打开页面,无卡顿视频等等。但总的来说,以上过程就是一个翻译的过程,你说的话电脑听不懂,需要翻译成另一种电脑和服务器之间能够沟通的语言,然后完成你的请求。
DNS:Domain NameSystem,域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
以上在互联网服务器端进行的处理就是在IDC机房。
讲到这里,我们大致已经能梳理三者之间的关系了,IDC是基础,纯物理硬件服务器服务;云平台是IDC基础上进行升级,服务器功能上再附加更多的综合服务;而CDN是基于IDC或者云平台的一种组网模式,通过分布于各地的缓存服务器,达到最快访问资源的目的。
CDN是一个经策略性部署的整体系统,包括**分布式存储**、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(TrafficManagement)是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。
CDN服务可用于确保快速可靠地分发静态内容,这些内容可以缓存,最适合在网速庞大的网络中存储和分发,这样就能把主干网络通道空出来给必须实时传输的动态内容,比如网络直播,降低时延。
当然,通过上面的结构图我们也能了解以下几个问题:
1. CDN加速是对网站所在服务器加速,还是对其域名加速?
CDN是只对网站的某一个具体的域名加速。如果同一个网站有多个域名,则访客访问加入CDN的域名获得加速效果,访问未加入CDN的域名,或者直接访问IP地址,则无法获得CDN效果。
2. CDN和镜像站点比较有何优势?
CDN对网站的访客完全透明,不需要访客手动选择要访问的镜像站点,保证了网站对访客的友好性。
CDN对每个节点都有可用性检查,不合格的节点会第一时间剔出,从而保证了极高的可用率,而镜像站点无法实现这一点。
CDN部署简单,对原站基本不做任何改动即可生效。
3. CDN和双线机房相比有何优势?
常见的双线机房只能解决网通和电信互相访问慢的问题,其它ISP(譬如教育网,移动网,铁通)互通的问题还是没得到解决。
而CDN是访问者就近取数据,而CDN的节点遍布各ISP,从而保证了网站到任意ISP的访问速度。另外CDN因为其流量分流到各节点的原理,天然获得抵抗网络攻击的能力。
4. CDN使用后,原来的网站是否需要做修改,做什么修改?
一般而言,网站无需任何修改即可使用CDN获得加速效果。只是对需要判断访客IP程序,才需要做少量修改。
5. 为什么我的网站更新后,通过CDN后看到网页还是旧网页,如何解决?
由于CDN采用各节点缓存的机制,网站的静态网页和图片修改后,如果CDN缓存没有做相应更新,则看到的还是旧的网页。
为了解决这个问题,CDN管理面板中提供了URL推送服务,来通知CDN各节点刷新自己的缓存。
在URL推送地址栏中,输入具体的网址或者图片地址,则各节点中的缓存内容即被统一删除,并且当即生效。
如果需要推送的网址和图片太多,可以选择目录推送,输入http://www.kkk.com/news 即可以对网站下news目录下所有网页和图片进行了刷新。
6. 能不能让CDN不缓存某些即时性要求很高的网页和图片?
只需要使用动态页面,asp,php,jsp等动态技术做成的页面不被CDN缓存,无需每次都要刷新。或者采用一个网站两个域名,一个启用CDN,另外一个域名不用CDN,对即时性要求高的页面和图片放在不用CDN的域名下。
7. 网站新增了不少网页和图片,这些需要使用URL推送吗?
后来增加的网页和图片,不需要使用URL推送,因为它们本来就不存在缓存中。
8. 网站用CDN后,有些地区反映无法访问了,怎么办?
CDN启用后,访客不能访问网站有很多种可能,可能是CDN的问题,也可能是源站点出现故障或者源站点被关闭,还可能是访客自己所在的网络出现问题,甚至我们实际故障排除中,还出现过客户自己计算机中毒,导致无法访问网站。 客户报告故障时,可随时联系我们24小时技术部进行处理。
9. 哪些情况不适用于CDN?
适度的用户人群:针对性、特定性、服务少数用户
极端本地化用户群:给定地理区域、本地化
监管和复杂的治理要求:用户数据敏感、数据管辖范围限制
这几类的情况不适用于CDN服务。