CDN
的四大关键技术
随着宽带网络和宽带流媒体应用的兴起,
CDN
(通常被称为内容分发网络
Content distribution network
,有时也被称作内容传递网络
Contentdeliverynetwork
)作为一种提高网络内容,特别是提高流媒体内容传输的服务质量、节省骨干网络带宽的技术,在国内外得到越来越广泛的应用。
CDN
的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等。
内容路由技术
CDN
负载均衡系统实现
CDN
的内容路由功能。它的作用是将用户的请求导向整个
CDN
网络中的最佳节点。最佳节点的选定可以根据多种策略,例如距离最近、节点负载最轻等。负载均衡系统是整个
CDN
的核心,负载均衡的准确性和效率直接决定了整个
CDN
的效率和性能。
通常负载均衡可以分为两个层次:全局负载均衡(
GSLB
)和本地负载均衡(
SLB
)。全局负载均衡(
GSLB
)主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域)。因此,就近性判断是全局负载均衡的主要功能。本地负载均衡一般局限于一定的区域范围内,其目标是在特定的区域范围内寻找一台最适合的节点提供服务,因此,
CDN
节点的健康性、负载情况、支持的媒体格式等运行状态是本地负载均衡进行决策的主要依据。
负载均衡可以通过多种方法实现,主要的方法包括
DNS
、应用层重定向、传输层重定向等等。
对于全局负载均衡而言,为了执行就近性判断,通常可以采用两种方式,一种是静态的配置,例如根据静态的
IP
地址配置表进行
IP
地址到
CDN
节点的映射。另一种方式是动态的检测,例如实时地让
CDN
节点探测到目标
IP
的距离(可以采用
RRT
,
Hops
作为度量单位),然后比较探测结果进行负载均衡。当然,静态和动态的方式也可以综合起来使用。
对于本地负载均衡而言,为了执行有效的决策,需要实时地获取
Cache
设备的运行状态。获取的方法一般有两种,一种是主动探测,一种是协议交互。主动探测针对
SLB
设备和
Cache
设备没有协议交互接口的情况,通过
ping
等命令主动发起探测,根据返回结果分析状态。另一种是协议交互,即
SLB
和
Cache
根据事先定义好的协议实时交换运行状态信息,以便进行负载均衡。比较而言,协议交互比探测方式要准确可靠,但是目前尚没有标准的协议,各厂家的实现一般仅是私有协议,互通比较困难。
内容分发技术
内容分发包含从内容源到
CDN
边缘的
Cache
的过程。从实现上看,有两种主流的内容分发技术:
PUSH
和
PULL.
PUSH
是一种主动分发的技术。通常,
PUSH
由内容管理系统发起,将内容从源或者中心媒体资源库分发到各边缘的
Cache
节点。分发的协议可以采用
HTTP/FTP
等。通过
PUSH
分发的内容一般是比较热点的内容,这些内容通过
PUSH
方式预分发(
Preload
)到边缘
Cache
,可以实现有针对的内容提供。对于
PUSH
分发需要考虑的主要问题是分发策略,即在什么时候分发什么内容。一般来说,内容分发可以由
CP
(内容提供商)或者
CDN
内容管理员人工确定,也可以通过智能的方式决定,即所谓的智能分发。它根据用户访问的统计信息,以及预定义的内容分发的规则,确定内容分发的过程。
PULL
是一种被动的分发技术,
PULL
分发通常由用户请求驱动。当用户请求的内容在本地的边缘
Cache
上不存在(未命中)时,
Cache
启动
PULL
方法从内容源或者其他
CDN
节点实时获取内容。在
PULL
方式下,内容的分发是按需的。
在实际的
CDN
系统中,一般两种分发方式都支持,但是根据内容的类型和业务模式的不同,在选择主要的内容分发方式时会有所不同。通常,
PUSH
的方式适合内容访问比较集中的情况,如热点的影视流媒体内容;
PULL
方式比较适合内容访问分散的情况。
在内容分发的过程中,对于
Cache
设备而言,关键的是需要建立内容源
URL
、内容发布的
URL
、用户访问的
URL
,以及内容在
Cache
中存储的位置之间的映射关系。
内容存储技术
对于
CDN
系统而言,需要考虑两个方面的内容存储问题。一个是内容源的存储,一个是内容在
Cache
节点中的存储。
对于内容源的存储,由于内容的规模比较大(通常可以达到几个甚至几十个
TB
),而且内容的吞吐量较大,因此,通常采用海量存储架构。如
NAS
和
SON.
对于在
Cache
节点中的存储,是
Cache
设计的一个关键问题。需要考虑的因素包括功能和性能两个方面:在功能上包括对各种内容格式的支持、对部分缓存的支持,在性能上包括支持的容量、多文件吞吐率、可靠性、稳定性。
其中,多种内容格式的支持要求存储系统根据不同文件格式的读写特点进行优化,以提高文件内容读写的效率,特别是对流媒体文件的读写。
部分缓存能力指流媒体内容可以以不完整的方式存储和读取。部分缓存的需求来自用户访问行为的随机性,因为许多用户并不会完整地收看整个流媒体节目,事实上,许多用户访问单个流媒体节目的时间不超过
10
分钟。因此,部分缓存能力能够大大提高存储空间的利用率,并有效地提高用户请求的响应时间。但是部分缓存可能导致内容出现碎片问题,需要进行良好的设计和控制。
Cache
存储的另一个重要因素是存储的可靠性,目前,多数存储系统都采用了
RAID
技术进行可靠存储。但是不同设备使用的
RAID
方式各有不同。
内容管理技术
内容管理在广义上涵盖了从内容的发布、注入、分发、调整、传递等一系列过程。在这里,内容管理重点强调内容进入
Cache
点后的内容管理,我们称为本地内容管理。
本地内容管理主要针对一个
CDN
节点(由多个
CDN Cache
设备和一个
SLB
设备构成)进行。本地内容管理的主要目标是提高内容服务的效率,提高本地节点的存储利用率。通过本地内容管理,可以在
CDN
节点实现基于内容感知的调度,通过内容感知的调度,可以避免将用户重定向到没有该内容的
Cache
设备上,从而提高负载均衡的效率。通过本地内容管理还可以有效地实现在
CDN
节点内容的存储共享,提高存储空间的利用率。
在实现上,本地内容管理主要包括如下几个方面。
一是本地内容索引。本地内容管理首先依赖于对本地内容的了解。包括每个
Cache
设备上内容的名称、
URL
、更新时间、内容信息等。本地内容索引是实现基于内容感知的调度的关键。
二是本地内容拷贝。通常,为了提高存储效率,同一个内容在一个
CDN
节点中仅存储一份,即仅存储在某个特定的
Cache
上。但是一旦对该内容的访问超过该
Cache
的服务提供能力,就需要在本地(而不是通过
PUSL
的方式)实现内容的分发。这样可以大大提高效率。
三是本地内容访问状态信息收集。搜集各个
Cache
设备上各个内容访问的统计信息,
Cache
设备的可用服务提供能力及内容变化的情况。
可以看出,通过本地内容管理,可以将内容的管理从原来的
Cache
设备一级,提高到
CDN
节点一级,从而大大增加了
CDN
的可扩展性和综合能力。
综上所述,
CDN
作为一种支持大规模高质量的流媒体服务的关键技术,目前已经基本成熟,具备了广泛应用的能力。