概念介绍
CDN
Content Delivery Network,缩写:CDN)是一种提供更快互联网访问的服务,通过在网络的边缘或核心交换区域部署内容代理服务器来实现。这些服务器利用全局负载调度机制来分发内容,从而构建了一个覆盖范围广泛的网络体系。
CDN演化进程
版本 | 时间 | 业务对象 | 功能描述 |
第一代CDN(Web-based) | 1998-2002 | 静态/动态网络数据 | 主要针对静态/动态web页面进行分发 |
第二代CDN(Video on demand-based) | 2002-2006 | 多媒体数据 | 主要针对大数据量的媒体流进行分发 |
第三代CDN(P2P-assisted) | 2006-2013 | 共享类数据 | 通过与P2P网络融合,降低服务端负载等 |
第四代CDN(cloud-based) | 2009-2013 | 整合类数据 | 通过与云计算平台融合,解决资源整合、服务统一管理等问题 |
统计时间:2013年,参考来源1 |
Domain
DNS
DNS 解析策略
常见的 DNS 解析策略包括:
-
轮询(Round Robin):DNS 服务器按顺序返回多个IP地址,实现请求的轮流分发到不同的服务器上。
-
权重(Weighted):为每个 IP 地址分配不同的权重,权重越高的服务器被选中的概率越大。
-
响应时间(Response Time):DNS 服务器可以通过测量服务器的响应时间来选择最快的服务器,将域名解析为对应的 IP 地址。
各个 DNS 解析产品可能采用的解析策略不一样,以 DNSPod 解析为例,他采用的就是权重 + 随机的策略
但基于 DNS 的负载均衡同样也存在一些弊端:
-
目前的 DNS 系统是需要经过递归服务器、顶级服务器、权威服务器以及众多缓存等多级解析的,在每一个环节都可能存在解析记录缓存。如果服务器 IP 发生变动,即使修改了 A 记录,也需要各级缓存失效后才能生效。而在解析生效前的这段时间,用户可能就会根据缓存记录访问到已经被更换过的服务器上,从而导致访问失败。
-
为了本地 DNS 服务器能够及时同步权威服务器上的最新记录,所以一般将 DNS 缓存刷新时间设置得比较小,这就会导致 DNS 频繁发起解析请求,从而造成额外的网络问题。
-
DNS 本身并不具备主动监测服务器负载情况或动态调整权重的能力,不能区分不同服务器之间的性能和负载差异,不能反映服务器当前的运行状态,所以一些大型网站总是使用 DNS 域名解析作为第一级负载均衡手段,然后在通过负载均衡服务器提供更高级的负载均衡算法(比如最少连接:将请求发送到拥有最少开放连接的服务器),从而完成最终请求。
CDN特点
CDN目的是实现WEB内容的负载均衡,防止出现访问请求热点,延时响应等WEB请求通病。CDN具有以下特点:
1、分布式存储;
2、通过智能DNS解析或http重定向实现内容分发的负载均衡;
3、全局负载均衡管理与内容管理;
CDN组成及功能
CDN通常由三个部分组成,分别是内容路由系统、内容管理系统、Cache节点网络。这三个部分分别构成了CDN的管理平面、控制平面和数据平面。
CDN基本原理
CDN是在用户和服务器之间增加Cache层,将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现。
第一,用户向浏览器提供要访问的域名;
第二,浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;
第三,解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
第四,缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
第五,缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,另一方面把获取的数据返回给客户端,完成数据服务过程;
第六,客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器
图形CDN的发展
图像CDN是一种专门用于转换、优化和分发图像的服务。它可以被视为一个API,用于处理访问网站上使用的图像。使用图像CDN加载的图像,不仅可以指定要加载的图像,还可以指定诸如大小、格式和质量等参数。这样,就可以为不同的用例创建图像的不同版本。39
vCDN的发展
vCDN是一种虚拟化的CDN软件应用程序,可以在专有、裸机、虚拟化或基于容器的基础架构或电信MEC平台上运行CDN工作负载。传统上,CDN软件平台与底层硬件紧密结合,因此缺乏灵活性。vCDN则可以在Internet交换处的CDN PoP、网络或本地边缘站点上运行。
CDN与Nginx
CDN缓存
CDN内容分发网络/Nginx负载均衡层是主要通过在CDN的节点或者是Nginx的节点上进行缓存来达到内容的缓存便于快速的查找资源。