热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CDN总结之一

前言:一直想做一个CDN的全面总结,虽然没有做出什么东西,但是要做到知其所以然。辛苦总结,请尊重作者。PDF版本已经上传ht

前言:一直想做一个CDN的全面总结,虽然没有做出什么东西,但是要做到知其所以然。辛苦总结,请尊重作者。


PDF版本 已经上传http://ishare.iask.sina.com.cn/f/25611471.html

----------------------------------------------------------------------------------------------

1什么是CDN


1.2 背景

互联网已成成为人们生活不可或缺的部分。互联网应用的快速发展,应用转变趋势为:强调互操作性、以用户为中心的设计、在线服务、允许多终端多网络的接入,互联网也相应的从一个基于内容的通信架构(content-based communication)成为了一个基于社会的组织网络(social-based community network)。新的应用不仅仅要求网络的简单性与扩展性,还包括对可用性、可靠性、可扩展性,以及具体服务的其他特性要求,为了克服目前网络的缺点、满足未来应用的使用,CDN是一个重要的手段。[1]


1.2.1 应用转变趋势

Higher Scalability(高可扩展性):最新的数据(June, 2011)显示,互联网用户已经达到了6.9billion,而且这一数字持续增长。[2]同时,不同的电子终端也接入到网络。这些需要网络以低成本、高效率的方式分发和处理内容。

Higher Capability(高能力性):互联网上数据类型的增多以及其大小的大幅增加,要求网络有更高的处理、存储和通信能力。

Higher quality of service(QoS):目前流行的流媒体应用和SNS应用,都需要有较高的QoS保证,例如:快速启动(lower startup delay,即用户从发出请求到被相应的时间间隔)、低时延、高连接性等。

Stronger interactivity(更高的交互性):互联网已成为一个社区性网络,内容的提供不再是单靠以往从单一数据源获得数据,现在人人都可以成为内容的创建者和发送者,即除了以往从client到central server的模式,增加了users-to-users的模式。

Heterogeneity(异构性):重点体现在两个方面:设备与网络,即异构的设备终端和接入网络。

安全性:不同的应用对网络安全要求具有差异性。


1.2.2 IP网络的局限性

自从DARPA网络和Galactic Network概念[3](由J.C.R. Licklider提出,允许用户在世界的任意地方搜集数据、处理程序)在1962年产生以来,互联网改变了计算机和通信世界。其主要目的就是为了资源的共享。

基于包交换(packet-switched)的IP网络采用端到端的原理[4],其设计原理可以概括为:分层、基于包交换、合作网络、端到端。[5]


基于TCP/IP协议簇的网络分层

从上图可以看到基于TCP/IP协议的网络分层结构,主要特点:

①一个漏斗状的模型,用最简单的中间网络层支持复杂多样的传输层和链路层,漏斗的中间是整个网络的关键,极小的限制上层和下层。

②端到端。将网络功能尽量精简,可以变相的认为是将应用特定的功能移出了网络核心中,只是提供通用的服务,这样的好处有:减少核心网络的复杂性、网络通用性、应用不依赖于网络的操作,增加了可靠性。[4]

③尽最大努力的传输、无状态,保证了效率。

其主要的缺点:

a.               可用性。网络上应用的数据种类丰富、数据量巨大,导致带宽消耗迅速,需要保证数据和相关应用服务的可用性。

b.               安全性。只能提供端到端的保证,不能满足各异的应用安全要求,例如:内容私密性、完整性、攻击时的服务可用性等。

c.                其他:目前的应用与服务在功能、速率、效率、成本方面要求多样化,对网络也有相应的能力要求。


1.2.3 解决的思路

虽然IP网络简单、可扩展,但是缺少QoS保证、通信控制和监控管理机制。为了克服上述缺点,有两个思路:

a.     增加新的设计:即在现有的网络结构基础上,增加新的组件或功能。

b.     采用全新的设计:摒弃原有设计,针对新出现的要求进行设计。

