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的源服务器要向复制服务器定时发出心跳来检测复制服务器状态,心跳这个词应该很普遍了。就是定时搞点事情做而已。
说完了事件产生,接下来说事件投递,也可以说事件分发,就是找人来处理这个事件,既然事件产生了。
分享到:
相关推荐
**什么是CDN** CDN全称为内容分发网络(Content Delivery Network),是一种分布式网络服务,旨在提高网络内容的访问速度和可用性。它通过在全球各地部署多个缓存节点,将网站的内容分发到离用户最近的节点上,使得...
标题 "ReplaceGoogleCDN:将 Google CDN 替换为国内的镜像" 指涉的是在遇到因网络限制导致的Google Content Delivery Network (CDN) 访问问题时,如何通过更换为国内镜像来优化加载速度和提高网页访问稳定性。...
《Origin CDN切换:提升下载速度的关键技术》 在数字化时代,内容分发网络(CDN,Content Delivery Network)已经成为互联网服务的重要组成部分,特别是在游戏下载、流媒体服务等领域。Origin是知名的游戏平台,它...
ReplaceGoogleCDN 是一款专为 Chrome 浏览器设计的扩展程序,它的主要功能是将网页中引用的 Google Content Delivery Network (CDN) 的资源替换为国内可访问的镜像站点,以解决由于网络限制导致的加载缓慢或无法加载...
如何搭建自己CDN服务器 目前在免费CDN市场上,360因为“免费”而越做越大,加速乐做的很早。但因免费的节点不多,好多用户都被强走了。安全宝现在也还不错。目前国内的免费CDN市场已呈现三足鼎立趋势。 可为什么我...
本文档是兄弟公司(Depending on the context, this could be translated as "Brother Company" or "Brother Corporation")针对DCP-9020CDN, MFC-9140CDN, 和MFC-9340CDW系列彩色激光多功能设备的一份中文维修手册。...
在本主题中,“cdn环境搭建与测试|cdn服务器搭建软件v1.7”涉及到如何配置和测试一个CDN环境,以及使用特定版本的CDN服务器搭建软件。 首先,我们需要理解CDN的基本工作原理。CDN主要由以下几个部分组成: 1. **源...
京瓷P50系列打印机,包括P5021cdn、P5021cdw、P5026cdn、P5026cdw以及P5018cdn,是京瓷公司推出的一系列高效能、多功能的办公设备。这些打印机以其出色的打印质量和稳定的性能赢得了市场的广泛认可。在日常使用中,...
5. **国内 CDN 服务选择**:研究国内可靠的 CDN 服务提供商,如阿里云 CDN 或腾讯云 CDN,它们提供了许多开源库的镜像,可以替代 Google CDN。 6. **跨域策略**:由于浏览器的同源策略,需要了解如何处理跨域请求,...
在Laravel框架中,CDN(内容分发网络)是一种重要的技术,用于加速静态资源的加载,提升用户体验,减轻服务器压力。Laravel CDN包是为了更方便地管理和利用CDN服务而设计的。以下是对这个主题的详细解释: 1. **...
本脚本用于清除AWS上的CDN(即cloudfront)的缓存 使CDN缓存过期,重新回源拉去
CDN(内容分发网络,Content Delivery Network)是一种分布式网络服务,它通过将网站内容缓存到全球多个边缘节点上,提高用户访问速度,降低服务器压力。CDN一键配置V2.0是针对Windows Server 2003系统设计的一款...
Vue.js阿里云CDN部署插件就是将Vue.js应用与阿里云CDN服务相结合的工具,它可以帮助开发者更方便、快捷地将Vue.js项目部署到阿里云上。 Vue.js项目的部署通常涉及构建、上传和配置等多个步骤。通过使用这个特定的...
CDN(内容分发网络)是一种基于互联网的分布式网络,旨在通过将内容缓存到世界各地靠近用户的节点上,以此来减少用户获取数据时的延迟。CDN技术的应用能够提高网络的可用性、可靠性和性能,对于图片和流媒体等需要...
网络多数据中心站点CDN网络构建实例精讲 本文将详细讲解Content Delivery Network(CDN)的设计与技术实现,以满足高并发访问的需求。CDN是一种位于网络层与应用层之间的网络应用,其目的是通过在现有的Internet中...
在本文中,我们将深入探讨如何使用ECharts、Element UI和Vue.js来构建一个基于CDN的项目。ECharts是一款由百度开发的开源JavaScript图表库,提供了丰富的可视化图表类型;Element UI则是一个流行的Vue.js组件库,它...
根据给定文件的信息,我们可以提炼出关于视频CDN(内容分发网络)架构的重要知识点。 ### 一、视频CDN架构概述 视频CDN架构是一种专门用于高效传输视频内容的技术框架,它通过在网络边缘部署缓存节点的方式,将...