一、什么是CDN
CDN的全称是(Content Delivery Network),即内容分发网络。其目的是通过在现有的internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。
CDN优势:
(1)CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;
(2)大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载。
二、CDN举例讲解
1、我们都使用过京东在网上购物,都知道京东在全国各地有很多的仓库,当我们在APP上下单后,会优先从最近的仓库挑选出你下单的产品,然后发货。这也是为什么京东物流这么快的原因
2、我们平时看直播也用到了CDN,比如说有一位主播在杭州开直播,那么这些数据肯定是放在杭州某台服务器上,然后有很多用户观看,这些用户分布在全国各地,有上海,有北京,当所有的用户访问这台服务器肯定会造成直播卡顿,这时候在全国各地部署CDN,用户只需要访问离自己最近的CDN即可,就可以分摊服务器压力,增加用户体验
三、CDN的基本工作流程
1、传统网站请求响应
这也是一道常见的面试题,在浏览器地址栏里输入网址后,按下回车发生了什么?
用户在自己的浏览器中输入要访问的网站域名。
-
浏览器向本地DNS服务器请求对该域名的解析。
-
本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。
-
本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以迭代方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。
-
浏览器得到域名解析结果,就是该域名相应的服务设备的IP地址 。
-
浏览器获取IP地址之后,经过标准的TCP握手流程,建立TCP连接。
-
浏览器向服务器发起HTTP请求。
-
服务器将用户请求内容传送给浏览器。
-
经过标准的TCP挥手流程,断开TCP连接。
2、引入CDN后,访问网站的步骤
-
当用户点击网站页面上的内容URL,先经过本地DNS系统解析,如果本地DNS服务器没有相应域名的缓存,则本地DNS系统会将域名的解析权交给CNAME指向的CDN专用DNS服务器。
-
CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回给用户。
-
用户向CDN的全局负载均衡设备发起URL访问请求。
-
CDN全局负载均衡设备根据用户IP地址,以及用户请求的URL,选择一台用户所属区域的区域负载均衡设备,并将请求转发到此设备上。
-
基于以下这些条件的综合分析之后,区域负载均衡设备会选择一个最优的缓存服务器节点,并从缓存服务器节点处得到缓存服务器的IP地址,最终将得到的IP地址返回给全局负载均衡设备:
-
根据用户IP地址,判断哪一个边缘节点距用户最近;
-
根据用户所请求的URL中携带的内容名称,判断哪一个边缘节点上有用户所需内容;
-
查询各个边缘节点当前的负载情况,判断哪一个边缘节点尚有服务能力。
-
全局负载均衡设备把服务器的IP地址返回给用户。
-
用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
四、CDN组成
中心节点
中心节点包括CDN网管中心和全局负载均衡DNS重定向解析系统,负责整个CDN网络的分发及管理。
边缘节点
CDN边缘节点主要指异地分发节点,由负载均衡设备、高速缓存服务器两部分组成。
负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时还负责收集节点与周围环境的信息,保持与全局负载均衡DNS的通信,实现整个系统的负载均衡。
高速缓存服务器(Cache)负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中Cache服务器就像网站的原始服务器一样,响应终端用户的请求。因其距离用户更近,故其响应时间才更快。
中心节点就像仓配网络中负责货物调配的总仓,而边缘节点就是负责存储货物的各个城市的本地仓库。