(CDN思路)在通用IP网络之上建立虚拟的覆盖网,从而在IP中添加额外的功能,包括安全性、弹性、资源的控制性,此外还有对异构网络的兼容性。


1.3 概念

CDN通过利用内容副本达到最大化网络带宽、改进访问性和内容正确性的效果。[6]

CDN是由分散的主机组成,通过维护数据副本使得在用户从网络获得数据时达到带宽最大化。[1]

CDN通过提供服务来改进网络性能,包括带宽最大化(maximizing bandwidth)、改进可用性(improving accessibility)、通过副本保证数据正确性。通过将内容发送到靠近用户的缓存或边缘服务器,提供快速可靠的应用和服务。[7]


1.3.1 典型组成

一系列代理服务器(surrogate servers):分布式的、存储源服务器内容;

路由器和网络设备:发送内容请求到最合适的地方和代理服务器;

统计机制:源服务的日志和信息


1.3.2 两个信息流

    客户端和代理服务器之间;代理服务器和源服务器之间


1.3.3 逻辑组件

CDN逻辑上有内容交付(content-delivery)、请求重路由、内容分布(distribution)和计费组件构成。

内容交付组件包含了一系列的服务器用来向用户分发数据副本。

请求重路由组件负责将用户的请求转发到合适的边缘服务器。同时请求路由组件还和内容分发组件进行通信,从而保证CDN缓存内容的有效性。

内容分布组件将源服务器的内容存储到边缘服务器并保证缓存一致性。

计费组件记录用户访问信息和服务器使用信息。该信息被用来进行通信监控和用户付费。


1.4 历史

在过去几十年的发展中,随着因特网的成长和成熟,网络通信量剧增,主要是访问量的增加、系统复杂性的提高和内容的丰富。[8]

在CDN尚未出现的十年中,互联网上的内容主要是小规模的文本和图片。为了更加高效的传输这些内容,早期的CDN提供者通常采用高度分布式的CDN。这种CDN被描述为深入到ISP中(deep into ISPs)[9],主要部署在接入网中(Point of Presence)。其重要思想就是把内容放到离用户更近的地方,来提升用户访问的性能和吞吐量。具体实施的主要方式有:增加或者改进硬件(高快的处理器、更大的内存和硬盘、更高的带宽)、缓存代理(靠近用户)。使用缓存代理时,用户可以通过设置浏览器,将其请求发送到缓存服务器而不是源服务器;同时缓存的级别也有所不同,例如有本地缓存、区域缓存、全球性缓存。

随着应用的增长和访问速度的加快,多媒体数据分发成为用户的宠儿。基于CDN建立大规模数据中心成为保证大规模多媒体数据分发高效性的有力工具。这个方法可以定义为将ISPs带到了家庭[9],即在有限的地点,部署用高速网络连接的内容存储服务器,从而建立大型数据中心。采用这种方式的CDN,实际中包含了一系列服务器,每个服务器承担了一部分对同一站点请求访问的负载。[10]具备一定的可扩展性和容错性,如何减少配置开销和加快部署速度成为主要问题。

将P2P技术融入到CDN中。P2P技术是利用最终用户的资源来解决大规模用户下对大容量数据请求的情况。P2P有效解决了扩展性的问题,能够有效的降低对服务器的要求。将P2P技术融入到CDN中,就是为了达到CDN中的可靠性和可管,与P2P的可扩展性结合的效果。

现在也有很多云服务提供商结合CDN推出了一系列的服务。在云CDN中进行内容分发,其主要目的是为了在已存在的云之间建立高速的连接,允许用户将内容的智能定位和存储。


1.5 市场

2009年CDN的增长达到两位数,利润上升了16.4%,达到了$1.37billion。[11]





市场分布图

    如上图所示,这是07年Frost&Sullivan报告中的CDN市场分布图。截止到08年,Akamai拥有40000多台服务器,部署在超过67个国家,其分发的网络流量占全球网络流量的15-20%。[12]

1998,出现第一个CDN。几家公司一事到应该建设CDN在不增加硬件成本的前提下增加可靠性和可扩展性。

