分布式还是混合式? 谈CDN架构对服务质量的影响
传统分布式模型
通 常,内容分发网络(CDN)採用分布式模型。在这样的模型里, 用户的文件存放在一个源server上。而且由大量边缘server负责分发这些文件。这些边缘server的磁盘空间比較小。所以大多数的文件被放在内存中。
因此,当一个 文件传输至终端用户之前。假设该文件在边缘的CDN缓存server上不存在,那么这些server会先去原始server请求该文件或流。
这样的分布式模型起 源于20世纪末,也就是在那时全球第一个CDN開始出现。当时在2000年的时候。CDN的主要挑战是从互联网服务提供商(ISP)的内部网站 (POPs)去传输网页内容。每个接入POP的终端用户都会高速获得响应内容,而不是CDN首先通过网络--当时依旧非常慢--来訪问源server。由于在这 种分布式CDN架构里,边缘server部署是部署在ISP内部用来缓存从源server拉下来的内容的。通过这样的方式,CDN能够非常easy把受欢迎的内容发送给大量的 互联网用户。
多媒体趋势暴露了传统分布式模型的缺点
然 而,随着互联网带宽和连接的爆炸性增长。传统的分布式架构越来越不明显。
比如。欧洲有一个很密集的互联网干线用来连接公共的网络交换点和私人的p2p网 络。并且绝大多说终端用户都能够转让自己的入网许可。在这种环境下,为每一个POP网络部署边缘server就不是很有意义,虽然CDN的可扩展性和负载均衡的 能力变得很重要。
同一时候,在线多媒体消费的变化揭示了CDN传统分布式结构的局限性。因为多媒体文件的并发请求数在以几何形式增长,这导致 了流媒体服务、多媒体广告、用户制作的视频以及在线文档等文件量也在不断增多。此外。每一个视频必须保证在不同的设备和平台上可用使用不同的格式和分辨率来 观看。同一时候,因为重放设备和终端用户带宽的增强,视频文件的平均大小也在不断增大。全部这些因素使得从边缘server缓存分发多媒体内容变得更加困难。为了满 足需求,磁盘空间有限的边缘server将不断地刷新其部分缓存,为当前必需要从源server载入的新文件腾出空间。这对传统的CDN分布式架构来说。导致了大量的
开销 :越来越多的边缘server须要提供同样数量的数据、大量的内部数据须要通过越来越大的连接管道从源server发送到边缘server。更要紧的是。对终于用户来说,这 可能会导致波动延迟和较低的服务质量(QoS) 。
RAMBLA
混合式CDN:一个完美的匹配多媒体传输架构
为了解决这些问题。当Rambla CDN在2005年被又一次设计时。我们决定设计自己的混合式CDN架构。
在这样的混合式设计结构中,边缘server和源server之间没有差别。而且全部的server进行了优化以便从他们各自的缓存和磁盘上分发内容。这使得CDN更easy适应如分发多媒体数据的需求,同一时候使用相对少量的高端server。
在我们的混合式CDN架构中,每一个CDNserver都能够扮演一个源server的角色:提供存储和分发数据到其它的CDNserver。每一个CDNserver也能够扮演一个边缘server的角色:通过专用的存储区域网络(SAN),直接从其缓存分发频繁被訪问的内容,从磁盘分发非常少被訪问的内容。受益于当前的互联网基础架构。我们的CDNserver不再须要部署到每一个ISP网络内,仅仅要实现全部的CDNserver都有一个高速的、高带宽连接到主网络和ISPs(通过对等协议),这样就能满足全欧洲覆盖并能保证较快的下载速度以及为全部终于用户提供一个可靠的连接。
自推出 RAMBLA CDN
以来,我们一直在使用最新的技术来优化这样的混合式CDN结构。尤其是,通过使用动态的公布集成的云实例。使得我们的CDN结构拥有了可即时扩展的能力,从而使得从性能上和地理上扩展CDN都成为可能。
更进一步:使用最高质量的服务分发多媒体数据
我们最新的研发方向,与IWT(一家科学技术创新机构)合资,旨在提供一个最佳的和稳定的服务质量(QoS)。超
过一定水平,Qos非常难去衡量,由于它和每一个流或者下载都不同。比如。假设边缘server的缓存中有视频文件。那么将对终端用户观看视频的体验产生重大影响。
因此,非常多CDN的仅仅是着重于实现足够的QoS,即一个可满足绝大多数终端用户的惬意度就可以。尽管这样的方法可能足以满足传统的在线视频平台,但这不能满足 新一代的增值服务如流式的想用户应用程序传输音频和视频或者机顶盒,也就是所说的OTT服务。
我们混合式的Rambla CDN被设计成通过平等快速以及可靠的传输全部内容来提供高质量的Qos。这就是我们新的SkyWay软件。
这样的分布式后端组件简 化全部硬盘訪问-指向一个专用SAN(存储区域网络)-来确保随机读操作能够以更快的速度完毕,此外,它还持续性的监控CDNserver和CDNserver上的资
源,保证不论是缓存中还是硬盘中都有足够的资源来供CDN优化传输使用。为了达到这一目标,SkyWay能够动态推迟运行时间不是非常重的进程、限制其它进 程资源的有效性、分配任务到其它server、释放并又一次创建已有资源。
通过这样的方式,SkyWay保证服务质量在全部情况下任然最优。
1. 本文由mathew翻译
2. 本文译自rambla.eu文章distributed or hybrid:how cdns architecture affects your quality service
3. 转载请务必注明本文出自:程序猿学架构(微信号:archleaner
)
4. 很多其它文章请扫码:
分布式还是混合式? 谈CDN架构对服务质量的影响的更多相关文章
- Hadoop HDFS分布式文件系统设计要点与架构
Hadoop HDFS分布式文件系统设计要点与架构 Hadoop简介:一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群 ...
- 简化的CDN架构分析
CDN架构的设计目标是通过复制系统资源(即Web服务器)的方式来获得高性能和高扩展性,为了能确保在海量内容下可以稳定提供高性能的服务.系统资源的复制可以在本地和地理两个尺度上进行.如果是本地复制则响应 ...
- [转]vnpy乱乱谈 02架构
vnpy乱乱谈 02架构 转自:http://101.132.65.227/?p=51 听到架构这个词先不要害怕. 其实这部分内容还是挺简单的. 一般而言, 一个交易系统我们可以简单的分成输入, (系 ...
- 分布式缓存系统 Memcached 整体架构
分布式缓存系统 Memcached整体架构 Memcached经验分享[架构方向] Memcached 及 Redis 架构分析和比较
- [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构
[源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...
- 阿里分布式服务框架Dubbo的架构总结
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...
- 浅谈SDN架构下的运维工作
导读 目前国内的网络运维还处于初级阶段,工作人员每天就像救火一样,天天疲于奔命.运维人员只能埋头查找系统运行的日志,耗时耗力,老眼昏花不说,有时候忙了半天还一无所获,作为运维工程师的你,有木有遇到过类 ...
- 以用户注册功能模块为例浅谈MVC架构下的JavaWeb开发流程
JavaWeb应用开发,撇开分布式不谈,只讨论一个功能服务应用的开发,无论是使用原生的Servlet/JSP方案,还是时下的SSM架构,都有一套经过工程实践考验的最佳实践,这综合考虑了团队协作.项目管 ...
- Java高并发高性能分布式框架从无到有微服务架构设计
微服务架构模式(Microservice Architect Pattern).近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注 微服务架构是一种架构模式,它提倡将单一应用程序划分成 ...
随机推荐
- linux 备份日志文件
seo说要备份文件,然后自己搞不定,每天一份文件.写了个shell,加了个crontab -e任务.每天执行一次. crontab: 59 23 * * * /root/sh/dumpApacheLo ...
- OSI参考模型 VS TCP/IP参考模
OSI参考模型 VS TCP/IP参考模 TCP/IP各层对应的协议 TCP/IP的层 对应的TCP/IP协议 ...
- LPC1114
时钟配置: 3个时钟源:系统振荡源(system),IRC振荡源,(IRC,内部RC振荡器)看门狗振荡源(WatchDog) MAINCLKSEL:主时钟源选择寄存器(复位值:0) 只用了前两位: 0 ...
- Python定义常量
用Python实现常量 定义 # coding=utf-8 # const.py class ConstAssignError(Exception): pass class _const(object ...
- python 包导入规则
python 包导入规则,恶心了一天,终于搞清楚了 1.目录 speed data __init__.py __init__.py static templates view __init__.py ...
- Multilingual App Toolkit v2.2 release
Multilingual App Toolkit v2.2 release Today we released Multilingual App Toolkit v2.2. This release ...
- 在DJANGO的类视图中实现登陆要求和权限保护
以前接触的是基于函数的保护,网上材料比较多. 但基于类视图的很少. 补上! Decorating class-based views 装饰类视图 对于类视图的扩展并不局限于使用mixin.你也可以使用 ...
- Haskell高阶函数
Haskell functions can take functions as parameters and return functions as return values. A function ...
- apk,task,android:process与android:sharedUserId的区别
apk一般占一个dalvik,一个进程,一个task.通过设置也可以多个进程,占多个task. task是一个activity的栈,其中"可能"含有来自多个App的activity ...
- opengl performance optimization
OpenGL 性能优化 作者: Yang Jian (jyang@cad.zju.edu.cn) 日期: 2009-05-04 本文从硬件体系结构.状态机.光照.纹理.顶点数组.LOD.Cull等方面 ...