cdn globule

CDN概要
Cdn可大可小,正如操作系统一般,可以高达数千万行代码,但是谁又能说这几行不构成os呢?
一句话,cdn由定位和文档复制构成。定位一般由dns服务器实现,用来寻找符合策略的服务器,复制则是cdn的本质了,也就是分发,将文档复制到复制服务器上。也就是说,解决用户到哪里去取,取什么两个问题,怎么定位到哪里,怎么取涉及到细节的东西,后面会有具体的分析。
下面这个图可能专业一点,不过本质的东西都是很简单的,达到本质的过程比较费劲。
直接看图

图解分析


以下就是转载的了,比较啰嗦,其实一个道理。
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作为一种支持大规模高质量的流媒体服务的关键技术,目前已经基本成熟,具备了广泛应用的能力。
开源cdn globule 深入分析
1. globue能做什么,定位和复制,这点从globule的代码里可以很容易看出来,实现了一个有着各种策略的dns服务器加上一系列复制策略的文档复制功能。
2.Globule dns服务器怎么实现的?接受dns request 请求(统一的dns数据格式,有udp和tcp两种),接受到请求包之后,根据配置的策略从复制服务器中选择一个,返回。
3.globule 复制功能有何特点?url和http。
先有个大致的了解,下面说说globule的整个架构,globule的整体架构采用了类似java的观察者模式,或者过滤器模式,由于globule是采用c++编写,用windowns的观点说,应该是事件响应模式,mvc,哈哈,反正都一个样。姑且用事件响应模式来说吧。事件产生,事件投递,事件触发,事件处理。一般事件响应都有这几个过程,不过简单复杂省略增加一些,根还是这些。事件产生,这个比较广泛,到处都可以产生,事件投递有点约束,异步事件要放入到异步事件队列,同步事件则可能马上就要触发事件,事件处理。
差点忘了,要说的事件类型,有一点得指出,globule是基于apache的第三方模块规则开发的,也就是它属于apache的一个插件或者一个模块而已。
所以globule的事件类型有如下几种
REQUEST_EVT=0, LOGGING_EVT, INVALID_EVT, UPDATE_EVT, FILE_MONITOR_REG,
    FILE_MONITOR_UNREG, HEARTBEAT_EVT, HEART_BEAT_REG, SWITCH_EVT,
    WRAPUP_EVT, REDIRECT_EVT, LOAD_EVT, REPORT_EVT, REGISTER_EVT
主要有如下几大类:1.与http有关的,REQUEST,LOGGING,WRAPUP
2. 与文档相关的:UPDATE FILE_MONITOR FILE_MONITOR_UNREG LOAD
3. 与globule复制策略有关的:REPORT SWITCH
4. 与事件本身有关的 REGISTER HEART_BEAT_REG
5. 还有一个实在不好归类,它是HEARTBEAT 心跳事件,globue的源服务器要向复制服务器定时发出心跳来检测复制服务器状态,心跳这个词应该很普遍了。就是定时搞点事情做而已。
说完了事件产生,接下来说事件投递,也可以说事件分发,就是找人来处理这个事件,既然事件产生了。

猜你喜欢

转载自cooldatabase.iteye.com/blog/547657
cdn
今日推荐