内容分发网络

来源:互联网 发布:java语言就业培训 编辑:程序博客网 时间:2024/04/28 10:42
1 CDN简介
Content Delivery Network(CDN)是以现有互联网为基础的专业化综合应用平台, 它由分布在网络边缘的应用服务器群组成, 通过应用层的内容智能路由, 自动保证用户实现就近访问, 为网站提供高效、稳定、安全的内容和应用的分布服务。举个例子来说, 当某用户访问网站时, 网站会利用全球负载均衡技术, 将用户的访问指向到距离用户最近的正常工作的缓存服务器上, 直接响应用户的请求。当用户访问已经使用了CDN 服务的网站时, 其解析过程与传统解析方式的最大区别就在于网站的授权域名服务器不是以传统的轮询方式来响应本地DNS的解析请求, 而是充分考虑用户发起请求的地点和当时网络的情况, 来决定把用户的请求定向到离用户最近同时负载相对较轻的节点服务器上。通过用户定位算法和服务器健康检测算法综合后的数据, 可以将用户的请求就近定向到分布在网络边缘的服务器上, 保证用户的访问能得到更及时可靠的响应。由于大量的用户访问都由分布在网络边缘的CDN 节点服务器直接响应了, 这就不仅提高了用户的访问质量, 同时有效地降低了源服务器的负载压力。


2 CDN的关键技术
主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等。


2.1 内容路由技术
内容路由技术的作用是将用户请求导向整个CDN 网络中的最佳节点。最佳节点的选择可以运用多种评估策略来实现, 例如用户与服务器距离最近、服务器负载最轻等。这是CDN 的核心, 它决定了整个CDN 的效率和性能。内容路由技术可以通过多种方法实现, 包括DNS、应用层重定向、传输层重定向等。


2.2 内容分发技术
内容分发技术指将内容从源到复制缓存到CDN 边缘服务器的过程。从实现上看,有两种主流的分发技术: PUSH和PULL。
PUSH 是一种主动分发的技术。通常, PUSH 由内容管理系统发起, 将内容从源或者中心媒体资源库分发到各边缘的Cache 节点。分发的协议可以采用HTTP、FTP、RSTP等。对于PUSH 分发需要考虑的主要问题是分发策略, 即在什么时候分发什么内容, 可以根据用户访问的统计信息, 以及预定义的内容分发规则来确定。
PULL是一种被动的分发技术, PULL分发通常由用户请求驱动。当用户请求的内容在本地的边缘Cache上不存在时, Cache启动PULL方法从内容源或者其他CDN 节点实时获取内容。在PULL方式下, 内容的分发是按需的。
在内容分发的过程中, 对于Cache设备而言, 关键的是需要建立内容源URL、内容发布的URL、用户访问的URL, 以及内容在Cache中存储的位置之间的映射关系。


2.3 内容存储技术
对于CDN 系统而言, 需要考虑两个方面的内容存储问题。一个是内容源的存储,一个是内容在Cache节点中的存储。对存储性能的要求是吞吐量大、可靠性和稳定性。
对于内容源的存储由于内容的规模比较大(通常可以达到几TB,甚至几十TB)/吞吐量较大,因此,通常采用海量存储架构。如:网络附加存储(NAS)和存储区域网络(SAN)。对于在Cache设备中的存储是Cache设备设计的一个关键问题需要考虑的因素包括功能和性能两个方面:
在功能上包括对各种内容格式的支持,对部分缓存能力的支持。
在性能上包括支持的容量、多文件吞吐率、可靠性、稳定性。
其中多种内容格式的支持要求存储系统根据不同文件格式的读写特点进行优化以提高文件内容读写的效率,特别是针对流媒体文件的读写。
部分缓存能力指流媒体内容可以以不完整的方式存储和读取,部分缓存的需求来自用户访问行为的随机性。许多用户并不会完整地收看整个流媒体节目,访问单个流媒体节目的时间常常不超过10min。因此部分缓存能力能够大大提高存储空间的利用率,并有效地提高用户请求的响应时间,但是部分缓存可能导致内容的碎片问题需要进行良好的设计和控制。


2.4 内容管理技术
本地内容管理主要针对一个CDN节点(由多个CDN Cache设备和一个本地负载均衡设备构成)进行, 即决定CDN节点中应该存储何种资源以及如何进行节点内容更新。本地内容管理的主要目标是提高内容服务的效率, 提高本地节点的存储利用率。通过本地内容管理, 可以在CDN节点实现基于内容感知的调度, 通过内容感知的调度, 可以避免将用户重定向到没有该内容的Cache设备上,从而提高负载均衡的效率。通过本地内容管理还可以有效地实现在CDN节点内容的存储共享, 提高存储空间的利用率。