1999:出现了利用提供高速、可靠web内容分发服务的几家专业盈利公司(例如Akamai和Mirror Image)。

2000:在美国,CDN成为了一个巨大市场,达到了$905million,预计在2007会达到$12billion。

2001:由于发生因大量用户同时访问网站导致的网站崩溃情况,其实就是911事件导致的访问问题,很多企业开始关注建设CDN。

2002:一些大型ISP开始建设自己的CDN。

2004:超过3000家公司使用CDN,每个月花费将近$20million。

2005:CDN依靠流媒体视频和音频的利润增长达到了40%。

 

 

 

 

 

参考文献:

[1]Y.Hao,L.Xuening, M.Geyong and L.Chuang. “Content Delivery Networks: A Bridge betweenEmerging Applications and Future IP Networks”, IEEE Network, July/August 2010.

[2] http://www.internetworldstats.com/top20.htm

[3]Licklider, J.C.R.,and Clark, W. “On-Line-Man-Computer Communication”, Aug, 1962.

[4]M.S.Blumenthaland D.D.Clark, “Rethinking the Design of the Internet: The End-to-End argumentsvs. the Brave New World”, ACM Trans. Internet Tech, vol.1, no.1, Aug.2001,pp.70-109.

[5]A. Feldmann, “InternetClean-Slate Design: What and why?” ACM SIGCOMM Comp. Commun. Rev., vol.37,no.3, July 2007, pp.59-64.

[6]Vakali, A. and Pallis, G. “Content delivery networks: Status andtrends”. IEEE Internet Computing 7,6(Nov./Dec.2003), 68-74.

[7]G. Pallis, and A. Vakali, “Insight and Perspectives for ContentDelivery Networks”, Communications of the ACM, Vol.49, No.1, ACM Press, NY,USA, pp.101-106. Jan, 2006.

[8]M. Hofmann, and L.R.Beaumont, Content Networking: Architecture,Protocols and Practice, Morgan Kaufmann Publishers, San Fransico, CA, USA,pp.129-134, 2005.

[9]C. Huang et al. “Understanding Hybrid CDDNP2P: Why Limelight Needsits Own Red Swoosh”, Proc. NOSSDAV, May 2008, pp.75-80.

[10] M. Hofmann, and L. R. Beaumont, Content Networking: Architecture,Protocols, and Practice, Morgan Kaufmann Publishers, San Francisco, CA, USA,pp. 129-134, 2005.

[11] http://www.accustreamresearch.com/cdn.html

[12] http://www.akamai.cn/enzs/html/perspectives/index.html


推荐阅读
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文介绍了如何利用X_CORBA实现远程对象调用,并通过多个示例程序展示了其功能与应用,包括基础的Hello World示例、文件传输工具以及一个完整的聊天系统。 ... [详细]
  • 本文介绍了一个使用Spring框架和Quartz调度器实现每周定时调用Web服务获取数据的小项目。通过详细配置Spring XML文件,展示了如何设置定时任务以及解决可能遇到的自动注入问题。 ... [详细]
  • 本文详细介绍了 Java 中 org.w3c.dom.Node 类的 isEqualNode() 方法的功能、参数及返回值,并通过多个实际代码示例来展示其具体应用。此方法用于检测两个节点是否相等,而不仅仅是判断它们是否为同一个对象。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 在尝试使用 Android 发送 SOAP 请求时遇到错误,服务器返回 '无法处理请求' 的信息,并指出某个值不能为 null。本文探讨了可能的原因及解决方案。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
  • 原文地址:https:blog.csdn.netqq_35361471articledetails84715491原文地址:https:blog.cs ... [详细]
  • 深入探讨:Actor模型如何解决并发与分布式计算难题
    在现代软件开发中,高并发和分布式系统的设计面临着诸多挑战。本文基于Akka最新文档,详细探讨了Actor模型如何有效地解决这些挑战,并提供了对并发和分布式计算的新视角。 ... [详细]
author-avatar
yishengyishi2004929_621_834
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有